今早,概率课偷了下小懒写的:

泡一杯红茶,ACM集训前,写篇博客记录记录EL表达式。
EL 全名为Expression Language。受ECMAScript 和XPath 表达式的语言启发。EL 的语法比传统JSP Scriptlet 更为方便、简洁。
①基本知识
${为起始、以}为结尾的,构造:${expression}。接下来比较下:
JSP Scriptlet获取:
|
1
2
3 |
User user = (User)session.getAttribute("user");String sex = user.getName( ); |
EL 获取:
|
1 |
${sessionScope.user.sex} |
② [] 和 . 运算符
EL表达式中,对象有属性。就可以利用 [] 和 . 运算符 来访问该属性,两者功能相似。
例如:下面都是一样的。
|
1 |
${sessionScope.user.name} |
或者
|
1 |
${sessionScope.user["name"]} |
两者功能差异
# 当要存取的属性名称中包含一些特殊字符,如. 或 – 等并非字母或数字的符号,就一定要使用 [ ]。
例如:
|
1 |
${sessionScope.user["My-Name"] } ${header["accept-language"] } |
#我们来考虑下列情况:
selection是一个变量,可以代表user各个属性。
${sessionScope.user[selection]}
如果selection为"name",就相当于{sessionScope.user.name}或者 {sessionScope.user["name"]}
因此,如果要动态取值时,. (点)运算符无法做到动态取值, [] 运算符 可以做到。
|
类型 |
实例 |
方法 |
|
JavaBeans |
${user.username}
${user["username"]}
${user[‘username‘]} |
user.getUsername() |
|
数组 |
${sport[1]}
${sport["1"]}
${sport[‘1‘]} |
sport[1] |
|
List |
${phone[2]}
${phone["2"]}
${phone[‘2‘]} |
phone.get(2) |
|
Map |
${phone.home}
${phone["home"]}
${phone[‘home‘]} |
phone.get("home") |
|
隐含对象 |
类型 |
说明 |
|
PageContext |
javax.servlet.jspPageContext |
表示当前JSP的javax.servlet.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 |
如同ServletRequest.getParameter(String name)。回传String类型的值 |
|
paramValues |
java.util.Map |
如同ServletRequest.getParameterValues(String name)。回传String[]类型的值 |
|
header |
java.util.Map |
如同ServletRequest.getHeader(String name)。回传String类型的值 |
|
headerValues |
java.util.Map |
如同ServletRequest.getHeaders(String name)。回传String[]类型的值 |
|
cookie |
java.util.Map |
如同HttpServletRequest.getCookies() |
|
initParam |
java.util.Map |
如同ServletContext.getInitParameter(String name)。回传String类型的值 |
隐式对象cookie包含了当前HttpServletRequest的所有cookie
的Map。
例如
获取一个名为jsessionid的cookie值:
|
1 |
${cookie.jsessionid.value} |
header 储存用户浏览器和服务端用来沟通的数据,当用户要求服务端的网页时,会送出一个记载要求信息的标头文件,例如:用户浏览器的版本、用户计算机所设定的区域等其他相关数据。
例如
获取accept-language语言
|
1 |
${header["accept-language"]}。 |
注意:当要存取的属性名称中包含一些特殊字符,如. 或 – 等并非字母或数字的符号,就一定要使用 [ ]。
就想我们在web-xml 配置 初始化值得时候,我们用initParam隐式对象可以获取。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 |
<?xml version="1.0"
encoding="ISO-8859-1"?><web-app xmlns="http://java.sun.com/xml/ns/j2ee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"version="2.4">:<context-param><param-name>username</param-name><param-value>jeffli</param-value></context-param>:</web-app> |
用EL表达式获取:
|
1 |
${initParam.username} |
等价于
|
1 |
String userid = (String)application.getInitParameter("username"); |
同上面的理
|
1
2 |
${param.name}${paramValues.name} |
等价于
|
逻辑运算符 |
实例 |
结果 |
|
&&或and |
交集${A && B}或${A and B} |
true/false |
|
||或or |
并集${A || B}或${A or B} |
true/false |
|
!或not |
非${! A }或${not A} |
true/false |
EL学习,这次比较全。以前用着就去看,索性写篇博客记录下。

学这个,好比ABC... 慢慢来,多写多用就会了。
品茶看<Servlet&JSP>-④EL表达式,布布扣,bubuko.com
原文:http://www.cnblogs.com/Alandre/p/3597380.html