JSTL标签库

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>
上一篇:Leetcode 145


下一篇:Django orm的优化