• EL表达式


    EL表达式就是为替换<%=%>页面输出的

    EL表达式和<%=%>有一丢丢区别,EL表达式只能取WEB域中的值

     九个内置对象:

     WEB域:

    page/pageContext 只是在当前页面有效

    request 在一次请求当中有效

    session  在一次会话当中有效

    application 在整个服务器当中有效

    setAttribute(存值) getAttribute(取值)

    WEB域: response,out,exception,config

    ${key}取值的时候,如果是有很多相同的web域存了相同的key,那么它会从最小的范围开始查找,找到之后即可返回,不在往下继续查找!

    config

    下面介绍一下EL表达式的相关内容:

    (1).与 [ ] 运算符

      EL 提供 . 和 [ ] 两种运算符来导航数据。下列两者所代表的意思是一样的:

      ${sessionScope.user.sex}等于${sessionScope.user["sex"]}

      . 和 [ ] 也可以同时混合使用,如下:

      ${sessionScope.shoppingCart[0].price}

      回传结果为shoppingCart中第一项物品的价格。

      不过,以下两种情况,两者会有差异:

      (1) 当要存取的属性名称中包含一些特殊字符,如. 或 – 等并非字母或数字的符号,就一定要使用 [ ],例如:${user.My-Name }

      上述是不正确的方式,应当改为:${user["My-Name"] }

      (2) 我们来考虑下列情况:

      ${sessionScope.user[data]}

      此时,data 是一个变量,假若data的值为"sex"时,那上述的例子等于${sessionScope.user.sex};

      假若data 的值为"name"时,它就等于${sessionScope.user.name}。因此,如果要动态取值时,如后台存在Map,类,数组等之类的数据就可以用上述的方法来做,但无法做到动态取值。

    (2)算术运算符

      + 注意:在EL表达式中的‘+’只有数学运算的功能,没有连接符的功能,它会试着把运算符两边的操作数转换为数值类型,进而进行数学加法运算,最后把结果输出。若出现${'a'+'b'}则会出现异常。 例如:${6+6}
      - 例如:${4-3}
      * 例如:${4*3}
      / 例如:${9/3} 
      div 例如:${ 3 div 4}
      % 例如: ${3%4}
      mod ${10 mod 4}
      注意到表达式语言还支持div、mod等运算符。而且表达式语言把所有数值都当成浮点数处理,所以3/0的实质是3.0/0.0,得到结果应该是Infinity。
    2.关系运算符
     
    > gt 例如:${8>9}
    >= ge 例如:${45>=9}
    < lt 例如:${4<9}
    <= le 例如:${9<=8}
    == eq 例如:${4==4}
    != ne 例如:${4!=3}
     
    表达式语言不仅可在数字与数字之间比较,还可在字符与字符之间比较,字符串的比较是根据其对应UNICODE值来比较大小的。

    注意:在使用EL 关系运算符时,不能够写成:
    ${param.password1} = = ${param.password2}
    或者
    ${ ${param.password1 } = = ${ param.password2 } }
    而应写成
    ${ param.password1 = = param.password2 }
    3.逻辑运算符
     
    &&  and 例如:${false && false}
    ||  or 例如:${true || false}
    !   not 例如:${!true}相当于${false}
    4.三元运算符
     
    ? : 例如:${3>2?'是':'不是'}
    在EL表达式中还有一些特殊运算符:
     
    empty 判断EL表达式中的表达式是否为空(NULL,空字符串,空集合),例如:${empty sessionScope.user}
    . 是我们最常用的,作用相当于执行Bean中的get方法。 例如:${sessionScope.user.userName}意思是:在会话中得到名称为user的Bean对象,通过“.”运算符执行getUserName();方法,返回存放在Bean中的用户名属性的值。
    [] 作用和“.”运算符的一样,只不过[]运算符可以执行一些不规则的标识符。 例如:${requestScope.user["score-math"]},这个表达式中有不规则的标识符,是不能使用“.”来访问的。
    在EL表达式中为我们提供了许多内置对象,使我们很方便的得到我们想要的数据:
     
    1.从隐式对象中得到数据:
     
    pageScope 例如:${pageScope.user.userName} 相当于<%=page.getAttribute("user").getUserName%>
    requestScope 例如:${requestScope.books} 相当于<%=request.getAttribute("books")%>
    sessionScope 例如:${sessionScope.lastURL} 相当于<%=session.getAttribute("lastURL")%>
    applicationScope 例如:${applicationScope.provice} 相当于<%=application.getAttribute("provice")%>
    2.从请求头中得到数据:
     
    header 例如:${header.referer}得到请求过来的URL
    3.访问JSP页面中的内置对象:
     
    pageContext 例如:${pageContext.request}在EL表达式中我们是不能直接使用JSP页面的内置对象,但可以是用pageContext间接得到这些内置对象,再来使用。
    如果需要在支持表达式语言的页面中正常输出“$”符号,则在“$”符号前加转义字符“”,否则系统以为“$”是表达式语言的特殊标记。
  • 相关阅读:
    [原创] 如何在ietester下使用firebug
    Undeclared identifier: 'XXXX'
    图解SQL多表关联查询
    如何去掉Delphi自动生成的~.pas等临时文件
    DataSetProvider的Option属性
    DELPHI DATASNAP 2010 入门操作(2)不写一行代码,绿色三层我也行
    Windows下搭建Android开发环境
    Delphi快捷键大全
    DevExpress的TcxDBLookupComboBox使用方法及问题
    SQL的重复记录处理大全
  • 原文地址:https://www.cnblogs.com/jiangxiulian/p/5890023.html
Copyright © 2020-2023  润新知