request 对象提供了一系列方法,可以获取请求参数信息、表单数据、HTTP 头信息、cookie 和 HTTP 请求方法等


方法 描述
设置  
void setCharacterEncoding(String name) 设置请求的字符编码格式
void setAttribute(String name, Object value) 在属性列表设置指定的属性
获取  
String getContentType() 得到请求体的MIME类型
ServletInputStream getInputStream() 得到请求体中一行的二进制流
String getLocalName() 获取响应请求的服务器端主机名
String getLocalAddr() 获取响应请求的服务器端地址
int getLocalPort() 获取响应请求的服务器端端口
String getMethod() 获取客户端向服务器端发送请求的方法(GET、POST)
String getServletPath() 获取客户端所请求的脚本文件的文件路径
HttpSession getSession()
HttpSession getSession(boolean create)
获取session,如果create为true,在无session的情况下创建一个
String getPathInfo() 取出请求中处于ServletPath和QueryString之间的额外信息
返回  
String getParameter(String name) 返回name指定参数的参数值
Enumeration getParameterNames() 返回请求中所有参数的集合
String[] getParameterValues(String name) 返回包含参数name的所有值的数组
Object getAttribute(String name) 返回指定属性的属性值,该属性不存在时返回null
Enumeration getAttributeNames() 返回所有可用属性名的枚举
String getAuthType() 返回用来保护servlet的认证方法的名称,未受保护时返回null
String getCharacterEncoding() 返回字符编码方式
int getContentLength() 返回请求体的长度(以字节数),不能确定长度时返回-1
String getContentPath() 返回请求的路径
Cookie[] getCookies() 返回客户端所有的Cookie的数组
Enumeration getHeaderNames() 返回所有HTTP头的名称的集合
Enumeration getHeaders(String name) 返回指定HTTP头的所有值的集合
String getHeader(String name) 返回指定名称的HTTP头的信息
long getDateHeader(String name) 返回指定名称的Data类型的HTTP头的信息
int getIntHeader(String name) 返回指定名称的Int类型的HTTP头的信息
Locale getLocale() 返回当前页的Locale对象,可以在response中设定
Enumeration getLocales() 返回请求中所有的Locale对象的集合
Map getParameterMap() 该方法返回包含请求中所有参数的一个Map对象
String getQueryString() 返回get方法传递的参数字符串,该方法不分解出单独的参数
String getPathTranslated() 返回用getPathInfo()方法取得的路径信息的实际路径
String getProtocol() 返回请求使用的协议。可以是HTTP1.1或者HTTP1.0
BufferedReader getReader() 返回请求的输入流对应的Reader对象
该方法和getInputStream()方法在一个页面中只能调用一个
String getRemoteAddr() 返回发送此请求的客户端IP地址
String getRemoteHost() 返回发送此请求的客户端主机名
String getRemoteUser() 返回经过客户端验证的用户名,未经验证返回null
int getRemotePort() 返回发出请求的客户端主机端口
String getRealPath(String path) 返回一虚拟路径的真实路径
String getRequestedSessionId() 返回请求的session的标识
String RequestURI() 返回发出请求的客户端地址,但是不包括请求的参数字符串
StringBuffer getRequestURI() 返回响应请求的服务器端地址
String getScheme() 返回请求用的计划名,如:http、https及ftp等
String getServerName() 返回响应请求的服务器名称
int getServerPort() 返回服务器接受此请求所用的端口号
Principal getUserPrincipal() 返回包含用户登陆名的一个java.security.Principal对象
删除  
void removeAttribute(String name) 在属性列表中删除指定名称的属性
检查  
boolean isRequestedSessionIdFromCookie() 检查请求的会话ID是否为通过Cookie传入
boolean isRequestedSessionIdFromURL() 检查请求的会话ID是否为通过URL传入
boolean isRequestedSessionIdValid() 检查请求的会话ID是否仍然有效
boolean isSecure() 检查请求是否使用安全链接,如HTTPS等
boolean isUserInRole(String role) 检查已经通过验证的用户是否在是role所指定的角色
其它  
RequestDispatcher getRequestDispatcher(String path) 按给定的路径生成资源转向处理适配器对象

成员:
String BASIC_AUTH = "BASIC"
String CLIENT_CERT_AUTH = "CLIENT_CERT"
String DIGEST_AUTH = "DIGEST"
String FORM_AUTH = "FORM"

request 对象常用方法
方法 说明
String getParameter(String name) 获取请求参数 name 的值
Enumeration getParameterNames()  获取所有参数名称
String[] getParameterValues(String name) 获取请求参数 name 的所有值
Object getAttribute(String name) 获取 name 属性的值
cookie[] getCookies() 获取所有的 cookie 对象
String getHeader(String name) 获取 name 指定的 HTTP 头信息
String getMethod() 获取 HTTP 请求方法/客户提交信息方式
HttpSession getSession() 返回 request 对应的 session 对象,如果没有则创建一个 session 对象
HttpSession getSession(boolean create) 返回 request 对应的 session 对象,如果没有,且 create 值为 true,则创建一个 session 对象
Enumeration getHeaderNames() 返回 HTTP 头信息的名称集合
Enumeration getAttributeNames()  返回所有属性的名称集合
void setAttribute(String key, Object value) 给 key 对象赋 value 值
void removeAttribute(String name) 删除指定的 name 属性

示例

在 index.jsp 页面使用 getHeaderNames() 方法获取 HTTP 头信息,并遍历输出参数名称和对应值。
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@ page import="java.util.*"%>
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. </head>
  8. <body>
  9. <h2>获取HTTP请求头信息</h2>
  10. <table width="100%" border="1" align="center">
  11. <tr bgcolor="#949494">
  12. <th>参数名称</th>
  13. <th>参数值</th>
  14. </tr>
  15. <%
  16. Enumeration headerNames = request.getHeaderNames();
  17. while (headerNames.hasMoreElements()) {
  18. String paramName = (String) headerNames.nextElement();
  19. out.print("<tr><td>" + paramName + "</td>\n");
  20. String paramValue = request.getHeader(paramName);
  21. out.println("<td> " + paramValue + "</td></tr>\n");
  22. }
  23. %>
  24. </table>
  25. </body>
  26. </html>

运行结果如下:

index.jsp运行结果
头信息介绍如下:

参数名称 说明
host 表示服务器的主机名和端口号
connection 判断客户端是否可以持续性的连接 HTTP
cache-control 网页缓存控制,默认值为 no-cache,表明每次访问都从服务器中获取页面
upgrade-insecure-requests Chrome(谷歌浏览器)会在 HTTP 请求中加入Upgrade-Insecure-Requests: 1 ,服务器收到请求后会返回 Content-Security-Policy: upgrade-insecure-requests头来告诉浏览器,可以把本站的所有 http 连接升级为 https 连接。使用其它浏览器没有该参数
user-agent 客户端程序的相关信息,例如:浏览器版本、操作系统类型等
accept 客户端能接收的 MIME 类型
sec-fetch-* 网络请求的元数据描述,也是 Chrome 特有的参数
accept-encoding 指明客户端能够处理的编码类型有哪些
accept-language 浏览器的首选语言
cookie 会话信息,每个会话都有一个对应的会话 ID 或其他信息