Request是代表HTTP请求的对象
在服务器接收到客户端发送的请求之后,调用Servlet的service方法处理请求之前,服务器会创建处代表请求的request对象(用于封装请求信息),再将request对象(和response对象)传递给service方法,调用service方法来处理请求。
1.request集成关系
ServletRequest接口 - 定义了一个Request对象应该具备哪些功能
|---HttpServletRequest 接口 - 继承了ServletRequest接口,并添加了部分和HTTP协议相关的方法
|--- xxxx类 request对象
2.Request的功能
2.1获取客户端发送的完整url地址 getRequestURL(); 2.2获取客户机的IP地址 getRemoteAddr(); 2.3获取请求方式 getMethod(); 2.4获取当前Web应用的虚拟路径 getContextPath(); 2.5获取请求头 getHeader();
3.获取请求参数
getParameter(String name) 根据请求参数的名称返回参数值 String
getParameterValues() 根据请求参数的名称返回对应的所有参数值组成的数组 String[]
getParameterMap() 返回所有的参数组成的map集合
注:
//如果是POST提交,可以解决中文乱码
request.setCharacterEncoding("utf-8");
也可以使用手动编解码解决乱码问题
String[] a = username.getBytes("iso-8859-1");
a = new String(a,"utf-8");
4.请求转发
4.1.request.getRequestDispatcher("所转发到资源的路径").forward(request,response);
转发的特点:
一次请求一次相应
转发前后的request对象是同一个
转发前后的地址栏地址不会发生变换
转发只能是同一个web应用内部的资源跳转,不可一是不同的web应用或者不同的虚拟主机
注:请求转发作用:
和request域对象配合使用,将数据带到目的地
4.2.作为域对象使用
域对象:如果一个对象具有可以被访问的范围,利用该对象上的map集合,可以再整个范围内实现数据的共享。
4.3.域对象的三大特征
(1)生命周期
一次请求开始时创建request对象
一次请求结束时销毁request对象
(2)作用范围
整个请求连
(3)主要功能
和转发配合使用,在整个范围内实现资源的共享