1.什么是request
在Servlet API中,定义了一个HttpServletRequest接口,它继承自ServletRequest接口,专门用来封装HTTP请求消息。由于HTTP请求消息分为请求行、请求头和请求体三部分,因此,在HttpServletRequest接口中定义了获取请求行、请求头和请求消息体的相关方法.
2.操作请求行和请求头
- 操作请求行(获得客户机信息)
- getMethod(); 获得请求方式
- getRemoteAddr(); 获得客户机的IP地址
- getContextPath(); 获得项目的部署的路径
- getRequestURI(); 获得URI(不带http,主机,端口)
- getRequestURL(); 获得URL(带http,主机,端口)
- 操作请求头
- getHeader(String name);
- User-Agent: 浏览器信息
- Referer:来自哪个网站(防盗链)
- getHeader(String name);
3.操作请求体
获取请求参数的方法
-
getParameter(name),根据参数名获取一个参数值
-
getParameterValues(name),根据参数名获取多个参数值
-
getParameterMap(),获取所有的请求参数封装到map中
-
使用BeanUtils封装
- 如果请求参数有多个需要封装到JavaBean里面, 建议先获得Map, 再使用BeanUtils封装到JavaBean对象
注意: JavaBean属性需要和Map的key一致 说白了也就是JavaBean属性需要和表单的name一致
-
解决请求参数的中文乱码问题
- Tomcat8之后,使用get方式提交的请求参数不会发生中文乱码
- 解决post请求中的中文参数乱码问题:在获取请求参数之前添加一句代码:request.setCharacterEncoding(“UTF-8”)
4.请求转发
-
请求转发的作用:跳转页面,比如说添加完数据之后跳转到数据的展示页面,删除完数据之后跳转到展示页面
-
请求转发的代码
request.getRequestDispatcher("转发的路径").forward(request,response);
请求转发的特征
- 跳转操作是由服务器执行的,所以客户端地址栏不会发生变化
- 跳转操作不会发起新的请求
- 可以跳转到WEB-INF中的资源,但是不能跳转到其它项目的资源