ServletRequest:
定义将客户端请求信息提供给某个 servlet 的对象;servlet 容器创建 ServletRequest 对象,并将该对象作为参数传递给该servlet的service方法 ;
通过文档阅读可以看到HttpServletReuqest不是相关请求的顶级接口,它继承自父接口——ServletRequest:
HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求中的所有信息都封装在这个对象中,开发人员通过这个对象的方法,可以获得客户这些信息;
-
- 获取客户机信息
- 获取请求头信息
- 获取请求参数
- 利用请求域传递对象
-
获取请求行信息
-
API介绍
String getMethod() 获取请求方式的类型 String getRequestURI() 获取请求行中的资源名部分:/项目名/资源名 StringBuffer getRequestURL() 获取客户端发出请求完整URL 如http://localhost:8080/项目名:资源名 注: uri: 统一资源标识符,用来标识一个资源,资源路径(相当于身份证) url: 统一资源定位符,是一种具体的URI,可以用来标识一个资源.并且指明了如何定位一个资源(相当于身份证中的地址) String getProtocol() 获取当前协议的名称和版本 String getRemoteAddr() 获取客户端的IP地址
-
获取请求头信息
-
API介绍
-
String getHeader(String name) 以String 的形式返回指定请求头的值 Enumeration getHeaderNames() 返回此请求包含的所有头名称的枚举
-
获取请求参数
-
API介绍
String getParameter(String name) 根据表单的name属性 获取对应的值 String[] getParameterValues(String name) 获取name相同的所有value 如复选框 Map getParameterMap() 参数名作为key,参数值作为value,封装到map中 void setCharacterEncoding(String env) 设置请求体的编码 注意:获取请求参数之后,调用setCharacterEncoding方法无效
-
其他作用
-
获取工程名字
-
API介绍
-
-
String getContextPath() 获取工程名字
-
-
获取当前
- API介绍
-
String getServletPath() 获取获得客户端所请求的脚本文件的文件路径
如果请求路径是:http://localhost:8080/mytest/demo,request.getContextPath()得到的是:/mytest,request.getServletPath()得到的是:/demo;request.getRequestURI()得到的是:/mytest/demo;request.getRequestURL()得到的是:http://localhost:8080/mytest/demo;
-
-
作为域对象
- 域对象是一个容器,这种容器主要用于servlet与servlet之间的数据传输使用的;request域:代表一次请求的范围,一般用于请求转发的多个资源中共享数据
- API介绍
-
void setAttribute(String name, Object o) 设置数据到request域 Object getAttribute(String name) 从request域获取数据 void removeAttribute(String name) 从request域移除数据
-
-
请求转发
- 一种在服务器内部的资源跳转方式
- API介绍
- 一种在服务器内部的资源跳转方式
-
RequestDispatcher getRequestDispatcher(String path) 获取请求转发器(request对象方法) void forward(ServletRequest request, ServletResponse response) 将请求转发到另一个资源(servlet)上(RequestDispatcher对象的方法)
-
-
- 使用步骤
-
1. 通过request对象获取请求转发器对象:RequestDispatcher getRequestDispatcher(String path) 2. 使用RequestDispatcher对象来进行转发:forward(ServletRequest request, ServletResponse response)
-
-
- 特点
-
1. 浏览器地址栏路径不发生变化 2. 只能转发到当前服务器内部资源中 3. 转发是一次请求