一、EL表达式简介
EL全名Expression Language。主要有以下作用。
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方法。
二、EL表达式之获取数据
使用EL表达式获取数据格式: ${ }
EL表达式在执行语句时,会调用pageContext.findAttribute(""),分别从page、request、session、application四个域对象中查找,如果找到就返回相应的值,没有找到就返回""(空字符串)。EL表达式可以很轻松的获取JavaBean的属性、获取集合中的数据。
<%@page import="com.kiwi.domain.Address"%> <%@page import="com.kiwi.domain.Person"%> <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'index.jsp' starting page</title> </head> <body> <br>----------------------获取域中存的数据----------------------<br> <% String data = "abcd"; request.setAttribute("data",data); %> ${data} <%-- pageContext.findAttribute("data") --%> <br>----------------------获取域中存的JavaBean数据----------------------<br> <% Person p1 = new Person(); p1.setName("Tom"); request.setAttribute("person",p1); %> ${ person.name } <br>----------------------获取域中存的JavaBean中的JavaBean的数据----------------------<br> <% Person p2 = new Person(); Address a = new Address(); a.setCity("北京"); p2.setAddress(a); request.setAttribute("person2",p2); %> ${ person2.address.city} <br>----------------------获取域中存的list集合中的数据----------------------<br> <% List<Person> list = new ArrayList<Person>(); list.add(new Person("AAA")); list.add(new Person("BBB")); list.add(new Person("CCC")); list.add(new Person("DDD")); request.setAttribute("list",list); %> ${ list[1].name } <br>----------------------获取域中存的map集合中的数据----------------------<br> <% Map map = new HashMap(); map.put("a",new Person("AAAA")); map.put("b",new Person("BBBB")); map.put("c",new Person("CCCC")); map.put("d",new Person("DDDD")); request.setAttribute("map",map); %> ${ map.a.name } </body> </html>
结果:
三、EL表达式之运算
EL表达式支持如下运算符。
1.关系运算符
2.逻辑运算符
3.empty运算符
检查对象是否为null。
4.二元运算符
${ username != null ? username : "" }
5.[] 和.运算符
四、EL表达式之获取Web开发常用对象
EL表达式语言中定义了11个隐含对象,使用这些隐含对象可以很方便地获取web开发中的一些常见对象,并读取这些对象的数据。
pageContext |
对应于JSP页面中的pageContext对象(注意:取的是pageContext对象) |
pageScope |
代表page域中用于保存属性的Map对象 |
requestScope |
代表request域中用于保存属性的Map对象 |
sessionScope |
代表session域中用于保存属性的Map对象 |
applicationScope |
代表application域中用于保存属性的Map对象 |
param |
表示一个保存了所有请求参数的Map对象 |
paramValues |
表示一个保存了所有请求参数的Map对象,它对于某个请求参数,返回的是一个string[] |
header |
表示一个保存了所有http请求头字段的Map对象,注意:如果头里面有“-” ,例Accept-Encoding,则要header[“Accept-Encoding”] |
headerValues |
表示一个保存了所有http请求头字段的Map对象,它对于某个请求参数,返回的是一个string[]数组。注意:如果头里面有“-” ,例Accept-Encoding,则要headerValues[“Accept-Encoding”] |
cookie |
表示一个保存了所有cookie的Map对象 |
initParam |
表示一个保存了所有web应用初始化参数的map对象 |
<%@page import="com.kiwi.domain.Address"%> <%@page import="com.kiwi.domain.Person"%> <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'index.jsp' starting page</title> </head> <body> <br>-----------------------------隐式对象-------------------------------<br> <br/>---------------1.pageContext对象:获取JSP页面中的pageContext对象------------------------<br/> ${pageContext} <br/>---------------2.pageScope对象:从page域(pageScope)中查找数据------------------------<br/> <% pageContext.setAttribute("data","000"); %> ${ data }<%-- 这是从四个域里面找 --%> ${ pageScope.data } <br/>---------------3.requestScope对象:从request域(requestScope)中查找数据------------------------<br/> <% request.setAttribute("data","1111"); %> ${ requestScope.data } <br/>---------------4.sessionScope对象:从session域(sessionScope)中查找数据------------------------<br/> <% session.setAttribute("data","2222"); %> ${ sessionScope.data } <br/>---------------5.applicationScope对象:从application域(applicationScope)中查找数据------------------------<br/> <% application.setAttribute("data","3333"); %> ${ applicationScope.data } </body> </html>
结果: