EL表达式
EL表达式
Expression Language 表达式语⾔,替代 JSP ⻚⾯中数据访问时的复杂编码,可以⾮常便捷地取出域对象(pageContext、request、session、application)中保存的数据,前提是⼀定要先 setAttribute, EL 就相当于在简化 getAttribute ${变量名} ,变量名就是 setAttribute 对应的 key 值。
EL表达式查找顺序
1.EL表达式对于四种域对象的默认查找顺序
pageContext -》request-〉session-》application 按照上述的顺序进⾏查找,找到⽴即返回,在 application 中也⽆法找到,则返回 null
2.指定作用域进行查找
pageContext:${pageScope.name}
request:${requestScope.name}
session:${sessionScope.name}
application:${applicationScope.name}
数据级联:
<%
// pageContext.setAttribute("name","page");
// request.setAttribute("name","request");
// session.setAttribute("name","session");
// application.setAttribute("name","application");
User user = new User(1,"张三",86.5,new Address(1,"⼩寨"));
System.out.println(user.toString());
pageContext.setAttribute("user",user);
%>
<table>
<tr>
<th>编号</th>
<th>姓名</th>
<th>成绩</th>
<th>地址</th>
</tr>
<tr>
<td>${user.id}</td>
<td>${user.name}</td>
<td>${user.score}</td>
<td>${user.address}</td>
</tr>
</table>
3.EL执行表达式
${num1&&num2} && || ! < > <= <= ==
&& and
|| or
! not
== eq
!= ne
< lt
gt
<= le
= ge
empty 变量为 null,⻓度为0的String,size为0的集合
示例
<%
EL_User user=new EL_User("边信哲",20183694,21);
request.setAttribute("user",user); //这里的key值是user
%>
<!--首先用EL表达式单纯输出user-->
<!--未改写EL_User的toString()方法 输出结果:user:com.wildfire.javabean.EL_User@5e42f507-->
<!--改写了EL_User的toString()方法 输出结果:user:EL_User{name='边信哲', id=20183694, age=21}-->
<h1>user:${user}</h1>
<hr>
<!--如果想分别取出name id age里面的value值-->
${user.name} ${user.id} ${user.age}
<!--
原理:
1.id--》Id
2.寻找到getId()方法
3.调用getId()方法
-->
<!--也可以这样取user.address.addressAD-->
<!--也可以这样取user["id"]-->
<!--也可以这样设置user.id=20183694 但是不经常这么用-->