当浏览器请求一个网页时,会附带一个 HTTP 请求的报头,它包含了很多重要信息,例如Cookie、字符接、URL、端口号等,可以通过 response 对象的方法来读取。
下面列出了 HTTP 请求报头包含的部分重要信息:
报头 | 说明 |
---|---|
Accept | 指定浏览器或其他客户端支持的 MIME 类型,例如常见的 "image/png" 和 "image/jpeg",表示可以显示 png 和 jpg 图片。 |
Accept-Charset | 指定浏览器支持的字符集,例如 ISO-8859-1。 |
Accept-Encoding | 指定浏览器支持的编码类型,即文件压缩格式,常用的有 compress、gzip 等。 |
Accept-Language | 指定客户端的首选语言,如果 Servlet 支持多国语言,会优先返回由该语言构成的页面,例如 en、en-us、ru 等。 |
Authorization | 在访问需要认证的页面时,浏览器会把用户输入的用户名和密码保存到 Authorization 字段发送给服务器,让服务器进行校验。 |
Connection | 指定客户端是否支持持久的HTTP连接。持久连接是指浏览器或其他客户端使用同一个连接请求多个资源,不需要多次TCP握手,可以减轻服务器压力,提高响应速度,例如,可以使用持久连接请求页面上的多个图片。Keep-Alive 表示使用持久连接。 |
Content-Length | 只适用于 POST 请求,指出传送的内容的大小(以字节计)。 |
Cookie | 将浏览器的 cookie 信息发送到服务器。 |
Host | 指定请求的页面的RUL和端口。 |
If-Modified-Since | 浏览器请求图片、CSS、JavaScript 等资源时一般会附带该字段,如果该资源的修改日期晚于指定日期,那么将该资源返回,否则返回 304 状态码,表示该资源没有被修改,不需要返回新的。 |
If-Unmodified-Since | If-Unmodified-Since 与 If-Modified-Since 相反,请求资源的修改日期早于指定日期才返回。 |
Referer | 指定来路页面。例如在a页面上点击链接跳转到b页面,那么 Referer 的值就是a页面的url。 |
User-Agent | 指定客户端信息,包括浏览器类型、版本、操作系统、内核等,服务器可以根据不同的客户端返回不同的内容,提高兼容性。 |
request 是JSP内置对象,可以直接使用,无需声明,它是 javax.servlet.http.HttpServletRequest 类的一个实例。
每次请求页面,JSP引擎都会创建一个新的 request 对象来表示当前请求。
request 对象提供了很多方法,用于获取HTTP报头信息,包括用户在 <form> 表单输入的数据、cookie、请求方式(GET/POST)等。
下面列举了 request 对象的部分方法:
序号 | 方法和返回值 | 说明 |
---|---|---|
1 | Cookie[] getCookies() | 获取浏览器发送的 cookie,并以数组的形式返回。 |
3 | Enumeration getHeaderNames() | 返回一个枚举类型,包含了HTTP请求报头的所有字段的名称。 |
4 | Enumeration getParameterNames() | 返回 get/post 请求的所有参数的名称。 |
5 | HttpSession getSession() | 返回当前用户的 session 信息,如果 session 不存在,则创建新的 session。 |
6 | HttpSession getSession(boolean create) | 返回当前用户的 session 信息,如果 session 不存在并且 create 参数为 true,则创建新的 session,为 false 则不创建。 |
7 | Locale getLocale() | 返回客户端的首选区域设置,即HTTP报头中 Accept-Language 字段的值。 |
8 | Object getAttribute(String name) | 返回名称为 name 的属性的值,如果属性不存在,返回 null。 |
9 | ServletInputStream getInputStream() | 以二进制流的方式获取表单数据。如果需要上传图片或文件,必须将 <form> 表单的 enctype 属性设置为 multipart/form-data,然后调用 getInputStream() 方法以二进制流的方式读取文件数据。 |
10 | String getAuthType() | 返回用于保护Servlet的认证模式的名字,例如 BASIC、SSL 或 null(没有保护)。 |
12 | String getContentType() | 返回请求的 MIME 类型,如果没有则返回 null。 |
13 | String getContextPath() | 返回HTTP请求中指示请求上下文的部分。 |
14 | String getHeader(String name) | 返回HTTP报头中指定字段的值。 |
15 | String getMethod() | 返回HTTP请求方式,例如 GET、POST 等。 |