JSPL JSP標準標簽庫
作用:
- 和 EL 表達式一起,取代<% %>java代碼
下載相應的jar包
JSTL標簽庫
- 核心標簽庫(core)c.tld
- XML(x:操作xml的標簽庫)
- SQL(sql標簽庫) sql.tld
- FMT(fmt:國際化標簽庫)
- JSTL函數(EL函數)el fn.tld
JSTL快速入門
范例
<body>
<h4>傳統方式</h4>
<%
int a = 10;
if(a == 10){
out.print("哈哈");
%>
<%= a=10 %>
<%
}
%>
<h4>使用jstl的方式</h4>
<c:set var="i" value="10" scope="page"></c:set>
<c:if test="${ i eq 10}">
i = 10<!-- 相當于html文本 -->
</c:if>
</body>
JSTL的標簽
- <c:out>
- <c:set>
- <c:remove>
- <c:catch>
- <c:if>
- <c:choose>
- <c:forEach>
- <c:forTokens>
- <c:param>
- <c:import>
- <c:url>
- <c:redict>
<c:out>
<c:out>
<body>
<h4>傳統方式</h4>
<%= "Hello" %>
<%
int a = 10;
request.setAttribute("name","xy");
%>
<%= a %>
<h4>JSTL的方式</h4>
<c:out value="Hello"></c:out>
<c:out value="${ name }"></c:out>
<c:out value="${ city }" default="BeiJing"></c:out>
<c:out value="<a href='xxx'>超鏈接</a>" escapeXml="false"></c:out>
</body>
<c:set>
<c:set>
<c:set>
<body>
<h4>傳統方式</h4>
<%
int a = 10;
pageContext.setAttribute("name","10",pageContext.REQUEST_SCOPE);
%>
<%
User user = new User();//設置Javabean類
user.setUsername("毛毛");
user.setPassword("123");
request.setAttribute("user",user);
%>
${ user.username }
<h4>JSTL方式</h4>
<c:set var="i" value="10" scope="request"></c:set>
${ i }
<c:set target="${ user }" value="萌萌" property="username"></c:set>
${ user.username }
</body>
<c:remove>
作用
用于刪除各種web域中的屬性
格式
<body>
<h4>傳統方式</h4>
<%
request.setAttribute("age",20);
// 刪除age
request.removeAttribute("age");
%>
<h4>JSTL的方式</h4>
<c:set var="age" value="20" scope="request"></c:set>
<c:remove var="age" scope="request"/>
</body>
<c:catch>標簽
<c:catch>
<body>
<h4>傳統方式</h4>
<%
try {
int d = 1/0;
}catch(Exception e){
e.printStackTrace();
}
%>
<h4>JSTL方式</h4>
<!-- 異常就會被捕獲,保存page范圍 e 對象中 -->
<c:catch var="e">
<%
String s = "abc";
s.charAt(4);
%>
</c:catch>
${e.message }
<c:catch var="myex" >
<%
String st = "abc";
st.charAt(4);
%>
</c:catch>
異常:<c:out value="${myex}" /> ${myex}<br/>
異常 myex.getMessage:<c:out value="${myex.message}" /><br />
異常 myex.getCause:<c:out value="${myex.cause}" /><br />
異常 myex.getStackTrace:<c:out value="${myex.stackTrace}" />
</body>
<c:if>
<c:if>
<body>
<h4>傳統方式</h4>
<%
int a = 10;
if(a >= 10){
out.print("a >= 10");
}else{
out.print("a < 10");
}
%>
<h4>JSTL的方式</h4>
<c:set var="i" value="10" scope="page"></c:set>
<c:if test="${ i ge 10 }" var="x" scope="page">
i>=10
</c:if>
${ x }
<c:if test="${i lt 10 }">
i < 10
</c:if>
</body>
<c:choose>
<c:choose>
<h4>JSTL方式</h4>
<c:set var="count" value="1"></c:set>
<c:choose>
<c:when test="${ count eq 0 }">
現在的值是0
</c:when>
<c:otherwise>
符合您要求的記錄共有${ count }條
</c:otherwise>
</c:choose>
<c:forEach>
作用
對一個集合對象中的元素進行循環迭代操作,或者按指定的次數重復迭代執行標簽體中的內容
<c:forEach>
varStatus的屬性
<h4>遍歷數組</h4>
<%
String[] arrs = {"xixi","haha","msms","xila"};
request.setAttribute("arrs",arrs);
%>
<c:forEach var="s" items="${ arrs }">
${ s }<br>
</c:forEach>
<h4>遍歷集合</h4>
<%
List<String> list = new ArrayList<String>();
list.add("啦啦");
list.add("d");
list.add("s");
list.add("d");
request.setAttribute("list",list);
%>
<c:forEach var="s" items="${ list }">
${ s }
</c:forEach>
<h4>遍歷Map集合</h4>
<%
Map<String, String> map = new HashMap<String, String>();
map.put("aa","meimei");
map.put("bb","fengfeng");
map.put("cc","liangliang");
request.setAttribute("map",map);
%>
<c:forEach var="entry" items="${ map }">
${ entry.key }---${ entry.value }
</c:forEach>
<h4>遍歷對象的集合</h4>
<%
List<User> ulist = new List<User>();
ulist.add(new User("meimei","123"));
ulist.add(new User("meei","1234"));
ulist.add(new User("mei","12334"));
request.setAttribute("uList",uList);
%>
<c:forEach var="user" items="uList">
${ user.username }--${ user.password }<br>
</c:forEach>
<h4>迭代數據</h4>
<c:forEach var="i" begin="1" end="10" step="1">
${ i }
</c:forEach>
<h4>計算從1加到100的和</h4>
<c:set value="0" var="sum" scope="page"></c:set>
<c:forEach var="i" begin="1" end="100" step="1">
<c:set var="sum" value="${ sum + i }"></c:set>
</c:forEach>
${ sum }
<h4>遍歷10到100的偶數,每到第三個數,顯示紅色</h4>
<c:forEach var="i" begin="10" end="100" step="2" varStatus="status">
<c:choose>
<c:when test="${ status.count % 3 eq 0 }">
<font color="red">${ i }</font>
</c:when>
<c:otherwise>
${ i }
</c:otherwise>
</c:choose>
</c:forEach>
<c:param> <c:import><c:url>
<c:param>
<c:import<
<h4>JSTL</h4>
<!-- 包含頁面 -->
<c:import url="/jstl/choose.jsp" context="/day13" var="i" scope="page">
<c:param name="username" value="meimei"></c:param>
</c:import>
${ i }
</body>
<c:url>
<c:url>
<h4>JSTL</h4>
<c:url var="i" value="/jstl/choose.jsp" scope="request" context="/day13">
<c:param name="username" value="mei"></c:param>
</c:url>
<a href="${ i }">choose</a>
<c:redirect>
實現重定向
<c:redirect>
<h4>JSTL</h4>
<c:redirect url="/jstl/choose.jsp" context="/day13">
<c:param name="username" value="meid"></c:param>
</c:redirect>
</body>
<c:forTokens> 了解
用來切分字符串
<c:forTokens>
<h4>分割字符串</h4>
<c:set var="i" value="aa,bb,cc" scope="page"></c:set>
<c:forTokens items="${ i }" delims="," var="x">
${ x }
</c:forTokens>