EL表达式

Posted best-hym

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EL表达式相关的知识,希望对你有一定的参考价值。

概述

EL 全名为Expression Language。EL主要作用:
1. 获取数据
 EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域 中检索java对象、获取数据。(某个web域 中的对象,访问javabean的属性、访问list集合、访问map集合、访问数组)
2. 执行运算
 利用EL表达式可以在JSP页面中执行一些基本的关系运算、逻辑运算和算术运算,以在JSP页面中完成一些简单的逻辑运算。${user==null}
3. 获取web开发常用对象
 EL 表达式定义了一些隐式对象,利用这些隐式对象,web开发人员可以很轻松获得对web常用对象的引用,从而获得这些对象中的数据。
4. 调用Java方法
 EL表达式允许用户开发自定义EL函数,以在JSP页面中通过EL表达式调用Java类的方法。

获取数据

格式:${expression}

EL表达式语句在执行时,会调用pageContext.findAttribute()方法,用标识符为关键字,分别从page、request、session、application四个域中查找相应的对象,找到则返回相应对象,找不到则返回“ ”,EL把null值直接以空字符串进行显示,避免了运算时发生错误而抛出异常。

1..获取bean的属性
    <% 
        User u = new User();
        u.setAge(20);
        request.setAttribute("person",u);
     %>
    年龄:${person.age}



2..获取数组或列表元素
     <% 
       List userlist = new ArrayList();
       User u = new User();
       u.setAge(20);
       userlist.add(u);
       request.setAttribute("userlist", userlist);
     %>
     年龄:${userlist[0].age}



3..获取map中元素(两种方式均可)
     <% 
         Map<String,String> map = new HashMap<String,String>();
         map.put("user","nic");
         map.put("role", "admin");
         request.setAttribute("login", map);
     %>
      USER: ${login.user} <br>
      ROLE: ${login["role"]} 

大多数情况下.运算符和[]运算符是通用的,以下情况只能用[]:
1)包含特殊字符
${user[first-name]}
2)通过变量动态取值
${user[param]}

 

执行运算

包括算术运算,逻辑运算和关系运算等

(1)数学运算:+、-、*、/

(2)关系运算:<、>、=、>= 、<= 、==

(3)逻辑运算:(&&)与、(||)或、(!)非

 

获取web开发常用对象

EL提供了11个隐式对象,其中除了pageContext隐式对象对应pageContext外,其他隐式对象都是对应其Map类型。使用这些隐含对象可以很方便地获取web开发中的一些常见对象,并读取这些对象的数据。

  1. pageContext隐式对象 : 对应于JSP页面中的pageContext对象,其本身就是一个Javabean,只要是getXxx()方法,就可以用 ${pageContext.xxx}获取到
  2. initParam隐式对象 : 表示一个保存了所有web应用初始化参数的map对象,可以取得web.xml中设置的ServletContext初始参数,即<context-param>中设置的初始参数,例如 ${initParam.initCount}相当于 <%=servletContext.getInitParameter("initCount") %>
  3. cookie隐式对象 :可通过 ${cookie.cookiename} 获取cookie中对应的值
  4. 属性范围相关隐式对象 : pageScope , requestScope , sessionScope , applicationScope分别对应Jsp隐式对象 pageContext , request , session , application的setAttribute()方法所设置的属性对象,如果不对作用范围进行指定,则默认按照page、request、session、application的顺序进行查找。需要注意的式,EL表达式中的这个四个对象,仅仅代表作用范围,并不等同于Jsp中的四个对象
  5. 请求参数相关隐式对象 : 例如 ${param.user}相当于<%=request.getParameter("user") %> , 而 paramValues 表示一个保存了所有请求参数的Map对象,它对于某个请求参数,返回的是一个string[],所以往往通过下标指定具体的参数
  6. 标头相关隐式对象: 如果要获取用户请求的表头数据,可以通过 header 或 headerValues 隐式对象 , 例如 ${header["User-Agent"]}相当于 <%=request.getHeader("User-Agent")%> ,headerValues 则对应 getHeaders() 方法

 

以上是关于EL表达式的主要内容,如果未能解决你的问题,请参考以下文章

jsp--EL表达式

jsp中的EL表达式

Jsp入门EL表达式_学习笔记

第五条知识点

EL表达式

EL表达式的基本知识