首页常见问题正文

header和headerValues对象的区别是什么?

更新时间:2023-01-29 来源:黑马程序员 浏览量:

IT培训班

  当客户端访问Web服务器中的JSP页面时,会通过请求消息头传递一些信息,例如请求消息头中的“User-Agent”字段可以告诉服务器浏览器的类型。为了获取请求消息头中的信息,EL表达式提供了两个隐式对象header和headerValues,接下来,针对这两个对象进行详细讲解,具体如下。

  1.header对象

  header对象用于获取请求头字段的某个值,具体示例如下。

   ${header["user- agent"]}

  2.headerValues对象

    ${headerValues["Accept- language"] [0]}

  如果一个请求头字段有多个值,可以使用headerValues对象,该对象用于返回请求头字符的所有值组成的数组,如果要获取某个请求头字段的第一个值,可以使用如下代码。

  为了让大家更好地学习这两个隐式对象,接下来通过一个案例来演示header和headerValues隐式对象如何获取请求参数的值,如例7-8所示。

  例7-8 header.jsp

<%@page language="java" contentType="text/html;charset=utf-8"
   pageEncoding="utf-8" import="java.util.*"%>
<html>
<head></head>
<body>
   header.host:${Headers.host}
   headerValues["Accept-Language"]:${headerValues["Accept-Language"] [0]}
   headerValues["Accept-Language"]:${headerValues["Accept-Language"] [1]}
</body>
 </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获取请求参数时,则返回请求头字段的第一个值。

分享到:
在线咨询 我要报名
和我们在线交谈!