EL表达式

2018-06-18 01:52:21来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

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中这样做

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:浅析JDK,JRE,Tomcat之间的关系

下一篇:web.xml url-pattern学习