jstl:JSP标准标签库。主要提供一些标签简化JSP代码。这些标签都有特定的功能。
目录
一、使用jstl标签
1.1 引入依赖包
jstl-1.2.jar
standard-1.1.2.jar
<!-- jsp依赖jar包start -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.1</version>
</dependency>
<!-- jsp依赖jar包end -->
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
<!--jstl标签依赖的jar包start -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
1.2 引入标签库文件
- 在JSP页面使用taglib指令引入标签库文件;
核心标签库:http://java.sun.com/jsp/jstl/core 推荐前缀名:c
格式化标签库:http://java.sun.com/jsp/jstl/fmt 推荐前缀名:fmt
函数标签库:http://java.sun.com/jsp/jstl/functions 推荐前缀名:fn
以引入核心标签库为例
<%@taglib uri="标签库的url" prefix="前缀名" %>
标签库的url自己指定的,可以是任意的url路径。
如果要访问jstl标签库的标签,必须要通过“前缀名”进行访问。而前缀名可以是任意名字。
二、 常用标签的使用
2.1 核心标签
- if标签:条件判断
<c:if test="${逻辑判断条件}"/>
body...
</c:if>
- forEach标签:循环数组或集合
<c:forEach items="${数组或集合}" var="属性名">
${pageCope.属性名}
</c:forEach>
forEach标签遍历数组或集合的时候,它会把遍历出来的每一个元素都保存在pageContext域对象的属性中。属性名就是使用var来指定的。
注意:遍历Map集合的时候,遍历出来的每一个元素是一个Entry对象。
示例:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %>
<!-- 引入jstl的核心标签库 -->
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%
//String[] books = {"三国演义", "西游记", "红楼梦"};
//pageContext.setAttribute("books", books);
//List<String> books = new ArrayList<String>();
//books.add("西游记");
//books.add("海底总动员");
//books.add("海底三万里");
//pageContext.setAttribute("books", books);
Map<String, Integer> books = new HashMap<String, Integer>();
books.put("西游记", 99);
books.put("海底总动员", 199);
books.put("海底三万里", 79);
pageContext.setAttribute("books", books);
%>
<!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>
<!-- 遍历数组或List集合
<c:forEach items="${pageScope.books}" var="book">
${pageScope.book}<br/>
</c:forEach>-->
<!-- 遍历Map集合, 遍历出来每一个元素是一个Map.Entry对象 -->
<c:forEach items="${pageScope.books}" var="book">
<%-- ${pageScope.book.getKey()} --> ${pageScope.book.getValue()}<br/> --%>
${pageScope.book.key} --> ${pageScope.book.value}<br/>
</c:forEach>
</body>
</html>
2.2 格式化标签
日期格式化标签:
<fmt:formatDate value="${日期对象}" pattern="日期模式"/>
日期模式与SimpleDateFormat对象所使用模式一样。
2.3 函数标签
定义格式:
${fn:函数名(参数列表)}
下面列举了一些常用函数:
- toLowerCase():把字符串全部转换小写;
- toUpperCase():把字符串全部转换大写;
- ength():获取字符串的长度;
- substring():截取字符串;
<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%
String name = "ChinaSoft";
pageContext.setAttribute("name", name);
%>
<!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>
<!-- 把name属性的内容全部转换成小写 -->
${fn:toLowerCase(name)} <br/>
<!-- 把name属性的内容全部转换成大写 -->
${fn:toUpperCase(name)} <br/>
<!-- 获取内容的长度 -->
${fn:length(name)} <br/>
<!-- 截取字符串内容,第一个参数就是要截取的字符串,第二个参数代表开始截取的位置,第三个参数代表最后截取的位置 -->
${fn:substring(name, 1, 5)} <br/>
</body>
</html>