• Request


    图解原理:

     1. request对象和response对象的原理

      1.request和response对象由服务器创建,我们来使用

      2.request对象来获取请求信息,response对象来设置响应消息

    2. request对象继承体系结构:
      ServletRequest -- 接口
        | 继承
      HttpServletRequest -- 接口
        | 实现
      org.apache.catalina.connector.RequestFacade 类(tomcat)

    3. request功能:
      1. 获取请求消息数据
        1. 获取请求行数据
          * GET /day14/demo1?name=zhangsan HTTP/1.1
          * 方法:
            1. 获取请求方式 :GET
              * String getMethod()
            2. (*)获取虚拟目录:/day14  重点掌握
              * String getContextPath()
            3. 获取Servlet路径: /demo1
              * String getServletPath()
            4. 获取get方式请求参数:name=zhangsan
              * String getQueryString()
            5. (*)获取请求URI:/day14/demo1  重点掌握
              * String getRequestURI(): /day14/demo1
              * StringBuffer getRequestURL() :http://localhost/day14/demo1
              * URL:统一资源定位符 : http://localhost:8080/day14/demo1 中华人民共和国
              * URI:统一资源标识符 : /day14/demo1 共和国
            6. 获取协议及版本:HTTP/1.1
              * String getProtocol()
            7. 获取客户机的IP地址:
              * String getRemoteAddr()

        2. 获取请求头数据
          * 方法:
            * (*)String getHeader(String name):通过请求头的名称获取请求头的值
            * Enumeration<String> getHeaderNames():获取所有的请求头名称
        3. 获取请求体数据:
          * 请求体:只有POST请求方式,才有请求体,在请求体中封装了POST请求的请求参数
          * 步骤:
            1. 获取流对象
              * BufferedReader getReader():获取字符输入流,只能操作字符数据
              * ServletInputStream getInputStream():获取字节输入流,可以操作所有类型数据

            2. 再从流对象中拿数据

      2. 其他功能:(重要)
        1. 获取请求参数通用方式:不论get还是post请求方式都可以使用下列方法来获取请求参数
          1. String getParameter(String name):  根据参数名称获取参数值 username=zs&password=123
          2. String[] getParameterValues(String name):  根据参数名称获取参数值的数组,hobby=xx&hobby=game
          3. Enumeration<String> getParameterNames():  获取所有请求的参数名称
          4. Map<String,String[]> getParameterMap():  获取所有参数的map集合
          * 中文乱码问题:
            * get方式:tomcat 8 已经将get方式乱码问题解决了
            * post方式:会乱码
              * 解决:在获取参数前,设置request的编码request.setCharacterEncoding("utf-8");
        2. 请求转发:一种在服务器内部的资源跳转方式。一次请求访问多个资源
          1. 步骤:
            1. 通过request对象获取请求转发器对象:RequestDispatcher,getRequestDispatcher(String path)
            2. 使用RequestDispatcher对象来进行转发:forward(ServletRequest request,ServletResponse response)
          2. 特点:
            1. 浏览器地址栏路径不发生变化
            2. 只能转发到当前服务器内部资源中。
            3. 转发是一次请求。浏览器控制台可以看到只发送了一次请求
        3. 共享数据:
          * 域对象:一个有作用范围的对象,可以在范围内共享数据
          * request域:代表一次请求的范围,一般用于请求转发的多个资源中共享数据
            * 方法:
              1. void setAttribute(String name,Object obj):  存储数据
              2. Object getAttitude(String name):  通过键获取值
              3. void removeAttribute(String name):  通过键移除键值对
        4. 获取ServletContext:
          * ServletContext getServletContext()

    4. login.html中form表单的action路径的写法
      * 虚拟目录+Servlet的资源路径
    5. BeanUtils工具类,简化数据封装
      * 用于封装JavaBean的
        1. JavaBean:标准的Java类
          1. 要求:
            1. 类必须被public修饰
            2. 必须提供空参的构造器
            3. 成员变量必须使用private修饰
            4. 提供公共setter和getter方法
          2. 功能:封装数据
        2. 概念:
          成员变量:
          属性:setter和getter方法截取后的产物
          例如:getUsername() --> Username--> username
        3. 方法:
          1. setProperty()
          2. getProperty()
          3. populate(Object obj , Map map):将map集合的键值对信息,封装到对应的JavaBean对象中

  • 相关阅读:
    c++ 异常处理 assert | try
    c++ 容器类
    protobuf 向前兼容向后兼容
    命名空间和模块化编程,头文件
    对象3:继承
    动态内存 this指针
    对象2 构造,析构
    对象 1 作用域解析符 ::
    hibernate-criteria查询
    oracle报错:ORA-28000: the account is locked
  • 原文地址:https://www.cnblogs.com/elian91/p/15308554.html
Copyright © 2020-2023  润新知