EL表达式

来源:互联网 发布:战舰世界阿肯色数据 编辑:程序博客网 时间:2024/05/21 19:42

EL表达式是用“${}”括起来的脚本,用来更方便的读取对象。
EL表达式写在JSP的HTML代码中,而不能写在“<%”与“%>”引起来的JSP脚本中。

一、EL表达式

    1、EL表达式提供了获取对象以及属性的简单方法。
        某些情况下EL表达式完全可以替代JSP脚本或者JSP行为。
        <jsp:useBean id=”person” class=”Person”></jsp:useBean>
            <!--使用useBean行为将Person对象放置到request中-->
        <body>
        欢迎您,${person}。
        <!--相当于request.getAttribute(“person”)或session.getAttribut(“person”)-->
        您的年龄为${person.age},<!--相当于person.getAge()-->
            <!--也相当于<jsp:getProperty name=”person” property=”age”/>-->
        您的性别为${person.sex}。<!--相当于person.getSex()-->
            <!--也相当于<jsp:getProperty name=”person” property=”sex”/>-->
        </body>

    2、如果对象的属性为另一个Java Bean,EL表达式也可以输出该Java Bean的属性。
        您所在的国家是:${person.city.province.country}
            <!--相当于person.getCity().getProvince().getCountry()-->
        <%--也相当于<jsp:getProperty name=”person” property=”city.province.country”/>-->

    3、提示
        旧版本的Servlet规范不支持EL表达式。例如Tomcat4.x以及以前的版本都不支持EL表达式。

二、隐藏对象

    1、EL表达式不仅可以读取request、session中的属性,还可以读取其他JSP隐藏对象的属性
        ${param.foo}<!--读取地址栏参数,相当于request.getParameter(“foo”)-->
        ${initParam.foo}<!--读取初始化参数,相当于config.getInitParameter(“foo”)-->
        ${header.host}<!--读取head参数,相当于request.getHeader(“host”)-->

    2、param、initParam、header均返回Map类型对象。对于放置在Map里的对象,还可以用数组的形式获取到。
        ${param[“foo”]}<!--相当于${param.foo}-->
        ${initParam[“foo”]}<!--相当于${initParam.foo}-->
        ${header[“host”]}<!--相当于${header.host}-->

    3、EL表达式中的隐藏对象
        A、请求参数
            a、 param
            b、 paramValues
        B、头信息
            a、 header
            b、 headerValues
        C、cookie
            a、cookie
        D、初始化参数
            a、 initParam
        E、作用域
            a、 pageScope
            b、 requestScope
            c、 sessionScope
            d、 applicationScope
            e、 pageContext

三、EL表达式运算

    1、简单的运算
        加(+)、减(-)、乘(*)、除(/或div)、取余(%或mod)、三目运算符(exp?val1:val2)等。

    2、简单的比较运算
        大于(>或gt)、小于(<或lt)、等于(==或eq)、不等于(!=或ne)、大于等于(>=或ge)、小于等于(<=或le)

    3、多个比较运算
        &&或and、||或or、!或not

    4、字符比较
        如果为大于等于操作EL表达式会调用int compare(char ss)方法完成比较,
        等于操作时会调用equals()方法来完成比较。

    5、对于Map或者数组类,还一是用[]取值,或者是用empty判断是否为空。