EL表达式详解
- 格式:pdf
- 大小:171.62 KB
- 文档页数:17
EL表达式详解
以前我们通过request等⼀些作⽤域对象来获取表单中的数据信息,这样做是很⿇烦的,尤其是通过Servlet作为控制器通过request设置属性
的⽅法将表单中的数据封装成相应的对象传到JSP⽂件中,这样尤其⿇烦。现在我们有了EL表达式获取表单中的数据就变得简单多了。那
么,什么是EL表达式?EL表达式能都能⼲些什么呢?下⾯我们就来认识⼀下简单EL表达式吧!
JSP表达式语⾔(ExpressionLanguage),简称EL,最初定义在JSTL1.0规范中,直到JSP2.0之后,EL表达式才正式成为JSP规范中
的⼀部分。EL为存取变量、表达式运算和读取内置对象等内容提供了新的操作⽅式。
使⽤EL表达式的⽬的是为了使JSP页⾯编写起来更简单。
⼀、 EL表达式概述
EL表达式是为了便于获取数据⽽定义的⼀种语⾔,JSP 2.0之后才成为⼀种标准。下⾯的⽰例是⼀个简单的EL表达式:
[java]
1. <%@ page contentType="text/html;charset=UTF-8"%>
2.
3.
4.
5.
6.
7.
8.
9. ${stuno + 1}
10.
11.
12.
13.
这个⽰例将在JSP页⾯显⽰为“1”。EL表达式必须以“{XXX}”来表⽰,其中“XXX”部分就是具体表达式内容,“{}”将这个表达式内容包含在
其中,作为EL表达式的定义。
这⾥只是展⽰EL表达式的基本⽤法,访问此页⾯的效果如图6.1所⽰。
⼆、EL表达式的基本语法
EL表达式的出现让Web的显⽰层发⽣了⼤的变⾰,EL表达式⽤于获取数据,在JSP 2.0之后成为⼀种标准,是由JSP 标准标签库专家组
和JSP 2.0 专家组开发。
EL表达式的语法格式: ${标识符}
注意:
表达式必须以“${”开始,以“}”结束;
花括号中必须有具体表达式的内容;
在JSP页⾯中使⽤的形式,通知JSP引擎调⽤pageContext.findAttribute()⽅法,以标识符为关键字从各个域对象中获取对象。如果域对象中
不存在标识符所对应的对象,则返回结果为“”(注意,不是null)。
1、EL表达式的语法结构
JSP EL⽤于以下情形
– 静态⽂本
– 标准标签和⾃定义标签(可以作为元素属性的值,也可以在⾃定义或者标准动作元素的内容中使⽤)
– EL不能在脚本元素中使⽤
– 这样写是错误的:
– <%
${“表达式内容”}
– %>
2、[]与.运算符
EL提供(.)和([])两种运算符来存取数据,即使⽤点运算符(.)和⽅括号运算符([])。
– 点运算符和⽅括号运算符可以实现某种程度的互换,如{student.name}等价于{student [“name”]}。
当要存取的属性名称中包含⼀些特殊字符,如.或?等并⾮字母或数字的符号时,就⼀定要使⽤[]。例如{student.name }应当改
为{student[“name”] }。
如果要动态取值,就可以⽤[]来做,⽽.⽆法做到动态取值。例如${sessionScope.student[data]}中data是⼀个变量。
3、变量
EL存取变量数据的⽅法很简单,例如${username}。它的意思是取出某⼀范围中名称为username的变量。
属性范围在EL中的名称如表6.1所⽰。
4、⽂字常量
⼀个EL表达式包含变量、⽂字常量、操作符。⽂字常量主要包括字符串、数字和布尔值、还有NULL,其中
– 字符串是由任何由单引号或双引号引起来的⼀串字符。
– 数字常量包括整型、浮点型,整型表⽰⼗进制、⼗六进制和⼋进制类型的值,浮点型与Java类似,可以包含任何正的或者负的浮点
数。– 布尔型包括true和false。
{true} {10} {10.5f}{“hello”} ${null}
5、 操作符
EL表达式的操作符主要有:
– 算术运算符
– 关系运算符
– 逻辑运算符
– 验证运算符empty
– 条件运算符
(1)算术运算符
算术运算符主要有平时常⽤的“+”、“-”、“*”、“/”、“%” 。
(2)关系运算符
关系运算符主要有“==”、“!=”、“<”、“>”、“<=”、“>=”
(3)逻辑运算符
逻辑运算符主要有“&&”、“||”、“!” 。
(4)验证运算符“empty”与条件运算符“?:”
综合实例:在静态⽂本中使⽤EL语⾔
算数运算符
[java]
1. 这是算数运算符的效果:
2.
3. 10+5=${10+5}
4.
5. 10-5=${10-5}
6.
7. 10*5=${10*5}
8.
9. 10/5=${10/5}
10.
11. 10%5=${10%5}
关系运算符:
[java]
1. 这是关系运算符的效果:
2.
3. 5>6 =${5>6}
4.
5. 5==6=${5==6}
逻辑运算符:
[java]
1. 这是逻辑运算符的效果:
2.
3. true and false =${true && false }
4.
5. true or false =${true || false}
6.
7.
8.
9.
10.
11. 与
12.
13. ${'${'}true and true}
14.
15. ${true and true}
16.
17.
18.
19.
20.
21. 与
22.
23. ${'${'}true && false}
24.
25. ${true && false}
26.
27.
28.
29.
30.
31. 或
32.
33. ${'${'}true or true}
34.
35. ${true or true}
36.
37.
38.
39.
40.
41. 或
42.
43. ${'${'}true || false}
44.
45. ${true || false}
46.
47.
48.
49.
50.
51. ⾮
52.
53. ${'${'}not true}
54.
55. ${not true}
56.
57.
58.
59.
60.
61. ⾮
62.
63. ${'${'}'!false}
64.
65. ${!false} 66.
67.
68.
69.
三、EL表达式的隐式对象
在JSP中已经介绍了9个内置对象,在EL表达式中共有11个隐式对象,下⾯分别来讲述这些隐式对象的⽤法。
1、与范围有关的隐式对象
与作⽤范围有关的EL隐含对象包含有:pageScope、requestScope、sessionScope和applicationScope
– 它们可以读取使⽤JSP内置对象pageContext、request、session以及application的setAttribute()⽅法所设定的对象的数值-----即
getAttribute(String name),
却不能取得其他相关信息。
– 例如,要取得session中储存的⼀个username属性的值,可以利⽤下⾯的⽅法:session.getAttribute("username")
– 在EL中则使⽤下⾯的⽅法:${sessionScope.username}
注意:如果没有设定使⽤EL内置对象的作⽤范围,则按照pageScope、requestScope、sessionScope和applicationScope的先后顺序读取
属性值。
即通知JSP引擎调⽤pageContext.findAttribute()⽅法,以标识符为关键字从各个域对象中获取对象。如果域对象中不存在标识符所对应的对
象,则返回结果为“”(注意,不是null)。
2、与输⼊有关的隐式对象
与输⼊有关的隐含对象有两个,即param和paramValues,它们是EL中⽐较特别的隐含对象。例如,要取得⽤户的请求参数时,可以利⽤
下列⽅法:
– request.getParameter(Stringname)
– request.getParameterValues(Stringname)
在EL中则可以使⽤param和paramValues两者来取得数据:
– ${param.name}
– {paramValues.name}(这时可同时使⽤[]运算符号来读取哪个元素,例如{paramValues.week[0]})
3、其他隐式对象