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页面中执行一些基本的关系运算、逻辑运算和算术运算。

el表达式功能详解_第1张图片
执行运算.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程序代码所能完成的功能

你可能感兴趣的:(el表达式功能详解)