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的隐含对象访问环境信息的隐含对象的主要内容,如果未能解决你的问题,请参考以下文章