EL的隐含对象访问环境信息的隐含对象

Posted java小斌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EL的隐含对象访问环境信息的隐含对象相关的知识,希望对你有一定的参考价值。

EL中提供了6个访问环境信息的隐含对象。分别是:

(1)param对象

param对象用于获取请求参数的值,应用在参数值只有一个的情况。在应用param对象时,返回的结果为字符串。

例:在JSP页面中,放置一个名称为user的文本框。首先新建一个index.jsp页面,关键代码如下;

 1 <html>
 2     <head>
 3         <title>通过param对象访问文本框中的name值</title>
 4     </head>
 5     <body>
 6         <form action="index.jsp" method="post">
 7             <input  type="text" name="name"/>
 8             <input type="submit" value="提交"/>
 9         </form>
10         获取到的值是:${param.name}<br>
11     </body>
12 </html>

注意:如果name文本框中可以输入中文,那么在应用EL输出其内容前,还需要应用“request.setCharacterEcoding("GB18030");”语句设置请求的编码为支持中文的编码,否则将产生乱码。


(2)paramValues对象

当一个请求参数名对应多个值时,则需要使用paramValues对象获取请求参数的值。在应用paramValues对象时,返回的结果是数组。

例:在JSP页面中,放置一个名称为affect的复选框组。关键代码如下:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>通过paramValues对象获取组件值</title>
 8 </head>
 9 <body>
10     <form action="index_paramValues.jsp" method="post">
11         <input type="checkbox" id="affect" name="affect" value="登山 ">登山
12         <input type="checkbox" id="affect" name="affect" value="游泳 ">游泳
13         <input type="checkbox" id="affect" name="affect" value="慢走 ">慢走
14         <input type="checkbox" id="affect" name="affect" value="晨跑 ">晨跑
15         <br><input type="submit" value="提交">
16         
17     </form>
18     <br>
19     <% request.setCharacterEncoding("UTF-8"); %>
20     <p>
21         <label>爱好为:</label>
22         ${ paramValues.affect[0] }
23         ${ paramValues.affect[1] }
24         ${ paramValues.affect[2] }
25         ${ paramValues.affect[3] }
26     </p>
27 </body>
28 </html>

运行结果是:

注意:在应用param和paramValues对象时,如果指定的参数不存在,则返回空的字符串,而不是返回null。

(3)header和headerValues对象

 header用于获取HTTP请求的一个具体的header的值,但在有些情况下,可能存在同一个header拥有多个不同的值的情况,这时候就必须用到headerValues对象。

例:要获取HTTP请求的header的connection(是否需要持久连接)属性,可以应用如下代码:

 1 ${ header.connection }或 ${ header["connection"] } 

以上代码输出如下结果:

如果要获取HTTP请求的header的user-agent属性,则必须应用以下EL表达式:

  ${ header["user-agent"] } 

输出结果如下:

(4)initParam对象

 initParam对象用于获取Web应用初始化参数的值

例:在Web应用的web.xml文件中设置一个初始化参数author,用于指定作者。

    具体代码如下:

index_initParam.jsp中的代码

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>initParam对象</title>
 8 </head>
 9 <body>
10     <label>现居住地:</label>
11     ${ initParam.address }
12 </body>
13 </html>

在web.xml文件中的</web-app>标记上方添加如下代码:

1 <context-param>
2       <param-name>address</param-name>
3       <param-value>中国江苏省常州市</param-value>
4   </context-param>

代码运行结果如下:

(5)cookie对象

EL中并没有提供向cookie中保存值的方法,但是可以通过cookie隐含对象实现。如果在cookie中已经设置了一个名称为username的值,那么可以使用${cookie.username}来获取该cookie对象。但是如果要获取cookie中的值,需要使用cookie对象的value属性。

例:使用response对象设置一个请求有效的cookie对象,然后再使用EL获取该cookie对象的值。

代码如下:

1  <%
2         Cookie cookie = new Cookie("user","mrbccd");
3         response.addCookie(cookie);
4     %>
5     ${ cookie.user.value }

运行上面代码结果显示:mrbccd

 

以上是关于EL的隐含对象访问环境信息的隐含对象的主要内容,如果未能解决你的问题,请参考以下文章

EL表达式语言总结

JSP EL隐含对象

JSP回顾

EL 隐含对象

EL有11个隐含对象

EL表达式的11隐含对象