您的位置:首页 > 其它

EL表达式

2015-09-01 15:28 218 查看



EL(Expression Language)是jsp2.0的一个主要组件,在jsp页面中提供了简化访问数据和静态方法的机制。EL表达式的语法格式为${expression},在使用EL表达式时不需要引入JSTL标签,除非使用迭代标签.

1、存取数据

EL提供”.”和”[]”两种运算符来存取数据。

当要存取的属性名称中包含一些特殊字符,如.、?或全部是数字时,就一定要使用”[]”来存取数据,例如${user.myname}必须要改为${user[“myname”]}。

如果要动态取值时,就可以使用”[]”,而”.”无法做到动态取值。例如

{sessionScope.user[data]} 中data是一个变量。

2、变量

EL表达式中主要的隐式对象:

l pageScope

l requestScope

l sessionScope

l applicationScope

EL表达式默认查找变量的顺序是按照以上顺序从隐式对象中取值,为了提高效率,我们可以直接指定搜索域.如

2.1、获取属性

后台 request.setAttribute("a","hello");

前台 ${requestScope.a}

此外EL表达式可以级联获取对象属性的值

后台: request.setAttribute("user",user);

前台: ${user} 取得user对象

${user.userName} 取得user对象的userName属性的值

${user.group.name} 取得user对象所属组的组名

2.2、访问数组元素

后台:String[] str= newString[]{"a","b",”c“};

request.setAttribute("str",str);

前台: ${str[1]} //通过下标来访问数组元素,下标从0开始

注意:使用EL表达式,只能获得数组、集合或Map中的某一元素,若要遍历集合中的元素,则需结合JSTL。

2.3、访问集合元素

后台: ArrayList list = new ArrayList();

while(i < 10)

{

User user = new User();

user.setId(i);

user.setUserName("user"+i);

list.add(user);

}

request.setAttribute("user",list);

前台:

${user[3].userName} //通过下标来访问数组元素,下标从0开始

2.4、访问Map元素

后台:Map map = new HashMap();

map.put("user","user");

request.setAttribute("map",map);

前台: ${map.user.name}

2.5、运算符

运算符类别

运算符

算术运算符

+ - * (/ div) (% mod)

关系运算符

(== eq) (!= ne) (< lt) (<= le) (>= ge)

逻辑运算符

&&(或and) or(或or) ! (或not)

判空运算符

empty,如${empty name}

举例:

${100%66}

${3<5}

${ssl==’ssl’}

2.6、表达式判空

后台:request.setAttribute("value2","");

request.setAttribute("value3",newArrayList());

request.setAttribute("value4","123456");

request.setAttribute("value5",null);

前台:

${empty value1}

${empty value2}

${empty value3}

${empty value4}

${empty value5}

结果

True

True

true

false

true

2.7、总结

EL存取变量数据的方法很简单,例如${username},意思是取出某一域内名称为username的变量。因为我们并没有指定哪一个范围的username,所以它会依序从Page、Request、Session、Application范围查找。

假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传””,即空的字符串,而不是NULL。

EL隐含对象
类别

隐含对象

描述

jsp页面

pageContext

代表此jsp页面的pageContext对象

作用范围
pageScope

用于读取page范围内的属性

requestScope

用于读取request范围内的属性

sessionScope

用于读取session范围内的属性

applicationnScope

用于读取application范围内的属性

请求参数

param

用于读取请求参数中的参数值,${param[“name”]}

等同于request.getParameter(“name”)

paramValues

用于获取请求参数中的参数值数组

请求头

header

用于获取指定的请求头

如${header.host}

headerValues

用于获取指定请求头的值数组,

等同于request.getHeaders(String name)

Cookie

cookie

用于获取请求中的cookie集

初始化参数

initParam

用于获取web应用程序上下文中的初始化参数,等同于

application.getInitParameter(String name)

注意 <%@ page isELIgnored="true" %>
表示是否禁用EL语言,TRUE表示禁止.FALSE表示不禁止.JSP2.0中默认的启用EL语言。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: