迭代標籤(重要內容)
< c:forEach/>用於遍歷集合中的對像。
< c:forTokens/>用於遍歷字符串中用特定分隔符分隔的字符串。–String.split(“#”);
forEach用於遍歷集合中的對像。
基本語法:
1.< c:forEach var=“迭代變量” item=“${集合名稱}” varStatus=“迭代下標變量”>
迭代部分
< /c:forEach>
2.forEach的begin(開始索引)、end(結束索引)、step(步長)屬性:
< c:forEach begin=0 end=10 step=“2”>…將輸出0,2,4,6,810
使用varStatus屬性:
1.varStatus屬性,用於設置一個javax.servlet.jsp.jstl.core.LoopTagStatus類型的命名變量:
2.它包含以下信息:
count – 當前元素在集合中的序號,從1開始。
index - 記錄當前元素的下標,從0開始。
first - 判斷是否是第一個元素。
Last - 判斷是否是最後一個元素。
choose,when,otherwise標籤:
這幾個標籤共同使用可以實現Java中的if…else語句的功能。
使用c:when必須遵循以下語法規則:
1.< c:when/>和< c:otherwise/>不能單獨使用,它必須位於< c:choose>內。
2.< c:otherwise/>必須位於c:when之後。
用forTokens遍歷一個字符串:
< c:forTokens var=”v” items=”a,b,c,d,e,f” delims=”,”>
< c:out value=”${v}”>< /c:out>
< /c:forTokens>
按,(逗號)對字符串”a,b,c,d,e,f”進行分隔。
URL相關的標籤:
1.< c:import/>包含其他web資源,功能類似與(動態包含)。
< c:import url=“web資源”/>
2.< c:url/>按特定的方式重寫URL。
< c:url value=“/aaa.jsp”/>總是以/開頭,如果只使用value屬性爲直接使用或輸出。
< c:url value=“/…” var=“someVar” scope=“…”/>也可以通過這樣的方式將重寫的url放到某個範圍中,然後再取出來使用。
3.< c:redirect/>負責重定向。
< c:redirect url=“重定向到的資源”/>
在使用< c:redirect時可以帶更多的參數:
< c:redirect url=“/…”>
< c:param name=“someName” value=“someValue”/>
< /c:redirect>
< c:url>
<%@ page language="java" import="java.util.*,cn.hncu.domain.*" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!-- prefix前綴,相當於xml的命名空間 -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>JSTL用法演示2</title>
</head>
<body>
<font color='red' size='6'>c:forEach標籤--for循環</font><br/>
<font style="font-weight: bold;">普通for循環:</font><br/>
普通for循環:<c:forEach begin="0" end="10" var="i" step="2">
${i}
</c:forEach>
<br/>
<font style="font-weight: bold;">增強for循環:</font><br/>
<%
String str[]={"qq","da","sds"};
pageContext.setAttribute("str", str);
%>
1.遍歷數組:<c:forEach items="${str}" var="s">
${s}
</c:forEach><br/>
<%
List list=new ArrayList();
list.add("aaa");
list.add("bbb");
list.add("fff");
list.add("dddd");
pageContext.setAttribute("list", list);
%>
2.遍歷List:<c:forEach items="${list}" var="e">
${e}
</c:forEach><br/>
<%
Map map=new HashMap();
map.put("name", "lisi");
map.put("age", "24");
map.put("addr", "湖南");
pageContext.setAttribute("map", map);
%>
3.遍歷Map:<c:forEach items="${map}" var="m">
${m}:::${m.key},${m.value}<br/>
</c:forEach><!-- m是一個entry -->
<%
List<User> list2=new ArrayList<User>();
list.add(new User("ass",23));
list.add(new User("ffrgr",56));
list.add(new User("fefr",23));
list.add(new User("regrgr",67));
pageContext.setAttribute("list2", list2);
%>
<!-- index爲下標(索引)的序號,count爲計數-->
4.遍歷List2<User>(元素爲值對象的集合):<c:forEach items="${list2}" var="u" varStatus="idx">
${idx.index},${idx.count}:
<c:out value="${u.name}"></c:out>
<c:out value="${u.age}"></c:out><br/>
</c:forEach><br/>
<font color='red' size='6'>c:choose,when,otherwise標籤</font><br/>
<c:set value="65" var="score" scope="session"></c:set>
${score}:<c:choose>
<c:when test="${score>=90}">
優秀<br/>
</c:when>
<c:when test="${score>=80}">
良好<br/>
</c:when>
<c:when test="${score>=70}">
中等<br/>
</c:when>
<c:otherwise>
掛科<br/>
</c:otherwise>
</c:choose>
<font color='red' size='6'>forTokens標籤 </font><br/>
<c:forTokens items="23,sfd,324,sgsdg,3,小明" delims="," var="x">
${x}
</c:forTokens>
<br/><br/>
<font color='red' size='6'>url相關的標籤: url,import,redirect </font><br/>
<font style="font-weight: bold;">重寫url技術,路徑中的斜槓就是項目根目錄:</font><br/>
絕對地址:<c:url value="/show"/>
<a href='<c:url value="/show"/>'>顯示所有用戶信息</a><br/>
<font style="font-weight: bold;">動態包含:</font><c:import url="/jsps/foot.jsp"></c:import>
<br/>
<%--小心,頁面中寫了c:redirect,就會立即重定向到其它頁面。不會再停留在當前頁面
<c:redirect url="/jsps/show.jsp"></c:redirect>
response.sendRedirect("/jsps/show.jsp");
--%>
<font color='red' size='6'>c:remove標籤:移除屬性變量, 和set是相反 </font><br/>
刪除分數score:<c:remove var="score"/><br/>
score:${score}
<br/><br/><br/><br/><br/><br/>
</body>
</html>
重寫URL
package cn.hncu.servlet;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.hncu.domain.User;
public class ShowServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
List<User> users=new ArrayList<User>();
for(int i=0;i<10;i++){
User u=new User("jack"+i,20+i);
users.add(u);
}
request.setAttribute("users", users);
request.getRequestDispatcher("/jsps/show.jsp").forward(request, response);
}
}
<%@ page language="java" import="java.util.*,cn.hncu.domain.*" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!-- prefix前綴,相當於xml的命名空間 -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>顯示用戶信息</title>
<style type="text/css">
table {
border: 1px solid green;
border-collapse: collapse;
}
td{
border: 1px solid green;
}
th{
border: 1px solid green;
}
.a{
background-color: gray;
}
</style>
</head>
<body>
<font color='red' size='6'>url相關的標籤: url---顯示所有用戶信息</font><br/>
<!-- 重寫url技術,路徑中的斜槓就是項目根目錄 -->
<c:if test="${!empty users}">
<table>
<tr><th>姓名</th><th>年齡</th></tr>
<c:forEach items="${users}" var="u" varStatus="idx">
<c:if test="${idx.count%2==0}" var="boo">
<tr class="a">
</c:if>
<c:if test="${!boo}">
<tr>
</c:if>
<td>${u.name}</td><td>age=${u.age}</td></tr>
</c:forEach>
</table>
</c:if>
</body>
</html>
動態包含
<%@ page language="java" import="java.util.*,cn.hncu.domain.*" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!-- prefix前綴,相當於xml的命名空間 -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>JSTL用法演示2</title>
</head>
<body>
<font color='red'>被包含的jsp</font><br/>
<c:url value="/imgs/1.jpg"></c:url><br/>
<img src='<c:url value="/imgs/1.jpg"/>' height="200"/>
</body>
</html>