什么是EL表达式?
EL表达式全名是Expression Language。EL的主要作用有:
- 获取数据
- 执行运算
- 获取web开发常用对象
- 调用Java方法
不过有一点需要注意的是使用EL表达式的时候,该JSP文件的指令中需要设置<%@ page isELIgnored="false" %>。(默认就是false)
1.获取数据
EL表达式获取数据的语法 ${ 标识符 }
EL表达式在执行的时候会自动调用pageContext.findAttribute方法,并使用该标识符作为关键字,分别从page,request,session,application四个域中查找相应的对象(范围从小到大的查找),找到则返回对象,找不到则返回“ ”(注意这里不是null,是空字符串)。
<%@page import="com.xml.ov.User2"%>
<%@page import="java.util.HashMap"%>
<%@page import="java.util.Map"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
application.setAttribute("name", "john");
pageContext.setAttribute("name", "tom");
request.setAttribute("name", "sam");
session.setAttribute("name", "ana");
%>
<!-- 默认找范围最小的那个域里的name -->
${name}
${pageScope.name}
${requestScope.name}
<hr>
<h3>域中的数组集合</h3>
<%
String[] array = {"ana","bob","cindy"};
request.setAttribute("array", array);
%>
${array[1]}
<hr>
<h3>域中集合的值</h3>
<%
List<String> list = new ArrayList();
list.add("ana");
list.add("bob");
list.add("cindy");
request.setAttribute("list", list);
%>
${list.get(0)}
<hr>
<h3>域中Map集合的值</h3>
<%
Map<String,String> map = new HashMap<String,String>();
map.put("a", "ana");
map.put("b.b", "bob");
request.setAttribute("map", map);
%>
${map.a}
<!-- 如果key太复杂,就用方括号和双引号括起来代表一个key -->
${map["b.b"]}
<hr>
<h3>域中集合存对象的值</h3>
<%
List<User2> list2 = new ArrayList<User2>();
list2.add(new User2("ana","123"));
list2.add(new User2("bob","456"));
request.setAttribute("list2", list2);
%>
${list2[0].username}
</body>
</html>
2.执行运算
运算符输出运算结果,比较符输出true或者false
<h4>加法运算</h4>
${ n1 + n2 }
<h3>关系运算</h3>
<h4>大于</h4>
${ n1 > n2 } ${ n1 gt n2 }
<h4>小于</h4>
${ n1 < n2 } ${ n1 lt n2 }
<h4>等于</h4>
${ n1 == n2 } ${ n1 eq n2 }
<h4>不等于</h4>
${ n1 != n2 } ${ n1 ne n2 }
<h4>大于等于</h4>
${ n1 >= n2 } ${ n1 ge n2 }
<h4>小于等于</h4>
${ n1 <= n2 } ${ n1 le n2 }
<h3>逻辑运算</h3>
<h4>与</h4>
${ n1 > n2 && n3 > n4 } ${ n1 > n2 and n3 > n4 }
<h4>或</h4>
${ n1 > n2 || n3 > n4 } ${ n1 > n2 or n3 > n4 }
<h4>非</h4>
${ !(n1 > n2) } ${ not (n1 > n2) }
3.直接获取WEB开发中的对象
EL表达式中保留了11个隐含对象,这些可以直接使用的隐含对象可以很方便的获取web开发的一些常见对象。
语法:${ 隐式对象名称 } :获取对象的引用
<h4>EL的WEB对象</h4>
${ param.username }
<h4>获取请求头</h4>
${ header.referer }
<h4>获取全局初始化参数</h4>
${ initParam.username }
<h4>pageContext对象</h4>
${ pageContext.request.contextPath }
4.调用Java的方法
其实这个用的不是很多,详情请点击。