1. 请求对象

获取资源,在BS 架构中就是客户端浏览器向服务器端发出询问

2. 获取路径

  • getContextPath() 获取虚拟目录名称
  • getServletPath() 获取Servlet映射路径
  • getRemoteAddr() 获取访问者ip
  • getQueryString() 获取请求的消息数据
  • getRequestURI() 获取统一资源标识符
  • getRequestURL() 获取统一资源定位符

3. 获取请求头

  • getHeader(string name) 根据请求头名称获取值
  • getHeaders(string name) 根据请求头名称获取多个值 返回枚举
  • getHeaderNames() 获取所有请求头名称 返回枚举

4. 获取请求参数信息

  • getParameter(string name) 根据名称获取数据
  • getParameterValues(String name) 根据名称获取所有数据
  • getParameterNames() 获取所有名称
  • getParameterMap() 获取所有参数的键值对

5. 获取请求参数并封装为对象

  • 手动封装对象 new一个
  • 反射封装对象

    • pd = new PropertyDescriptor(name,类对象.class) 根据name获取该对象的成员变量方法
    • pd.getWriteMethod().invoke(类对象,传递的参数)
  • 工具类封装对象 Beanutils

    • Beanutils.popilate(类对象,传递的参数);

6. 通过流对象获取请求信息

  • 只支持post请求
  • getReader() 获取字符输入流
  • getInputStream() 获取字节输入流

7. 中文乱码问题

  • GET 方式 在Tomcat8已经解决

  • POST 通过 setChararerEnocding(“UTF-8”)解决

      1. request.setCharacterEncoding("UTF-8");

8. 请求域

又称request域 可以在一次请求范围内进行共享数据,一般用于请求转发的多个资源中共享数据

  • setAttribute(String name , object vlaue) 向请求域对象中存储数据
  • getAttribute(string name) 根据名称获取请求域的数据
  • removeAttribute(String name) 根据名称删除请求域的数据

8.1. 请求转发

客服端的请求到达后,发现需要其他Servlet来实现功能,则需要转发数据

  • getRequestDispatcher(String name 虚拟路径) 获取请求调度对象

    • forward(HttpServletRequest request, HttpServletResponse response) 实现转发

8.2. 请求包含

可以合并其他Servlet中的功能一起响应给客户端

  • getRequestDispatcher(String name 虚拟路径) 获取请求调度对象

    • include(HttpServletRequest request, HttpServletResponse response) 实现包含