• 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 ,还有 跳转等 /虚拟目录/资源
    不需要加虚拟目录的 :例如有 转发 /资源
       
    
    
    










    坚持
  • 相关阅读:
    SQL将表中某一类型的一列拼接成一行
    javascript中把一个数组的内容全部赋值给另外一个数组
    Socket接口原理及用C#语言实现
    Linq表连接大全(INNER JOIN、LEFT OUTER JOIN、RIGHT OUTER JOIN、FULL OUTER JOIN、CROSS JOIN)
    C#中对DataTable进行全连接后group by,orderby
    循环删除DataTable.Row中的多行问题
    跨库连接报错Server 'myLinkedServer' is not configured for RPC
    执行远程存储过程并插入到临时表中
    无法定位程序输入点_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcj于动态链接库上
    Qt 日期时间
  • 原文地址:https://www.cnblogs.com/gaoSJ/p/12917434.html
Copyright © 2020-2023  润新知