一、jstl的简介JavaServerPaege Standard Tag Library ——jsp标准标签库
*作用:使用jstl替代<%%>
*jar包导入,才能使用jstl
jstl1.1 和 1.2版本一样 1.0使用于j2ee1.4时代,在jsp不能直接使用el表达式。 所以一般使用1.1 1.2 版本
*使用方式
-首先在jsp页面引入标签库
<%@ taglib uri="jstl路径" prefix="标签库的别名" %>
-找到standard.jar->META-INF->c.tld 和 fn.tld
c.tld:标准的标签库
fn.tld:函数的标签库
-uri来自*.tld里面的标签uri prefix来自*.tld里面的标签short-name ,可以直接使用快捷键引入
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
-引入之后就可以在jsp里面使用标签库
<c:标签名称></c:标签名称>
---------------------------
<!-- 使用jstl实现这段代码 -->
<c:set var="m" value="5"></c:set>
<c:if test="${m==5 }">
<h2>i=5</h2>
</c:if>
<c:if test="${m!=5 }">
<h3>i!=5</h3>
</c:if>
二、jstl的out标签
*语法:<c:out 属性=“属性值”></c:out>
*属性
value :里面的值,表示向页面输出的内容
default:默认值,如果value里面el表达式没有取到值
escapeXml:是否对当前操作的字符进行转义,默认true 转义
-代码演示
<!-- out 标签的使用 -->
<c:out value="hello jstl"></c:out>
<!-- 取出变量里面的值 -->
<c:set var="city" value="shanghai"></c:set>
${city}
<c:out value="${city1 }" default="beijing"></c:out>
<!-- 输出标签 -->
<c:out value="<a href='#'>aaa</a>" escapeXml="false"></c:out>
三、jstl的set标签
*向域对象里面设置值
<!-- set标签的使用 -->
<!-- 四个域对象scope的值:page reqeust session application -->
<c:set var="ayit" value="001" scope="page"></c:set>
${pageScope.ayit }
*修改域对象里面的对象的属性值
target:使用el表达式获取的对象
property:属性名称
value:修改的值
<!-- 修改域对象里面的对象的属性的值 -->
<%
Person p = new Person();
p.setName("ayit");
p.setSex("man");
pageContext.setAttribute("p", p);
%>
${p.name }
<c:set target="${p }" property="name" value="ay"></c:set>
${p.name }
四、jstl的remove标签
*删除域对象的名称
<!-- jstl的remove标签的使用 -->
<c:set var="ay" value="tom"></c:set>
${ay }
<c:remove var="ay" scope="page"/>
${ay }
五、jstl 的 catch 标签
*获取程序的异常
<!-- jstl的catch标签的使用 -->
<%
try{
int a = 10/0;
}catch(Exception e){
out.print("Exception");
}
%>
<c:catch var="e">
<%
int b=10/0;
%>
</c:catch>
${e.message }
六、jstl的if标签
*进行条件的判断,类似if语句
<!-- 向域对象里面设置值-->
<c:set var="i" value="10"></c:set>
<!-- jstl的if标签的使用 -->
<c:if test="${i>10 }">
<h2>i>10</h2>
</c:if>
<c:if test="${i==10 }">
<h2>i==10</h2>
</c:if>
七、jstl的choose标签
*类似于java的switch语句
<!-- choose标签的使用 -->
<%
int m = 50;
switch(m)
{
case 20:out.print("20");break;
case 10:out.print("10");break;
case 5:out.print("5");break;
default:out.print("No Search");
}
%>
<c:set var="m" value="5"></c:set>
<c:choose>
<c:when test="${m==5 }"><h2>m==5</h2></c:when>
<c:when test="${m==20 }"><h2>m==20</h2></c:when>
<c:when test="${m==10 }"><h2>m==10</h2></c:when>
<c:otherwise><h2>NOSearch</h2></c:otherwise>
</c:choose>
八、jstl的forTokens标签
*分割字符串
<!-- jstl的forTokens标签的使用 -->
<c:forTokens items="a-b-c-e-f" delims="-" var="space">
${space }
</c:forTokens>
九、jstl的forEach标签的使用
*获取域对象里面的数组,集合(list,set,map),多个对象属性的值
<hr color="black" size="7" />
<!-- jstl的forEach标签的使用,操作list,set集合 -->
<%
//list集合放到pageContext里面
List list = new ArrayList();
list.add("aa");
list.add("bb");
pageContext.setAttribute("list",list);
//set集合放到Reqeust里面
Set set = new HashSet();
set.add("11");
set.add("22");
pageContext.setAttribute("set", set,pageContext.REQUEST_SCOPE);
%>
<c:forEach var="li" items="${list }">
${li }
</c:forEach>
<c:forEach var="se" items="${set }">
${se }
</c:forEach>
<hr color="magenta" size="7" />
<!-- 使用jstl的forEach获取map集合 -->
<%
Map map = new HashMap();
map.put("i", "小师妹");
map.put("ii", "大湿兄");
pageContext.setAttribute("map", map);
%>
<c:forEach var="ma" items="${map }">
${ma.key }
${ma.value }
</c:forEach>
<hr color="cyan" size="7" />
<!-- 使用jstlforEach标签获取多个对象的属性的值 -->
<!-- 先把对象存到集合里面,在把集合设置到域对象-->
<%
Date date = new Date();
Person p1 = new Person();
p1.setName("ayit");
p1.setSex("man");
List list1 = new ArrayList();
list1.add(date);
list1.add(p1);
pageContext.setAttribute("list1", list1);
%>
<c:forEach var="list11" items="${list1 }">
${list11.toString() }
</c:forEach>
*forEach其他的操作
<hr color="magenta" size="7" />
<c:forEach var="i" begin="1" end="10" step="2">
${i }
</c:forEach>
<!--1加到100-->
<c:forEach var="s" begin="1" end="100" step="1">
<c:set var="sum" value="${sum+s }"></c:set>
</c:forEach>
${sum }
<!--100到125 step=4 第多少个数是3的倍数变洋红色 其他数变成黄色-->
<c:forEach var="aa" begin="100" end="125" step="2" varStatus="aaa">
<c:if test="${aaa.count%3==0 }">
<font color="magenta">
${aa }
</font>
</c:if>
<c:if test="${aaa.count%3!=0 }">
<font color="yellow">
${aa }
</font>
</c:if>
</c:forEach>
十、jstl的import url redirect param标签
*import:在jsp页面引入其它jsp页面
*url:获取url地址
*redirect:实现重定向操作
*param:传递参数的使用
<hr color="magenta" size="7" />
<!-- 使用import标签进行操作 -->
<c:import context="/day12" url="/jstl/test.jsp"></c:import>
<!-- rediect的标签的使用 -->
<c:redirect context="/day12" url="/jstl/test.jsp">
<c:param name="id" value="ayit1"></c:param>
</c:redirect>
<hr color="gray" size="2"/>
<c:url context="/day12" value="/jstl/test.jsp"></c:url>