el 表达示。。。。。
EL 简介
EL 全名为Expression Language,它原本是JSTL 1.0为方便存取数据所自定义的语言。
EL 是从 JavaScript 脚本语言得到启发的一种表达式语言,它借鉴了 JavaScript 多类型转换无关性的特点。在使用 EL 从 scope 中得到参数时可以自动转换类型,因此对于类型的限制更加宽松。 Web 服务器对于 request 请求参数通常会以 String 类型来发送,在得到时使用的 Java 语言脚本就应该是 request.getParameter(“XXX”) ,这样的话,对于实际应用还必须进行强制类型转换。而 EL 就将用户从这种类型转换的繁琐工作脱离出来,允许用户直接使用 EL 表达式取得的值,而不用关心它是什么类型。
到了JSP 2.0 之后,EL 已经正式纳入成为标准规范之一。因此,只要是支持Servlet 2.4 / JSP2.0 的Container,就都可以在JSP 网页中直接使用 EL 了。
除了JSP 2.0 建议使用EL 之外,JavaServer Faces(JSF)将EL 纳入规范,由此可知,EL 如今已经是一项成熟、标准的技术。
注意:
假若您所用的Container 只支持Servlet 2.3/JSP 1.2,如:Tomcat 4.1.29,您就不能在JSP 网页中直接使用EL,必须安装支持Servlet 2.4 / JSP 2.0 的Container。
<2>EL 语法
EL 语法很简单,它最大的特点就是使用上很方便。接下来介绍EL 主要的语法结构:
语法:${表达式或变量}
示例一:
<html> <body> ${sampleValue + 1} <br> </body> </html> |
示例二:从Session的范围中,取得用户的性别
依照之前JSP Scriptlet的写法如下: User user = (User)session.getAttribute("user"); String sex = user.getSex( );
使用EL 写法如下: ${sessionScope.user.sex} |
两者相比较之下,可以发现EL 的语法比传统JSP Scriptlet 更为方便、简洁。
<3>“.”与“[ ]” 运算符
l EL 提供 . 和 [ ] 两种运算符来存取数据。下列两者所代表的意思是一样的:
${sessionScope.user.sex} 等于 ${sessionScope.user["sex"]} |
l . 和 [ ] 也可以同时混合使用,如下:
${sessionScope.shoppingCart[0].price}
回传结果为shoppingCart中第一项物品的价格。 |
l 两者的差异:
(1) 当要存取的属性名称中包含一些特殊字符,如 . 或 – 等并非字母或数字的符号,就一定要使用 [ ],例如:
${user.My-Name } |
(2) 我们来考虑下列情况
${sessionScope.user[data]} |
此时data 是一个变量,假若data的值为"sex"时,那上述的例子等于${sessionScope.user.sex};
假若data 的值为"name"时,它就等于${sessionScope.user.name}。因此,如果要动态取值时,就可以用上述的方法来做,但 “.” 无法做到动态取值。
<4>EL 隐含对象
EL本身也有自己的隐含对象。EL 隐含对象总共有11 个:
隐含对象 | 类 型 | 说 明 |
pageContext | javax.servlet.ServletContext | 表示此JSP 的pageContext |
pageScope | java.util.Map | 取得page范围的属性名称所对应的值 |
requestScope | java.util.Map | 取得request 范围的属性名称所对应的值 |
sessionScope | java.util.Map | 取得session 范围的属性名称所对应的值 |
applicationScope | java.util.Map | 取得application 范围的属性名称所对应的值 |
param | java.util.Map | 如同 request.getParameter(String name)。回传String 类型的值 |
paramValues | java.util.Map | 如同 request.getParameterValues(String name)。回传String []类型的值 |
header | java.util.Map | 如同 request.getHeader(String name)。回传String 类型的值 |
headerValues | java.util.Map | 如同 request.getHeaders(String name)。回传String []类型的值 |
cookie | java.util.Map | 如同request.getCookies( ) |
initParam | <span style="c |