配套资料,免费下载
链接:
提取码:txnf
7.4、EL表达式
7.4.1、EL概述
EL是为了简化咱们的jsp代码,具体一点就是为了简化在jsp里面写的那些java代码。
7.4.2、EL语法
注意:如果从作用域中取值,会先从小的作用域开始取,如果没有,就往下一个作用域取,一直把四个作用域取完都没有,就没有显示。
${ 表达式 }
7.4.3、EL隐含对象
EL表达式的11个内置对象:
注意:您可以在表达式中使用这些对象,就像使用变量一样。
7.4.4、EL案例演示
如果域中所存的是对象:
<%
User u = new User();
u.setUsername("zhangsan");
u.setPassword("123456");
pageContext.setAttribute("u", u);
request.setAttribute("u", u);
session.setAttribute("u", u);
application.setAttribute("u", u);
%>
<br>使用普通手段取出作用域中的值<br>
<%= ((User) pageContext.getAttribute("u")).getUsername() %>
<%= ((User) request.getAttribute("u")).getUsername() %>
<%= ((User) session.getAttribute("u")).getUsername() %>
<%= ((User) application.getAttribute("u")).getUsername() %>
<br>使用EL表达式取出作用域中的值<br>
<p>${ pageScope.u.username }</p>
<p>${ requestScope.u.username }</p>
<p>${ sessionScope.u.username }</p>
<p>${ applicationScope.u.username }</p>
如果域中所存的是键值:
<%
pageContext.setAttribute("name", "page");
request.setAttribute("name", "request");
session.setAttribute("name", "session");
application.setAttribute("name", "application");
%>
<br>使用普通手段取出作用域中的值<br>
<%= pageContext.getAttribute("name") %>
<%= request.getAttribute("name") %>
<%= session.getAttribute("name") %>
<%= application.getAttribute("name") %>
<br>使用EL表达式取出作用域中的值<br>
${ pageScope.name }
${ requestScope.name }
${ sessionScope.name }
${ applicationScope.name }
如果域中所存的是数组:
<%
String[] array = {"aa","bb","cc","dd"};
pageContext.setAttribute("array", array);
request.setAttribute("array", array);
session.setAttribute("array", array);
application.setAttribute("array", array);
%>
<br>使用普通手段取出作用域中的值<br>
<p><%= ((String[]) pageContext.getAttribute("array"))[0] %></p>
<p><%= ((String[]) request.getAttribute("array"))[0] %></p>
<p><%= ((String[]) session.getAttribute("array"))[0] %></p>
<p><%= ((String[]) application.getAttribute("array"))[0] %></p>
<br>使用EL表达式取出作用域中的值<br>
<p>${ pageScope.array[0] }</p>
<p>${ requestScope.array[0] }</p>
<p>${ sessionScope.array[0] }</p>
<p>${ applicationScope.array[0] }</p>
如果域中锁存的是集合:
<%
Map map = new HashMap();
map.put("name", "zhangsan");
map.put("age",18);
pageContext.setAttribute("map", map);
request.setAttribute("map", map);
session.setAttribute("map", map);
application.setAttribute("map", map);
%>
<br>使用普通手段取出作用域中的值<br>
<p><%= ((Map) pageContext.getAttribute("map")).get("name") %></p>
<p><%= ((Map) request.getAttribute("map")).get("name") %></p>
<p><%= ((Map) session.getAttribute("map")).get("name") %></p>
<p><%= ((Map) application.getAttribute("map")).get("name") %></p>
<br>使用EL表达式取出作用域中的值<br>
<p>${ pageScope.map.name }</p>
<p>${ requestScope.map.name }</p>
<p>${ sessionScope.map['name'] }</p>
<p>${ applicationScope.map['name'] }</p>
7.5、JSTL表达式
7.5.1、JSTL概述
JSTL(JSP Standard Tag Library,标准标签库)主要也是为了简化jsp的代码编写,替换 <%%> 写法,一般与EL表达式配合使用。
7.5.2、JSTL依赖
- 导入依赖库:jstl.jar、standard.jar
- 引入标签库: <%@ taglib prefix=”c” uri=”#34; %>
7.5.3、JSTL常用标签
- c:set
<!-- 声明一个对象 myname,对象的值 zhangsan,存储到了 page(默认),指定是 session 域 -->
<c:set var="myname" value="zhangsan" scope="session"></c:set>
${ sessionScope.myname }
- c:if
<c:set var="age" value="18" ></c:set>
<c:if test="${ age > 26 }">
年龄大于了26岁...
</c:if>
<c:if test="${ age <= 26 }">
年龄小于了26岁...
</c:if>
<%--定义一个变量名 flag,去接收前面表达式的值,然后存在 session 域中--%>
<c:if test="${ age > 26 }" var="flag" scope="session">
年龄大于了26岁...
</c:if>
- c:forEach
<%--从1开始遍历到10,得到的结果,赋值给 i,并且会存储到page域中,step代表增幅为2--%>
<c:forEach begin="1" end="10" var="i" step="2">
${i}
</c:forEach>
<%
List<User> list = new ArrayList<User>();
User u1 = new User();
u1.setUsername("zhangsan");
u1.setPassword("123456");
list.add(u1);
User u2 = new User();
u2.setUsername("lisi");
u2.setPassword("123456");
list.add(u2);
request.setAttribute("list",list);
%>
<!--items:表示遍历哪一个对象,注意这里必须写EL表达式。
var:遍历出来的每一个元素用user去接收。 -->
<c:forEach var="user" items="${ list }">
${ user.username } ---- ${ user.password } <br />
</c:forEach>