JSTL是Sun公司为了解决市面上出现了很多功能相同标签,令网页制作者无从选择,而制定的一套标准标签库(JavaServer Pages Standard Tag Library)。
JSTL标准标签库是由5个不同功能的标签库共同组成的:
Core是一个核心标签库,它包含了实现Web应用中通用操作的标签;
I18N是一个国际化/格式化标签库,它包含实现Web应用程序的国际化标签和格式化标签;
SQL是一个数据库标签库,它包含了用于访问数据库和对数据库中的数据进行操作的标签;
XML是一个操作XML文档的标签库,它包含对XML文档中的数据进行操作的标签;
Functions是一个函数标签库,它提供了一套自定义EL函数,包含了JSP网页制作者经常要用到的字符串操作。
将jstl.jar和standard.jar两个文件复制到chapter07项目的lib目录下。
建立一个test.jsp文件,使用taglib指令引入Core标签库,使用<c:out>标签:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jstl</title>
</head>
<body>
<c:out value="大数据------javaweb"></c:out>
<br/>==============================<br/>
<c:out value="${param.username }" default="dashuju" escapeXml="false"></c:out>
<br/>==============================<br/>
<c:out value="${param.username }" escapeXml="true">大数据</c:out>
</body>
</html>
建立一个c_if.jsp文件,对test(设置逻辑表达式)、var(指定逻辑表达式中变量的名字)、scope(指定var变量的作用范围,默认值为page)进行编写:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%--request.setAttribute("key",1); --%>
<c:set var="key" value="8" scope="request" property="key1"></c:set>
${requestScope.key }<br/>
<c:if test="true">云裳</c:if><br/>
<c:if test="false">明月潭水荷花</c:if><br/>
<c:if test="true">烈日清风绿阴</c:if><br/>
</body>
</html>
建立一个c_choose.jsp文件使用<c:choose>标签(必须与<c:when>标签、<c:otherwise>标签一起使用)、<c:when>标签、<c:otherwise>标签:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<title>c:choose 标签实例</title>
</head>
<body>
<c:set var="salary" scope="session" value="${200*2}"/>
<p>你的生活费为 : <c:out value="${salary}"/></p>
<c:choose>
<c:when test="${salary <= 0}">
太惨了,同情你一秒钟。
</c:when>
<c:when test="${salary > 1000}">
还不错,这个月还能过活......
</c:when>
<c:otherwise>
唉!后面半个月只能吃土了。
</c:otherwise>
</c:choose>
</body>
</html>
建立一个c_foreach.jsp文件,使用<c:forEach>标签,编译var属性(指定将当前迭代到的元素保存到page域中的名称)、items属性(指定将要迭代的集合对象)、varStatus属性(指定当前迭代状态信息的对象保存到page域中的名称)、begin属性(指定从集合中第几个元素开始进行迭代,begin的索引值从0开始)、step属性(指定迭代的步长,即迭代因子的热量)、count(表示元素在集合中的序号,从1开始计数)、index(表示当前元素在集合中的索引,从0开始计数)、first(表示当前是否为集合中的第一个元素)、last(表示当前是否为集合中的最后一个元素):
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
String[] fruits={"apple","banana","watermalen","sugercame"};
request.setAttribute("a", fruits);
%>
string中的元素:
<c:forEach var="xx" items="${a }">
${name}<br />
</c:forEach>
<%
Map usermap=new HashMap();
userMap.put("tom","13");
userMap.put("huihui","14");
userMap.put("hongyao","52");
request.setAttribute("map", usermap);
%>
<hr />
hasmap中集合的元素:
<c:forEach var="m" items="${map }">
key:${m.key }------------value:${m.value }<br />
</c:forEach>
<hr />
colorlist集合(指定迭代范围和步长)<br />
<%
List color=new ArrayList();
color.add("red");
color.add("yellow");
color.add("blue");
color.add("green");
color.add("black");
color.add("gray");
request.setAttribute("list", color);
%>
<c:forEach var="aa" items="${list }" begin="2" end="5" step="1">
${aa} <br />
</c:forEach>
<hr />
<%
List user=new ArrayList();
user.add("tanyu");
user.add("moshuidianbai");
user.add("momobaiqing");
request.setAttribute("users", user);
%>
<table border="1">
<tr>
<td>序号</td>
<td>索引序号</td>
<td>是否是第一个元素</td>
<td>是否是最后一个元素</td>
<td> 元素的值</td>
</tr>
<!-- -varstatus属性 -->
<c:forEach var="bb" items="${users }" varStatus="v">
<tr>
<td> ${v.count }</td>
<td> ${v.index }</td>
<td> ${v.first }</td>
<td> ${v.last }</td>
<td> ${bb }</td>
</tr>
</c:forEach>
</body>
</html>
建立一个c_url.jsp文件,使用<C:param>标签和<c:url>标签,编译name属性(指定参数的名称)、value属性(指定参数的值,当使用<c:param>标签为一个URL地址附加参数时,它会自动对参数值进行URL编码)、value属性(指定构造的URL)、context属性(指定导入同一个服务器下其他Web应用的名称)、var属性(指定将构造的URL地址保存到域对象的属性名称)、scope属性(指定将构造好的URL保存到域对象中):
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
使用绝对路径:<br/>
<c:url var="absouLateURL" value="http://localhost:8080/chapter07/login.html">
<c:param name="username" value="humuling"></c:param>
<c:param name="country" value="cannada"></c:param>
</c:url>
<a href="${absouLateURL }">绝对路径登录页面</a>
<hr />
使用相对路径:<br/>
<c:url var="risistURL" value="login.html?username=huihui&country=china"></c:url>
<a href="${risistURL }">相对路径登录页面</a>
</body>
</html>