el表达式功能详解
EL全名为Expression Language。EL主要作用有:
获取数据##
EL表达式主要用于替换jsp页面中的脚本表达式,以从各种类型的web域中检索java对象、获取数据。(某个web域中的对象,访问javabean的属性、访问list集合、访问map集合、访问数组)
在jsp页面里有这样的代码:
<%
String data = "abcd";
request.setAttribute("data",data);
%>
${data}
里面的el表达式 ${data}
最终会被翻译成pageContext.findAttribute("data");
,在找的过程中先从page
域,然后是request
域,再是session
域,终是application
域,找不到返回null
,也不会对页面有影响,找到了就返回数据。
执行运算##
利用EL表达式可以在jsp页面中执行一些基本的关系运算、逻辑运算和算术运算。
执行运算.png图片里标红的部分我写了两个简单的例子,代码如下:
<%
//request.setAttribute("list",null);
request.setAttribute("list",new ArrayList());
%>
${empty(list)}
下面这个表达式有个不方便的地方就是不能用+连接字符串,只能连接数字。注意: ${user != null ?欢迎您:+ user.username : ''}
是错误的。二元运算符用的比较多的还有数据回显。
//用户名不为空,返回user.username,否则返回 ''
${user != null ? user.username : ''}
获取web开发常用对象##
EL表达式定义了11个隐式对象,利用这些隐式对象,web开发人员可以很轻松获得对web常用对象的引用,从而获得这些对象中的数据。
pageContxet:对应于JSP页面中的pageContext对象(注意:去的是pageContext对象)
pageScope:代表page域中用于保存属性的Map对象
requestScope:代表request域中用于保存属性的Map对象
sessionScope:代表session域中用于保存属性的Map对象
applicationScope:代表application域中用于保存属性的Map对象
param:表示一个保存了所有请求参数的Map对象
paramValues:表示一个保存了所有请求参数的Map对象,它对于某个请求参数,返回的是一个String[]
header:表示一个保存了所有请求头字段的Map对象
headerValues:同上,返回String[]数组。注意:如果头里面有“-”,例如Accept-Encoding,则要headerValues["Accept-Encoding"],也就是用el表达式调用时不能像map.Accept-Encoding
,而要map["Accept-Encoding"]
cookie:表示一个保存了所有cookie的Map对象
initParam:表示一个保存了所有web应用初始化参数的map对象
调用java方法##
EL表达式允许用户开发自定义EL函数,能在jsp页面中通过EL表达式调用java类的方法。
- 示例:${prefix: method(params)}
- 在EL表达式中调用的只能是java类的静态方法
- 这个方法需要在TLD文件中描述成EL函数,才可以被EL表达式调用
- EL自定义函数用于扩展EL表达式的功能,可以让EL表达式完成普通java程序代码所能完成的功能