zoukankan      html  css  js  c++  java
  • EL表达式

    EL表达式的作用

      EL用于在不使用脚本、声明、表达式的情况下,在JSP页面中渲染数据

    EL使用位置

      不能用在指令中,指令在编译时候执行,EL在页面渲染时执行

        如:<%@ include%>、<%@ page%>等

      可用在HTML、JSP标签、JS、CSS中

    EL语法

      1.立即执行->在页面渲染时被JSP引擎解析执行(JSP自上而下执行)

        ${expr}

      2.延迟执行->在JSF中使用,在JSP中合法,但是不推荐使用

        #{expr}

      EL表达式要在执行后产生某个值,不能在表达式中声明变量、执行赋值语句

      保留关键字

        true、false、null、instanceof->和Java中的关键字意思一样

        empty->空返回真;非空返回假 ${empty x}

        括号里是对应的操作符,可以替换使用

          div( / )、mod( % )、and( && )、or( || )、not( ! )、eq( == )、ne ( != )、It( < )、gt ( > )、le( <= )、ge ( >= )

      操作符优先级(自上而下)

      

      字面量

        EL中字符串字面量可以用 ' 或 '' 引起来

        HashSet<Object>字面量:${ object.method({1,2,'three',4.00,x}) },Set中的元素用 {} 引起来

        ArrayList<Object>字面量:${ object.method([1,2,'three',4.00,x]) },List中的元素用 [] 引起来

        HashMap<Object,Object>字面量:${ object.method({'one':1,'two':2,'three':x,'list':[1,2.3]}) },Map中的元素用{}引起来

      对象属性和方法

        Student类,有一个student变量,有一个num属性,num属性提供set、get方法

        可以使用${student.num}访问num属性,实际上是调用的getNum()方法

        可以使用${student["num"]}访问num属性

        可以直接调用对象的方法,${student.toString()}

       静态字段、静态方法的访问->lang包下使用类名,其他包使用JSP的page指令导入包或者写出全限定类名

        ${Integer.MAX_VALUE},访问Integer类中的静态字段MAX_VALUE

        ${Integer.reverse(24)},访问Integer类中的静态方法reverse

       lambla表达式->同java中的用法一致

        ${v = (a,b)->a+b;v(3,15)},最后的值是18

    EL表达式中的作用域变量

      JSP中的9个隐式变量:request、response、session、out、application、config、pageContext、page、exception

      EL中的11个隐式变量:pageContext、pageScope、requestScope、sessionScope、applicationScope、param、paramValues、header、headerValues、cookie、initParam

    隐含对象

    类型

    说明

    PageContext

    javax.servlet.ServletContext

    表示此JSP的PageContext

    PageScope

    java.util.Map

    取得Page范围的属性名称所对应的值

    RequestScope

    java.util.Map

    取得Request范围的属性名称所对应的值

    sessionScope

    java.util.Map

    取得Session范围的属性名称所对应的值

    applicationScope

    java.util.Map

    取得Application范围的属性名称所对应的值

    param

    java.util.Map

    如同ServletRequest.getParameter(String name)。返回String

    paramValues

    java.util.Map

    如同ServletRequest.getParameterValues(String name)。返回String[]

    header

    java.util.Map

    如同ServletRequest.getHeader(String name)。返回String

    headerValues

    java.util.Map

    如同ServletRequest.getHeaders(String name)。返回String[]

    cookie

    java.util.Map

    如同HttpServletRequest.getCookies()

    initParam

    java.util.Map

    如同ServletContext.getInitParameter(String name)。返回String

    EL解析变量的顺序

        1.检查是否隐式变量

        2.如果不是隐式变量,EL按照pageContext.getAttribute()、HttpServletRequest.getAttribute()、HttpSession.getAttribute()、ServletContext.getAttribute()的顺序检查是否有符合条件的变量名

        3.如果仍未找到,则报错

     集合的访问

      Map,有一个map引用

        ${map.username} 或 ${map["username"]}

      List,有一个list引用

        ${list[0]},注意${list.0}是错误的

      EL中同样可以使用流操作,只要EL变量是Java数组或者Collection实例,但是不推荐在JSP中这样做

     

  • 相关阅读:
    BZOJ3562 : [SHOI2014]神奇化合物
    BZOJ3559 : [Ctsc2014]图的分割
    BZOJ3551 : [ONTAK2010]Peaks加强版
    BZOJ3542:DZY Loves March
    李洪强iOS开发之
    iOS学习之iOS沙盒(sandbox)机制和文件操作1
    iOS学习之iOS沙盒(sandbox)机制和文件操作
    stringByAppendingPathComponent和stringByAppendingString 的区别
    iOS开发:Toast for iPhone
    深度解析开发项目之 01
  • 原文地址:https://www.cnblogs.com/vshen999/p/8903836.html
Copyright © 2011-2022 走看看