1.作用
代表了客户端发送的 HTTP 请求。这个对象提供了很多方法和属性,用于获取 HTTP 请求中的信息,如请求头、请求参数、请求方法(GET、POST 等)、请求的 URL 等,由Servlet容器封装好传递给service()方法
2.常用方法
常用方法 | 描述 |
---|---|
StringBuffer getRequestURL() | 获取客户端发送请求时的完整URL |
String getRequestURI() | 获取请求行中的资源名称部分(项目名称开始) |
String getQueryString() | 获取请求行中的参数部分 |
String getMethod() | 获取请求方式类型 |
String getContextPath() | 获取webapp名称 |
String getParameter(String name) | 获取指定名称的参数 |
String[] getParameterValues(String name) | 获取指定名称参数的所有值 |
3.解决请求中文乱码问题
(1)原因分析
浏览器端使用UTF-8编码将请求信息转换成字节流,tomcat默认解码方式为ISO-8859-1
(2)解决办法
将tomcat升级到8及以后的版本(tomcat8及以后的版本默认解码方式为UTF-8),这样GET方式请求是不会出现中文乱码问题。再通过设置请求体数据的解码方式解决POST方式请求的中文乱码问题(要在接收请求信息之前设定)
req.setCharacterEncoding("UTF-8");
4.请求转发
请求转发是一种服务器行为,当客户端请求到达后,服务器进行转发,此时会将请求对象进行保护,地址栏中的URL地址不会改变,得到响应后,服务器再将响应发送给客户端,从始至终只有一个请求发出
注:无法完成向服务器外部资源请求转发
req.getRequestDispatcher(URL).forward(req, resp);
5.HttpServletRequest对象作用域
通过HttpServletRequest对象可以在一次请求中传递和共享数据,作用范围:在一次请求中有效(请求转发的过程中有效)
常用方法 | 描述 |
---|---|
void setAttribute(String var1, Object var2) | 添加一个域数据 |
Object getAttribute(String var1) | 获取一个域数据 |
void removeAttribute(String var1) | 移除一个域数据 |