EL 全名为Expression Language。EL主要作用:
获取数据:
EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的java对象中获取数据。
执行运算:
利用EL表达式可以在JSP页面中执行一些基本的关系运算、逻辑运算和算术运算,以在JSP页面中完成一些简单的逻辑运算。
获取web开发常用对象
EL 表达式定义了一些隐式对象,利用这些隐式对象,web开发人员可以很轻松获得对web常用对象的引用,从而获得这些对象中的数据。
调用Java方法
EL表达式允许用户开发自定义EL函数,以在JSP页面中通过EL表达式调用Java类的方法。
使用EL表达式获取数据语法:“${标识符}”
EL表达式语句在执行时,会调用pageContext.findAttribute方法,用标识符为关键字,分别从page、request、session、application四个域中查找相应的对象,找到则返回相应对象,找不到则返回”” (注意,不是null,而是空字符串)。
注意:因为EL表达式是从容器找数据,所以数据设好后必须放在容器中。
EL表达式也可以很轻松获取JavaBean的属性,或获取数组、Collection、Map类型集合的数据,例如:
user.address.city
{user.list[0]}:访问有序集合某个位置的元素
map.key:获得map集合中指定key的值
{map.value} : 获得map集合中指定value的值
EL表达式可执行的运算包括算数、逻辑、比较、问号表达式,empty运算。
值得一提的是empty运算,如果表达式的值为null或不存在改变量或者是一个包含任何数据的List或Map,empty的值为true;
EL表达式语言中定义了11个隐含对象,使用这些隐含对象可以很方便地获取web开发中的一些常见对象,并读取这些对象的数据。
语法:${隐式对象名称} :获得对象的引用
测试headerValues时,如果头里面有“-” ,例Accept-Encoding,则要headerValues[“Accept-Encoding”]
测试cookie时,例
cookie.key取的是cookie对象,如访问cookie的名称和值,须
{cookie.key.name}或${cookie.key.value}
index.jsp中具体演示的核心代码如下:
<%
pageContext.setAttribute("pageName", "page_Jack");
request.setAttribute("reqName", "req_Jack");
session.setAttribute("sessName", "sess_Jack");
application.setAttribute("appName", "app_Jack");
%>
<!-- el表达式读取普通变量 -->
${pageName },${reqName },${sessName },${appName }<br/>
<%
User user = new User();
user.setAge(24);
user.setName("Tom");
pageContext.setAttribute("u", user);
%>
<!-- el表达式读取类变量 -->
${u}<br/>
${u.name },${u.age }<br/>
<%
Map<String,Object>map = new HashMap<String,Object>();
map.put("name", "张三");
map.put("sex", "男");
map.put("user",user);
pageContext.setAttribute("map", map);
%>
<!-- el表达式读取map中的数据 -->
${map }<br/>
${map.name },${map.sex },${map.user.name },${map.user.age }<br/>
<%
List list = new ArrayList();
list.add("张三");
list.add(user);
list.add(map);
session.setAttribute("list", list);
%>
<!-- el表达式读取list中的数据 -->
${list[0] },${list[1] },${list[1].name },${list[1].age },${list[2].name },
${list[2].sex },${list[2].user.name },${list[2].user.age },<br/>
<!-- 从指定的容器中读取数据 -->
${pageScope.u},
${requestScope.u},
${requestScope.m},
${sessionScope.list[0]}
<br/>
${header}<br/>
${header.host}<br/>
${header.cookie}<br/>
${cookie.JSESSIONID.value}<br/>
<br/>
${param}<br/> //演示访问地址:http://localhost:8080/elWeb/?name=Jack&age=21
${param.age }<br/>
${paramValues}<br/>
${paramValues.name[0]}<br/>
<br/>
<a href="${pageContext.request.contextPath}/jsps/aa.jsp"> 跳到另一个页面</a>