header和headerValues对象
当客户端访问Web服务器中的JSP页面时,会通过请求消息头传递一些信息,例如请求消息头中的“User-Agent”字段可以告诉服务器浏览器的类型。为了获取请求消息头中的信息,EL表达式提供了两个隐式对象header和headerValues,接下来,针对这两个对象进行详细讲解,具体如下:
1、header对象
header对象用于获取请求头字段的某个值,具体示例如下:
${header["user-agent"]}
2、headerValues对象
如果一个请求头字段有多个值,可以使用headerValues对象,该对象用于返回请求头字符的所有值组成的数组,如果要获取某个请求头字段的第一个值,可以使用如下代码:
${headerValues["Accept-Language"][0]}
为了让初学者更好的学习这两个隐式对象,接下来通过一个案例来演示header和headerValues隐式对象如何获取请求参数的值,如例1所示。
例1 header.jsp
1 <%@ page language="java" contentType="text/html; charset=utf-8"
2 pageEncoding="utf-8" import="java.util.*"%>
3 <html>
4 <head></head>
5 <body>
6 header.host:${header.host}
7 headerValues["Accept-Language"]:${headerValues["Accept-Language"][0]}
8 headerValues["Accept-Language"]:${headerValues["Accept-Language"][1]}
9 </body>
10 </html>
由于请求消息头中Accept-Language头字段的格式为zh-cn,zh;q=0.8,en-us;q=0.5,en;q=
0.3,因此,使用headerValues对象只能获取到一个值zh-cn,假设将Accept-Language头字段赋予多个值,具体代码如下:
GET /chapter07/header.jsp HTTP/1.1
Host: localhost:8080
Accept-Language: zh-cn
Accept-Language: en-us
此时,使用headerValues对象便可以获取Accept-Language头字段的多个值,获取到的结果如下:
header.host:localhost:8080
headerValues["Accept-Language"]:zh-cn
headerValues["Accept-Language"]:en-us
需要注意的是,如果一个请求头字段有多个值,那么在使用header获取请求参数时,则返回请求头字段的第一个值。