1.JSTL标签库概述
JSTL全称:JavaServerPages Standard Tag Library
由JCP(Java Web 开发人员一个标准通用的标签函数库)
可以和EL配合来取代传统的直接在页面上嵌入Java程序(Scripting)的做法,以提高程序的可读性,可维护性,方便性
2.jstl引入
在JavaEE5及其以上的版本,已经默认包含了jstl标签库,可以直接使用,在通过指令确定引入的标签库名称
<%@taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%> uri地址 prefix简称
3.扩展:命名空间或名称空间的概述
在通过taglib指令引入标签的时候,需要指定一个名称空间URN,这个URN中的内容看似是一个地址,但实际上表示的是一个名字。书写形式为地址的原因是希望做到每一个使用标签库规范的额人都可以有唯一一份规范,避免两两之间相互重复。
4.jstl标签
a.c:set 设置或修改值的标签
i.设置或修改域中的值
ii.设置或修改map中的值
b.删除指定域中的数据
c.c:if 判断结构
d.c:choose 选择判断结构
e:c:foreach
f:c:catch 捕获异常
g.c:forTokens切割字符串
案例:
<%@page import="cn.tedu.domain.Person"%>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML">
<html>
<head>
</head>
<body>
<h3>c:set设置域中的值</h3>
<c:set scope="page" var="a" value="zcv"></c:set>
<c:set scope="request" var="a" value="123"></c:set>
<c:set scope="session" var="a" value="789"></c:set>
<c:set scope="application" var="a" value="gsdg"></c:set>
${requestScope.a }
${pageScope.a }
${sessionScope.a }
${applicationScope.a }
${a }
<h4>修改域中的值</h4>
<c:set scope="page" var="a" value="000"></c:set>
${pageScope.a}
<h3>c:set设置map中的值</h3>
<%
Map<String,String> map=new HashMap<String,String>();
pageContext.setAttribute("map", map);
%>
<c:set target="${map }" property="name" value="小兰兰"></c:set>
${map }
${map.name }
<h4>修改map中的值</h4>
<c:set target="${map }" property="name" value="123"></c:set>
${map.name }
<h3>javabean中值的修改</h3>
<%Person p1=new Person("小丽",19,"女");
pageContext.setAttribute("p1", p1);
%>
${p1.name }
<c:set target="${p1 }" property="name" value="nn"></c:set>
${p1.name }
<!-- javabean中如果没有set方法提供,不能设置新属性 -->
<%-- <c:set target="${p1 }" property="addr" value="sa"></c:set>
${p1.addr } --%>
<h3>删除指定域中的数据</h3>
<c:set scope="page" var="name" value="zcv"></c:set>
<c:set scope="request" var="name" value="123"></c:set>
<c:set scope="session" var="name" value="789"></c:set>
<c:set scope="application" var="name" value="gsdg"></c:set>
${requestScope.name }
${pageScope.name }
${sessionScope.name }
${applicationScope.name }
${name }
<hr>
<c:remove var="name" scope="request"/>
${requestScope.name }
${pageScope.name }
${sessionScope.name }
${applicationScope.name }
${name }
<hr>
<!-- 如果不指定删除哪一个域,将全部域中对应的属性删除 -->
<c:remove var="name"/>
${requestScope.name }
${pageScope.name }
${sessionScope.name }
${applicationScope.name }
${name }
<h3>c:if判断结构</h3>
<c:set scope="request" var="num" value="123"></c:set>
<c:if test="${num>100 }" var="flag1">num大于100</c:if>
<c:if test="${num<100 }" var="flag2">num小于100</c:if>
${flag1 }
${flag2 }
<h3>c:choose 选择判断结构</h3>
<c:choose >
<c:when test="${num<100 }">num小于100</c:when>
<c:when test="${num<1000 }">num小于1000</c:when>
<c:when test="${num<10000 }">num小于10000</c:when>
<c:otherwise>Num大于10000</c:otherwise>
</c:choose>
<h3>c:foreach 循环结构</h3>
<%-- <c:forEach begin="0" end="100" step="2" var="e" varStatus="stat">
${stat.count}${e}
</c:forEach> --%>
<!--0-100能够被3整除的偶数 -->
<c:forEach begin="0" end="100" step="2" var="e" varStatus="s">
<%-- <c:if test="${e%3==0 }">
${e }
</c:if> --%>
<c:if test="${s.count%3==0 }">
<font color='red'>${e }</font>
</c:if>
<c:if test="${s.count%3!=0}">
<font color='blue'>${e }</font>
</c:if>
</c:forEach>
<h4>遍历数据结构</h4>
<%
List list=new LinkedList();
list.add("dsf");
list.add(123);
list.add(true);
pageContext.setAttribute("l", list);
%>
<c:forEach items="${l }" var="l" step="2">
${l }
</c:forEach>
<h3>捕获异常</h3>
<c:catch var="ca">
<%
String str=null;
str.toLowerCase();
%>
</c:catch>
${ca }
<h3>c:forTokens切割字符串</h3>
<c:forTokens items="www.et.gb" delims="." var="v">
${v }
</c:forTokens>
</body>
</html>
修改EasyMall项目: