EL简述及作用:
表达式语言(ExpressionLanguage,EL)是一种简单易用的语言,并可以简化对JSP内置对象(pageContext、session和request等)和JavaBean组件的访问。

静态模板(Template)实际上就是JSP页面内不需要执行代码只用直接输出的文本内容。
它包括JSP页面内除代码、页面指令、标签行为外的所有文本内容。JSP容器在解译阶段,将把这些静态文本内容直接解译成相应的文本流输出。但是在静态文本中,我们常常需要将一些容易得到的代码运行结果的值显示出来,比如某个用户登录页面时该用户的登录名、登录次数、经验值、昵称等。如果为了取得这些变量的值而在JSP页面中大量使用代码片断,既影响页面设计的一致性和可读性,也使得页面逻辑开发者无法容易的整理维护业务逻辑,界面与业务代码不能很好分离,影响开发效率。所以EL(Expression Language,表达式语言)语法被发展起来,并在JSP页面中得到了广泛应用。
EL取值形式
最常见的EL取值形式是使用"${}"与"#{}"包含相应内容。在包含的内容里,应该是JSP页面上下文中可以直接访问的JAVA变量、对象名。
EL访问变量
如下例JSP片段中,${userbirthdate}与${usersex}分别表示取出JAVA字符串变量userbirthdate与usersex的值。
<div>出生日期:${userbirthdate} 性别:${usersex}</div>
在被JSP容器处理后,结果网页内容如下:
<div>出生日期:1989-1-2 性别:男</div>
EL使用算术及逻辑表达式
EL语法中可以使用算术及逻辑表达式,这在一些需要进行简单判断才能得出结果的场合是很有用的,EL会将表达式的结果计算出来后,再转化成字符串。
假设userget与userpaid分别表示用户的收入和支出,EL表达式将把userget与userpaid相减的结果显示为用户的总收入。逻辑变量isgraduated与isadult分别表示是否已从学校毕业及是否已超过成人年龄,而将该两个逻辑变量的与的结果显示为用户是否可以开启账户的结果:
<div>收入:${userget} 支出:${userpaid} 总收入:${userget - userpaid}</div>
<div>是否毕业:${isgraduated} 是否成年:${isadult} 可否开户:${isgraduated && isadult}</div>
生成的结果网页如下:
<div>收入: 300.00 支出:434.00 总收入:134.00 </div>
<div>是否毕业:true 是否成年:false 可否开户:false</div>
EL访问对象中的属性值
如果想使用某个对象中的属性值,也是非常方便的,使用”.”操作符可以直接获取某个对象的属性值。下例中将会提取myuser对象的age、sex、level等属性(JSP页面运行时必须存在myuser对象)。如:
<div>
用户年龄:${myuser.age}</div>
<div>用户性别:${myuser.sex}</div>
<div>用户级别:${myuser.level}</div>
生成的结果网页如下:
<div>用户年龄:23</div>
<div>用户性别:男</div>
<div>用户级别:14</div>
EL访问对象中的方法
使用”.”操作符可以访问对象的某个方法。
例如:
<jsp:useBean id = "s2" class = "testpack.Student"></jsp:useBean>
<jsp:setProperty name="s" property="sname" value="Jake"></jsp:setProperty>
${s2.getName()}
生成的结果网页为:
Jake
EL访问数组
当我们引用的变量是一个数组、一个散列表、一个列表等集合数据结构时,可以
采用"[]"方式来引用该变量中的成员。成员如果是个对象,我们可以继续使用上述的属性引用语法。可以一直使用这种方法来得到你所需要的值。如下例,我们将使用user数组myarray中
第三个元素的age属性。
<div>用户年龄:${myarray[2].age}</div>
生成的结果网页如下:
<div>用户年龄:19</div>
EL相关学习
EL事实上最初是在开发JSTL(JAVA标准标签库)1.0的过程中为了让页面设计者方便地存取JSTL的标签属性设计的,因为使用方便表达清晰被移入了JSP规范之中。同时它也成了JSP页面访问内存中对象的首选语言。以后随着JAVA开发框架的发展,每种开发框架都或多或少的发展了自己的一套或者使用了某种第三方内存对象访问语言,如Struts 2使用OGNL,Spring使用SpEL,JBoss开发框架使用JBoss EL,它们的基础或者模仿对象都是EL。所以一旦我们熟悉了EL的表达方式,也就容易掌握其他对象存取语言。
小结
EL语言在JSP页面中可以很方便地存取JAVA变量和对象的值,这比起以前的
“<% %>”表达式取值方式要简单直观得多。

