个人技术分享

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) 移除一个域数据