文章目录
1.ServletRequest
ServletRequest由Servlet容器来管理,当客户请求到来时,容器创建一个ServletRequest对象,封装请求数据,同时创建一个ServletResponse对象,封装响应数据。这两个对象将被容器作为service()方法的参数传递给Servlet,Servlet利用ServletRequest对象获取客户端发来的请求数据,利用ServletResponse对象发送响应数据。
2.HttpServletRequest
HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求中的所有信息都封装在这个对象中,开发人员通过这个对象的方法,可以获得客户这些信息;
- 通过Request对象进行的常用操作:
- 获取客户机信息
- 获取请求头信息
- 获取请求参数
- 利用请求域传递对象
- request对象继承体系结构:
ServletRequest – 接口
| 继承
HttpServletRequest – 接口
| 实现
org.apache.catalina.connector.RequestFacade 类(tomcat)
3.Request常用方法
1.获取请求行信息
String getMethod() 获取请求方式的类型
String getRequestURI() 获取请求行中的资源名部分:/项目名/资源名
StringBuffer getRequestURL() 获取客户端发出请求完整URL 如http://localhost:8080/项目名:资源名
注:
uri: 统一资源标识符,用来标识一个资源,资源路径(相当于身份证)
url: 统一资源定位符,是一种具体的URI,可以用来标识一个资源.并且指明了如何定位一个资源(相当于身份证中的地址)
String getProtocol() 获取当前协议的名称和版本
String getRemoteAddr() 获取客户端的IP地址
例子:
//1.String getMethod() 获取请求方式的类型
String method = request.getMethod();//GET
//2.String getRequestURI() 获取请求行中的资源名部分:/项目名/资源名
String requestURI = request.getRequestURI();///demo//RequestDemo1
//3.StringBuffer getRequestURL() 获取客户端发出请求完整URL 如http://localhost:8080/项目名:资源名
StringBuffer requestURL = request.getRequestURL();//http://localhost:8080/demo//RequestDemo1
//4.String getProtocol() 获取当前协议的名称和版本
String protocol = request.getProtocol();//HTTP/1.1
//5.String getRemoteAddr() 获取客户端的IP地址
String remoteAddr = request.getRemoteAddr();//0:0:0:0:0:0:0:1
2.获取请求头信息
String getHeader(String name) 以String 的形式返回指定请求头的值
Enumeration getHeaderNames() 返回此请求包含的所有头名称的枚举
3.获取请求参数
String getParameter(String name) 根据表单的name属性 获取对应的值
String[] getParameterValues(String name) 获取name相同的所有value 如复选框
Map getParameterMap() 参数名作为key,参数值作为value,封装到map中
void setCharacterEncoding(String env) 设置请求体的编码
注意:获取请求参数之后,调用setCharacterEncoding方法无效
4.其他作用
1.获取工程名字
String getContextPath() 获取工程名字
2.获取当前
String getServletPath() 获取获得客户端所请求的脚本文件的文件路径
3.作为域对象
域对象是一个容器,这种容器主要用于servlet与servlet之间的数据传输使用的;request域:代表一次请求的范围,一般用于请求转发的多个资源中共享数据。
void setAttribute(String name, Object o) 设置数据到request域
Object getAttribute(String name) 从request域获取数据
void removeAttribute(String name) 从request域移除数据
4.请求转发
一种在服务器内部的资源跳转方式
RequestDispatcher getRequestDispatcher(String path) 获取请求转发器(request对象方法)
void forward(ServletRequest request, ServletResponse response) 将请求转发到另一个资源(servlet)上(RequestDispatcher对象的方法)
使用步骤
- 通过request对象获取请求转发器对象:RequestDispatcher getRequestDispatcher(String path)
- 使用RequestDispatcher对象来进行转发:forward(ServletRequest request, ServletResponse response)
特点
- 浏览器地址栏路径不发生变化
- 只能转发到当前服务器内部资源中
- 转发是一次请求