jstl又称jsp的标准标签库:C标签*,fmt标签,fn标签,sql标签,xml标签,这里重点讲C标签
目的:El和jstl都是为了在jsp中消灭Java代码
注意:在<!DOCTYPE html >标签之上写
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
1.c:out标签
作用:用来将作用域对象中的数据输出到页面中
例:
<%
request.setAttribute("weather", "今天天气怎么样?");
%>
<c:out value="${weather}" default="出门自己看!"></c:out>
即: value非空,执行value,value为空时,执行default,
2.c:set标签
作用一:用于将数据放入到作用域对象中,默认放入到最小的作用域中
例一:
<%
request.setAttribute("weather", "今天天气怎么样?");
%>
<c:set var="name" value="zhangsan"></c:set>
即:默认将数据放入到pageContext中,所以用${requestScope.name}无法获取到值
例二:
<%
request.setAttribute("weather", "今天天气怎么样?");
%>
<c:set var="name" value="zhangsan" scope="request"></c:set>
${requestScope.name}
利用 scope="request"设置最小作用域为request,则${requestScope.name}可获取其值
作用二:c:set还可以在标签中间添加html代码作为标签value的属性值
如例三:
<c:set var="mytable">
<%-- border-collapse:collapse 为设置边框收合--%>
<table border="1" style="border-collapse:collapse ">
<tr><td>1.1</td><td>1.2</td></tr>
<tr><td>2.1</td><td>2.2</td></tr>
</table>
</c:set>
可由${mytable}来获取内容
3.c:remove标签
作用:将指定key从指定作用域中删除,也可以通过scope属性指定作用域
例如:
<%
pageContext.setAttribute("scope", "pageContext");
request.setAttribute("scope", "request");
session.setAttribute("scope", "session");
application.setAttribute("scope", "application");
%>
<c:remove var="scope" />删除key为scope的作用域,即上面四个全被删除
<c:remove var="scope" scope="page"/>只删除pageContext作用域,可由${scope}获取最小作用域内容
4.c:if标签
作用: 做一重判断
例如:
<%
request.setAttribute("score", 80);
%>
<c:if test="${score >= 90}" var="flag">
成绩优秀!
</c:if>
<c:if test="${!flag}">
成绩不优秀!
</c:if>
当满足条件则执行相应的语句
5.c:choose,c:when,c:otherwise组合标签
作用: 可以表示多重判断
例如:
<%
request.setAttribute("score", 80);
%>
<c:choose>
<c:when test="${score >=90}">成绩优秀</c:when>
<c:when test="${score >=80}">成绩良好</c:when>
<c:when test="${score >=60}">成绩及格</c:when>
<c:otherwise>成绩不及格</c:otherwise>
</c:choose>
当满足条件则执行相应的语句
注意:1.c:otherwise不能出现在c:when之上
2.c:otherwise和c:when之间,c:otherwise和c:otherwise之间不能出现其它字符
6.c:forEach
作用一:遍历数据
例如 <c:forEach begin="1" end="10" step="2" var="num" varStatus="statu">
${num}---${statu.first}---${statu.last}---${statu.index}---${statu.count} <br/>
</c:forEach>
解析:
begin:遍历起始位置
end:遍历的末尾位置
step:每次遍历的步长,默认为1
var:用于做遍历的变量
varStatus:当前遍历的变量的状态
statu.first:判断该数字是不是第一个
statu.last:判读该数字是不是最后一个
statu.index:表示当前数字的下标
statu.count:表示当前第几次循环
作用二:在items里填入一个可以遍历的结构
例如:
<%
List list = new ArrayList();
list.add(new User("zhangsan", "张三"));
list.add(new User("lisi", "李四"));
list.add(new User("wangwu", "王五"));
list.add(new User("zhaoliu", "赵六"));
request.setAttribute("person", list);
%>
<c:forEach items="${person}" var="p">
${p.username}---${p.realname}
<br>
</c:forEach>
或更高级一点的
<table border="1" style="border-collapse:collapse">
<tr><td>用户名</td><td>真实姓名</td></tr>
<c:forEach items="${person}" var="p">
<tr><td>${p.username}</td><td>${p.realname}</td></tr>
</c:forEach>
</table>
可遍历List中的内容
7.c:import
作用:将一个URL中的内容导入本页面中一起显示
例如:<c:import url="http://www.baidu.com"></c:import>
8.c:redirect
作用:重定向
例如:<c:redirect url="http://www.baidu.com"></c:redirect>