EL即Expression Language(表達式語言),主要用來替代JSP頁面中用來做簡單運算和顯示的代碼。EL表達式可以用來顯示page、request、session和application中的資料。
EL表達式的文法非常簡單:
${ EL exprission },${ bean.name } 或 ${ bean['name'] }
案例:在頁面上顯示個人資訊。
User類代碼如下:
package com.test.entity;
public class User {
private String loginID;
private String loginPWD;
private String nickName;
private String tel;
public String getLoginID() {
return loginID;
}
public void setLoginID(String loginID) {
this.loginID = loginID;
}
public String getLoginPWD() {
return loginPWD;
}
public void setLoginPWD(String loginPWD) {
this.loginPWD = loginPWD;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
}
index.jsp頁面代碼如下:
<body>
<%
User user = new User();
user.setNickName("李大爺");
session.setAttribute("user", user);
%>
<p style="color:red;">${user.nickName }</p>
</body>
運作效果:
JSTL(JavaServerPages Standard Tag Library)是指JSP标準标簽庫。
使用JSTL的步驟:
1. 在JSP頁面添加JSTL引用。
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
2. 使用JSTL标簽。常用JSTL标簽有if标簽和forEach标簽。
if标簽用于判斷條件是否成,與Java中的If語句做用相同。其文法如下:
<c:if test="codition" var="name" scope="applicationArea" >
</c:if>
屬性名 | 是否支援EL | 屬性類型 | 描述 |
test | true | Boolean | 決定是否處理标簽體的内容 |
var | false | String | 用于指定變量名,該變量用于儲存test屬性的判斷結果 |
scope | false | String | 用于指定變量的有效範圍,預設值為page。可選值有page、request、session和application |
案例:修改前一篇 文章中的需求,使用if标簽。
之前使用的純JSP的代碼實作的登入前後的效果。使用if标簽實作,代碼如下:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<body>
<c:if test="${empty user}" var="loginState">
<a href="#" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" >登入</a>
<a href="#" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" >注冊</a>
</c:if>
<c:if test="${!loginState }">
<a href='#'>${user.loginID }</a>
</c:if>
</body>
forEach标簽,用于實作對集合中對象的周遊。文法格式如下:
<c:forEach items=collection var=name begin=start end=end step=count>
</forEach>
屬性名 | 是否支援EL | 屬性類型 | 描述 |
var | false | Boolean | 決定是否處理标簽體的内容 |
item | true | 數組、字元串和集合類型 | 疊代的集合對象 |
varStatus | false | String | 疊代的狀态,可以獲得疊代自身資訊 |
begin | true | int | 如果指定begin屬性,則從item的下标為begin的位置開始疊代,如果沒有指定begin屬性,則從0下标開始疊代 |
end | true | int | 如果指定end屬性,就在item的下标為end的位置結束疊代,如果沒有指定end屬性,将疊代到最後一個下标位置。疊代的步長預設為1 |
step | true | int |
案例:在頁面上顯示所有歌手。
資料庫中的資訊如下:
建立singerList.jsp頁面,代碼如下(可以自己建立集合,添加臨時資料,效果相同):
SingerService singerService = new SingerService();
List<Singer> list = singerService.selectAll();
session.setAttribute("singerList", list);
<body>
<c:forEach items="${singerList }" var="singer" varStatus="status">
<p ${status.index%2==1?"style='background-color: #aa8a0c;'":"" }>${singer.singerName } ${singer.birthday }</p>
</c:forEach>
</body>
運作結果如下: