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

泡一杯红茶,acm集训前,写篇博客记录记录el表达式。
el 全名为expression language。受ecmascript 和xpath 表达式的语言启发。el 的语法比传统jsp scriptlet 更为方便、简洁。
①基本知识
${为起始、以}为结尾的,构造:${expression}。接下来比较下:
jsp scriptlet获取:
1
2
3
<code>user user = (user)session.getattribute(</code><code>"user"</code><code>);</code>
<code>string sex = user.getname( );</code>
el 获取:
<code>${sessionscope.user.sex}</code>
② [] 和 . 运算符
el表达式中,对象有属性。就可以利用 [] 和 . 运算符 来访问该属性,两者功能相似。
例如:下面都是一样的。
<code>${sessionscope.user.name}</code>
或者
<code>${sessionscope.user[</code><code>"name"</code><code>]}</code>
两者功能差异
# 当要存取的属性名称中包含一些特殊字符,如. 或 – 等并非字母或数字的符号,就一定要使用 [ ]。
例如:
<code>${sessionscope.user[</code><code>"my-name"</code><code>] } ${header[</code><code>"accept-language"</code><code>] }</code>
#我们来考虑下列情况:
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
取得request范围的属性名称所对应的值
sessionscope
取得session范围的属性名称所对应的值
applicationscope
取得application范围的属性名称所对应的值
param
如同servletrequest.getparameter(string name)。回传string类型的值
paramvalues
如同servletrequest.getparametervalues(string name)。回传string[]类型的值
header
如同servletrequest.getheader(string name)。回传string类型的值
headervalues
如同servletrequest.getheaders(string name)。回传string[]类型的值
cookie
如同httpservletrequest.getcookies()
initparam
如同servletcontext.getinitparameter(string name)。回传string类型的值
隐式对象cookie包含了当前httpservletrequest的所有cookie 的map。
例如
获取一个名为jsessionid的cookie值:
<code>${cookie.jsessionid.value}</code>
header 储存用户浏览器和服务端用来沟通的数据,当用户要求服务端的网页时,会送出一个记载要求信息的标头文件,例如:用户浏览器的版本、用户计算机所设定的区域等其他相关数据。
获取accept-language语言
<code>${header[</code><code>"accept-language"</code><code>]}。</code>
注意:当要存取的属性名称中包含一些特殊字符,如. 或 – 等并非字母或数字的符号,就一定要使用 [ ]。
就想我们在web-xml 配置 初始化值得时候,我们用initparam隐式对象可以获取。
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<code><?xml version=</code><code>"1.0"</code> <code>encoding=</code><code>"iso-8859-1"</code><code>?></code>
<code>version=</code><code>"2.4"</code><code>>:</code>
<code><context-param></code>
<code><param-name>username</param-name></code>
<code><param-value>jeffli</param-value></code>
<code></context-param>:</code>
<code></web-app></code>
用el表达式获取:
<code>${initparam.username}</code>
等价于
<code>string userid = (string)application.getinitparameter(</code><code>"username"</code><code>);</code>
同上面的理
<code>${param.name}</code>
<code>${paramvalues.name}</code>
等价于
request.getparameter(string name)
request.getparametervalues(string name)
逻辑运算符
结果
&&或and
交集${a && b}或${a and b}
true/false
||或or
并集${a || b}或${a or b}
!或not
非${! a }或${not a}
el学习,这次比较全。以前用着就去看,索性写篇博客记录下。
学这个,好比abc... 慢慢来,多写多用就会了。