问题描述
1 简介
EL的全名为Experience Language,原本是JSTL 1.0为方便存取数据所自定义的语言,后来成为JSP标准的一部分,如今EL已经是一项成熟、标准的技术。
<%=变量名%>是典型的表达式,它用于将变量显示在客户端,<%out.print(变量名)%>和其作用相同。EL具有与表达式相同的输出功能,另外其还具有简单的运算符、访问对象、简单的JavaBean访问、简单的集合访问等功能。
经过对jsp和servlet基础的学习,可以发现jsp页面是处于表示层的,主要用于将内容显示。在实际的开发过程中,因为项目的规模比较大,所以页面的设计会由专门的设计人员去完成,故在jsp中嵌入过多的Java代码不利于项目的开发。
解决方案
2 基本语法
EL的语法很简单,最大的特点就是使用很方便。如下:
User user = (User)seesion.getAttribute(“user”);String sex = user.getSex();out.print(sex); |
---|
上面代码的作用就是从session中得到user对象,然后打印user中的sex属性,如果用EL进行表达就显得很简单:
${sessionScope.user.sex} |
---|
所以EL最基本的语法结构如下:
${Expression} |
---|
EL提供了两种实现对相应数据存取的运算符,即.和[]
${sessionScope.user.sex} |
---|
等价于
String str = “sex”;${sessionScope.user[str]} |
---|
但是在以下情况,这两种运算符不能呼唤
1、当要存取的数据名称中包含一些特殊字符时只能使用[]运算符,例如:
${sessionScope.user[“user-sex”]}//不能写成//${sessionSope.user.user-sex} |
---|
2、当动态取值时只能使用[]运算符
${sessionScope.user[param]} |
---|
假如param是自定义变量,其值可以是user对象的name、age、address等,此时不能写成如下形式:
${sessionScope.user.param} |
---|
总结
EL本身定义了一些用来操作或者比较EL表达式运算符,其可以满足更多jsp应用程序所需的表示逻辑,包括了加减乘除与余数,范例:${11+11}
实习编辑 | 王文星
责 编 | 刘玉江