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