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、其他隐式对象