迭代标签(重要内容)
< 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>