EL(Expression Language): 表达式语言
在JSP2.0之后,EL正式纳入标准,只要是支持Servlet2.4/JSP2.0的容器,可以直接在JSP页面中使用EL
EL语法简单,使用方便,在很多地方可代替JSP标签
- 输出page、request、session、application范围的数据(无注明不打印)
通过pageContext对象可以访问到 application、session、request 等对象
- EL是一个完全独立的拥有操作符、语法和保留字的编程语言
EL没有变量声明,标志为${ } - EL隐含对象有11个,与JSP的9个隐含对象区分开
– 与范围有关的
applicationScope: sessionScope: requestScope: pageScope:
– 与输入有关的
param:(请求参数对象) paramValues:(所有请求参数对象)
- 其他隐含对象
cookie: header: headerValues: initParam: pageContext
EL表达式不能调用方法
EL变量
EL存取变量数据的方法很简单,如${user}
–意思是取出某一范围中名称为user的变量
必须设置范围
- 默认的范围查找顺序(自动搜索顺序)
– Page --> Request --> Session --> Application - 也可以指定范围
变量命名不得使用EL保留字
运算符
属性访问运算符.
– ${a.b} //a对象的b属性
集合访问运算符[]
– ${ a[“b”]} //集合a的 关键字为b所指向的元素
– ${sessionScope.user.sex} 等价于 $ {sessionScope.user[“sex”] }
两者也可混合使用
当要存取的属性名称中包含一些特殊字符,象”.”或”-”等并非字母或数字的符号,一定要用[],如
– $ {user.My-Name}应写为 $ {user[“My-Name”]}
如想动态的取值时,也要使用[],如
– ${user[data]},data相当于一个变量
算数运算符
关系运算符
逻辑运算符
其他运算符
- empty: 判断值是否为null或空的
${ empty param.name} - 条件运算符: 三元运算符,A? B:C
也就是当A为true时,执行B,否则执行C
${A? B:C} - 括号运算符: 用来改变执行优先权
${A *(B+C)}
自定义EL函数
- 编写方法所在源文件 .java文件 —— 该文件包含EL函数实现
方法声明为public、static
- 编写标签库描述符 .tld文件 —— 定义EL函数名
• < taglib>< /taglib>根元素,并添加< tlib-version>1.0< /tlib-version>
• < function>< /function>必须成对出现
• < name>< /name>用于指定EL语言函数名称
• < function-class></ function-class>用于指定Java方法所在的类名
• < function-signature>< /function-signature>用于指定静态方法及其参数和返回类型
• tld文件通常放在/WEB-INF子目录下 - 修改部署描述符 web.xml文件 —— 定义标签库描述符地址
•< jsp-config>中加入< taglib>< /taglib>标签
•< taglib-uri></ taglib-uri>用于描述JSP文件中使用的标签库描述符的URI地址
•< taglib-location>< /taglib-location>用于描述标签库描述符的实际物理位置
- 编写JSP文件 .JSP文件 —— 使用EL函数
• 使用taglib指令访问tld文件,并添加一个代表标签库的前缀名
<%@ taglib uri="/Functions" prefix=“el” %> uri和< taglib-uri>中相同
• 使用tld前缀和函数名创建EL的表达式,使用正确数据类型参数
${el:upper(param.userName)}