zoukankan      html  css  js  c++  java
  • 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间接得到这些内置对象,再来使用。
    如果需要在支持表达式语言的页面中正常输出“$”符号,则在“$”符号前加转义字符“”,否则系统以为“$”是表达式语言的特殊标记。
  • 相关阅读:
    swoole 安装方法 使用即时聊天
    git的介绍以及简单应用
    curl的应用
    linux下监听和同步代码配置
    mac skim 修改背景色
    php 编译安装的一个 configure 配置
    mac mysql error You must reset your password using ALTER USER statement before executing this statement.
    yii2 控制器里 action 大小写组合造成的路由问题
    warning : json_decode(): option JSON_BIGINT_AS_STRING not implemented in xxx
    redis 自启动脚本
  • 原文地址:https://www.cnblogs.com/jiangxiulian/p/5890023.html
Copyright © 2011-2022 走看看