7.3.5 获得HTTP请求头消息集合的内置对象

优质
小牛编辑
134浏览
2023-12-01

EL表达式中的header和headerValues对象都可以获得HTTP请求消息头字段集合,它们的区别是header对象返回的Map对象的value是String类型,而headerValues对象返回的Map对象的value是String[]类型。因此,headerValues对象可以用于获得可能有重名的请求消息头字段集合。而header对象用于获得没有重名的请求消息头字段集合。如要获得HTTP请求消息头的cookie字段,可以使用如下的代码:

${header.cookie}

${headerValues.cookie[0]}

如果使用headerValues对象返回Map对象时,由于value是一个String数组,即使没有重名的请求消息头字段,value的类型仍然为只有一个元素的String数组,因此,必须使用cookie[0]来输出cookie字段的值。

不为header或headerValues指定请求消息头字段,则输出所有的请求消息头字段的值,代码如下:

${header}<hr>

${headerValues}

在运行上面的JSP代码时,输出的结果如图7.5所示。

05

图7.5 使用header和headerValues对象输出所有的HTTP请求消息头字段

从图7.5所示的输出信息可以看出,在输出由headerValues对象返回的请求消息头字段集合时,只输出了字段值的String[]数组地址。而由header对象返回的请求消息头字段集合时,同时输出的字段名和字段值。