一、简介
JSTL:JavaServer Pages Standard Tag Library,提供给Java Web开发人员的一个标准通用的标签函数库,和EL来取代直接在页面上嵌入Java程序的做法,以提高程序的可读性、维护性和方便性
二、JSTL标签库组成
JSTL | 前缀名称 | URI | 示例 |
---|---|---|---|
核心标签库 | c | http://java.sun.com/jsp/jstl/core | <c:out> |
国际化标签 | fmt | http://java.sun.com/jsp/jstl/fmt | <fmt:formatDate> |
数据库标签库 | sql | http://java.sun.com/jsp/jstl/sql | <sql:query> |
XML 标签 | x | http://java.sun.com/jsp/jstl/xml | <x:forEach> |
函数标签 | fun | http://java.sun.com/jsp/jstl/functions | ${fn:indexOf(name,”-“)} |
三、使用
使用时需要在当前JSP页面中声明引用,具体格式如下:
<%@ taglib uri="uri" prefix="prefix" %>
uri:确定使用的标签库具体的名称
prefix:前缀,为当前标签库起的一个别名
四、核心标签库使用
1、<c:set>
作用:给指定的Web域设置值
<c:set var="name" value="jingxin" scope="request"></c:set>
var:属性名称
value:属性的值
scope:确定作用域,page、request、session、application
2、<c:remove>
作用:删除指定名称的Web域
<c:remove var="name"/>
var:要删除的属性名称
注意:将会删除所有作用域的内容
3、<c:out>
作用:将内容输出到页面
<c:out value="${requestScope.name }"></c:out>
<c:out value="<a href='#'>超链接</a>" escapeXml="false"></c:out>
<c:out value="${name1 }" default="没有值"></c:out>
value:指定要输出的内容,可以使用EL表达式
escapeXml:是否转义html中的特殊字符,默认值为true
default:当内容为空时显示默认值
4、<c:if>
作用:标签计算表达式,只有当表达式的值为true,则显示其主体内容
<c:if test="${empty user1}">
<p> user值为null</p>
</c:if>
<c:if test="${1==1 }" var="flag" scope="page">
1==1的结果为真
</c:if>
${pageScope.flag }
test:条件计算,可以使用EL表达式
var:存储test计算结果的变量名称
scpoe:指定var的域
5、<c:choose>
作用:类似于Java的Switch语句
<c:choose>
<c:when test="${!empty user}">
user为空
</c:when>
<c:when test="${!empty user }">
user非空
</c:when>
<c:otherwise>
未处理
</c:otherwise>
</c:choose>
<c:otherwise> 相当于Switch语句中的default
6、<c:forEach>
作用:标签用于对一个集合对象中的元素进行循环迭代操作,或者按指定的次数重复迭代执行标签体中的内容
<c:forEach items="${headerValues}" var="hvs">
${hvs.key } -> <c:forEach items="${hvs.value }" var="val">
${val } ####
</c:forEach>
<br/>
</c:forEach>
<br/>
<c:forEach begin="0" end="10" var="num">
<c:out value="${num }<br/>" escapeXml="false"></c:out>
</c:forEach>
var:当前迭代到的元素保存在page域中时的属性名称
items:确定遍历对象,支持EL表达式
begin:迭代开始的索引值
end:迭代结束的索引值
step:指定迭代的步长
五、示例
使用核心标签库实现九九乘法表
<%@ 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 PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>九九乘法表</h1>
<br/>
<c:forEach begin="1" end="9" step="1" var="i">
<c:forEach begin="1" end="${i}" step="1" var="j">
${j } * ${i } = ${i*j}
</c:forEach>
<br/>
</c:forEach>
</body>
</html>