EL(Expression Language) 是为了使JSP写起来更加简单。表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法,让Jsp的代码更加简化。
1、语法结构
${expression}
2、[ ]与.运算符
EL 提供“.“和“[ ]“两种运算符来存取数据。
当要存取的属性名称中包含一些特殊字符,如 . 或 - 等并非字母或数字的符号,就一定要使用“[ ]“。例如:
${ user. My-Name}应当改为${user["My-Name"]}
如果要动态取值时,就可以用“[ ]“来做,而“.“无法做到动态取值。例如:
${sessionScope.user[data]}中data 是一个变量
3、变量
EL存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为username的变量。
因为我们并没有指定哪一个范围的username,所以它会依序从Page、Request、Session、Application范围查找。
假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传""。
Name}应当改为${user["My-Name"]}
如果要动态取值时,就可以用“[ ]“来做,而“.“无法做到动态取值。例如:
${sessionScope.user[data]}中data 是一个变量
属性范围在EL中的名称 | |
Page | PageScope |
Request | RequestScope |
Session | SessionScope |
Application | ApplicationScope |
EL表达式
* 语法:${ }* 获取(域对象中的)数据
<h4>获取域对象中的值</h4>
<%
pageContext.setAttribute("name", "张三");
request.setAttribute("name", "李四");
%>
${ pageScope.name }
${ requestScope.name }
<h4>域中数组的值</h4>
<%
String [] arrs = {"美美","波波","东东","名名"};
request.setAttribute("arrs", arrs);
%>
${ arrs[2] } 获取的结果是东东,这个是根据数组的下标来获取的,下标是从0开始的
<h4>域中集合的值</h4>
<%
List<String> list = new ArrayList<String>();
list.add("美美");
list.add("小凤");
list.add("芙蓉");
request.setAttribute("list", list);
%>
${ list[1] } 获取的结果是小凤,这个是根据数组的下标来获取的,下标是从0开始的
<h4>域中Map集合的值</h4>
<%
Map<String,String> map = new HashMap<String,String>();
map.put("aa", "美美");
map.put("bb", "小凤");
request.setAttribute("map", map);
%>
${ map.bb } 获取的结果是小凤,map是根据key value取值的
<h4>域中集合中有对象的值</h4>
<%
List<User2> uList = new ArrayList<User2>();
uList.add(new User2("banzhang","123"));
uList.add(new User2("美美","abc"));
request.setAttribute("uList", uList);
%>
${ uList[1].username }
* 执行运算
<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) }
* 获取WEB开发中的对象
pageScope
requestScope
sessionScope
applicationScope
param 获取请求的参数 getParameter()
paramValues 获取请求的参数 getParameterValues()
header 获取请求头的信息
headerValues 获取请求头的信息
initParam 获取全局的初始化参数
cookie 获取cookie
pageContext
<h4>EL的WEB对象</h4>
${ param.username }
<h4>获取请求头</h4>
${ header.referer }
<h4>获取全局初始化参数</h4>
${ initParam.username }
<h4>pageContext对象</h4> 这个是获取动态路径的,即在action后面的请求路径
${ pageContext.request.contextPath }