2阶——Http协议(Request封装请求、Response封装输出) 路径的写法

1.HTTP请求数据的封装:

3.1 请求行
            GET /day09/hello HTTP/1.1     
Accept: text/html,image/*      -- 浏览器接受的数据类型
Accept-Charset: ISO-8859-1     -- 浏览器接受的编码格式
Accept-Encoding: gzip,compress  --浏览器接受的数据压缩格式
Accept-Language: en-us,zh-       --浏览器接受的语言
Host: www.it315.org:80          --(必须的)当前请求访问的目标地址(主机:端口)
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT  --浏览器最后的缓存时间
Referer: http://www.it315.org/index.jsp      -- 当前请求来自于哪里
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)  --浏览器类型
Cookie:name=eric                     -- 浏览器保存的cookie信息
Connection: close/Keep-Alive            -- 浏览器跟服务器连接状态。close: 连接关闭  keep-alive:保存连接。
Date: Tue, 11 Jul 2000 18:23:51 GMT      -- 请求发出的时间

 

 

2.Rquest 对象 封装请求的数据     (注意:request 与response对象均由Tomcat创建传入Service方法中的 再有service传入到各个请求方式的方法中 例如 doget、 dopost等等)

 

常用方法: 例如一个访问的路径是 www.localhost:8080/day14/demo1

                  //获取请求行的方法

      String getMethod() 获取请求的方法   : get

                   String getContextPath  获取虚拟的路径 也就是项目的根目录  /day14

      String getServletPath 获取访问servlet的路径  /demo1

      String getRequestURI 获取URI     day14/demo1

                   String getProtocol 获取协议 和版本

     //获取请求头的方法

        String getHeader(String name)  //通过头获取头的值 

    

     //传值问题

     String par = request.getParameter("传递参数的名字");
     Enumeration<String> parameterNames = request.getParameterNames();
     String[] vs = request.getParameterValues("主要针对复选框传值");
     Map<String, String[]> parameterMap = request.getParameterMap();


设置乱码:
    注意:tomcat8 或者以上版本 已经将Get方式提交的数据乱码已经解决了 不需要在去 new String(str.getbytes("iso-8859-1"), "utf-8)来解决了;
    request.setCharacterEncoding("utf-8");
    response.setContentType("text/html;charset=utf-8");

request的转发:

    request.getRequestDispatcher("/index.jsp").forward(requst,response);


requset的域对象
        request.setAttribute("name","对象");
        request.getAttribute("name");
        request.removeAttribute("name");

 

request获取ServletContext对象(这个对象可以理解为就是Tomcat容器,装了很多的servlet对象的容器)


ServletContext servletContext = request.getServletContext();

  

 

3.Response 对象 封装响应的数据

Location: http://www.it315.org/index.jsp   -表示重定向的地址,该头和302的状态码一起使用。
Server:apache tomcat                 ---表示服务器的类型
Content-Encoding: gzip                 -- 表示服务器发送给浏览器的数据压缩类型
Content-Length: 80                    --表示服务器发送给浏览器的数据长度
Content-Language: zh-cn               --表示服务器支持的语言
Content-Type: text/html; charset=GB2312   --表示服务器发送给浏览器的数据类型及内容编码
Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT  --表示服务器资源的最后修改时间
Refresh: 1;url=http://www.it315.org     --表示定时刷新
Content-Disposition: attachment; filename=aaa.zip --表示告诉浏览器以下载方式打开资源(下载文件时用到)
Transfer-Encoding: chunked
Set-Cookie:SS=Q0=5Lb_nQ; path=/search   --表示服务器发送给浏览器的cookie信息(会话管理用到)
Expires: -1                           --表示通知浏览器不进行缓存
Cache-Control: no-cache  
Connection: close/Keep-Alive           --表示服务器和浏览器的连接状态。close:关闭连接 keep-alive:保存连接

4.4 案例- 请求重定向(Location)(setstutua(“302))
Respose.setStutio(“302);
Response.sethead(”Location”,”www.baidu.com”)

4.5 案例- 定时刷新(refresh)    
Respose.sethead(“refresh”, “1; www.baidu.com”)

4.6 案例-content-Type作用(content-Disposition:attachment;filename=aaa.zip)

 

 

 

 


4.路径的书写问题

相对的写法:
  
 ./ 当前目录
../ 向上退一级


      

         当目标资源与资源处于同一级目录下的情况可以写成  ./xxxx资源  或者 xxxx资源即可

   

 


 

    绝对路径
需要加虚拟目录的列如有:href , 表单的action ,还有 跳转等 /虚拟目录/资源
不需要加虚拟目录的 :例如有 转发 /资源
   

 


 











 

posted @ 2020-05-19 15:55  gaoshengjun  阅读(409)  评论(0编辑  收藏  举报