Web - Request请求对象

1.HttpServletRequest对象.

HttpServletRequest接口 继承自 ServletRequest接口, 专门用来封装HTTP请求消息。
http请求消息: 请求行 , 请求消息头 , 请求消息体 三部分.

2.获取请求行:

请求行: 请求方法,资源路径,请求参数(get)
Web - Request请求对象

  • getMethod(): 获取http请求消息中的请求方式(get,post)
  • getRequestURL(): 获取请求行中的资源名称部分.
  • getContextPath(): 获取请求url中web项目的路径.(可以动态获取项目路径)
  • getRemoteAddr(): 获取请求客户端的IP地址.
  • getQueryString(): 获取资源路径请求参数.(只针对get请求)

3.获取请求头:

请求头: 指导性信息 , Key:Value(键值对数据)

  • getHeader(“请求头名字”): 通过请求头名字,获取请求头值.
     

常用的请求头:
           use-agent: 客户端浏览器信息.
           referer: 跳转来源.
Web - Request请求对象

4.获取请求体.(重点)

请求体: get(没有请求体). post( 请求参数 )

  • getParameter(“参数名”): 获取单值的参数.
  • String[] getParameterValues(“参数名”): 获取多值的参数.
  • Map<String,String[]> getParameterMap(): 获取所有参数名和参数值.

5.获取请求参数中文乱码问题.

get方式: 浏览器使用u8编码 , 服务器使用u8解码( tomcat8之后)
              tomcat8之前: 需要更改service.xml
post方式:浏览器使用u8编码 , 服务器使用ios-8859-1解码.

  • request.setCharcterEncoding(“utf-8”); 解决中文乱码.

6.BeanUtils工具类

作用: 简化JavaBean封装数据的操作。
它可以将一个字符串数据封装到JavaBean中,也可以封装一个表单提交的所有数据.

  • BeanUtils.populate(bean , map): 将map数据封装到指定的javabean中.

7.请求转发.

请求转发: Servlet中,如果当前Web资源不想处理请求时,可以通过forward()方法将当前请求传递给其它的Web资源进行处理。

  • requestDispatcher对象:

    • getRequestDispatcher(String path) 参数: 项目根路径.
    • forward(request,response): 请求转发.
       

    Web - Request请求对象

8.request属性操作.

  • setAttribute(name,value): 设置属性.
  • getAttribute(name) : 获取属性.
  • removeAttribute(name) : 删除属性.
     

注: 属性操作 , 不适用于重定向.

9.请求转发和重定向的区别?

	请求次数:
        请求转发:1次请求
        重定向:2次 一次手动 一次自动

    地址栏地址:
        请求转发:不变
        重定向: 自动跳转要求跳转的地址

    路径写法:
        请求转发:   request.getDispatcher("路径") /当前项目
        重定向:  response.sendRedirect("路径")    随便写

    属性操作:
        请求转发: 可以使用
        重定向:  调了也没用

请求转发案例:
AServlet.java

@WebServlet("/dage")
public class DaGeServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html; charset=utf-8");
        System.out.println("你曰:大哥,借我"+request.getParameter("money")+"块钱...");
        System.out.println("我曰:稍等片刻...");

        request.setAttribute("footbar","我只做了一部分");
        request.getRequestDispatcher(request.getContextPath()+"/xjj").forward(request,response);

    }
}

xjjServlet.java

@WebServlet("/xjj")
public class XJJServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html; charset=utf-8");
        System.out.println("大哥哥曰:小姐姐 , 借我"+request.getParameter("money")+"块钱...");
		// 获取
        Object footbar = request.getAttribute("footbar");
        System.out.println(footbar);

        response.getWriter().print("给你钱 , 记得别还了!");
    }
}