el表达式功能详解

作者: 小小蒜头 | 来源:发表于2017-05-06 21:07 被阅读100次

    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程序代码所能完成的功能

    相关文章

      网友评论

        本文标题:el表达式功能详解

        本文链接:https://www.haomeiwen.com/subject/ibcytxtx.html