Web - Request请求对象
1.HttpServletRequest对象.
HttpServletRequest接口 继承自 ServletRequest接口, 专门用来封装HTTP请求消息。
http请求消息: 请求行 , 请求消息头 , 请求消息体 三部分.
2.获取请求行:
请求行: 请求方法,资源路径,请求参数(get)
- getMethod(): 获取http请求消息中的请求方式(get,post)
- getRequestURL(): 获取请求行中的资源名称部分.
- getContextPath(): 获取请求url中web项目的路径.(可以动态获取项目路径)
- getRemoteAddr(): 获取请求客户端的IP地址.
- getQueryString(): 获取资源路径请求参数.(只针对get请求)
3.获取请求头:
请求头: 指导性信息 , Key:Value(键值对数据)
- getHeader(“请求头名字”): 通过请求头名字,获取请求头值.
常用的请求头:
use-agent: 客户端浏览器信息.
referer: 跳转来源.
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): 请求转发.
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("给你钱 , 记得别还了!");
}
}