首頁(yè)常見(jiàn)問(wèn)題正文

header和headerValues對(duì)象的區(qū)別是什么?

更新時(shí)間:2023-01-29 來(lái)源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

  當(dāng)客戶端訪問(wèn)Web服務(wù)器中的JSP頁(yè)面時(shí),會(huì)通過(guò)請(qǐng)求消息頭傳遞一些信息,例如請(qǐng)求消息頭中的“User-Agent”字段可以告訴服務(wù)器瀏覽器的類型。為了獲取請(qǐng)求消息頭中的信息,EL表達(dá)式提供了兩個(gè)隱式對(duì)象header和headerValues,接下來(lái),針對(duì)這兩個(gè)對(duì)象進(jìn)行詳細(xì)講解,具體如下。

  1.header對(duì)象

  header對(duì)象用于獲取請(qǐng)求頭字段的某個(gè)值,具體示例如下。

   ${header["user- agent"]}

  2.headerValues對(duì)象

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

  如果一個(gè)請(qǐng)求頭字段有多個(gè)值,可以使用headerValues對(duì)象,該對(duì)象用于返回請(qǐng)求頭字符的所有值組成的數(shù)組,如果要獲取某個(gè)請(qǐng)求頭字段的第一個(gè)值,可以使用如下代碼。

  為了讓大家更好地學(xué)習(xí)這兩個(gè)隱式對(duì)象,接下來(lái)通過(guò)一個(gè)案例來(lái)演示header和headerValues隱式對(duì)象如何獲取請(qǐng)求參數(shù)的值,如例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>


  由于請(qǐng)求消息頭中Accept-Language頭字段的格式為zh-cn,zh;q=0,8,en-us;q=0.5,en;q=0.3,因此,使用headerValues對(duì)象只能獲取到一個(gè)值z(mì)h-cn,假設(shè)將Accept-Language頭字段賦予多個(gè)值,具體代碼如下。

 GET/chapter07/header.jsp HTTP/1.1
 Host:localhost:8080
 Accept-language:zh-cn 
 Accept-language:en-us

  此時(shí),使用headerValues對(duì)象便可以獲取Accept-Language頭字段的多個(gè)值,獲取到的結(jié)果如下。

 header.host:localhost:8080
 headerValues["Accept-Language"]:zh-cn 
 headerValues["Accept-Language"]:en-us

  需要注意的是,如果一個(gè)請(qǐng)求頭字段有多個(gè)值,那么在使用header獲取請(qǐng)求參數(shù)時(shí),則返回請(qǐng)求頭字段的第一個(gè)值。

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!