JSTL的全名为JavaServerPages Standard Tag Library,即JSP标准标签库(网上下载完成后的包为jakarta-taglibs-standard-current.zip),其主要功能是为JSP Web开发人员提供一个标准通用的标签库。开发人员可以利用这些标签取代JSP页面上的Java代码,从而提高程序的可读性,降低程序的维护难度。
JSTL简介
JSTL标签是基于JSP页面的,这些标签可以插入JSP代码中,在本质上JSTL也就是提前定义好的一组标签。这些标签封装了不同的功能,当在页面上调用这个标签的时候,等于就是调用了封装起来的功能,这些标签可以在页面上输出内容、查询数据库、处理XML文档等,JSTL的标签库基本上可以分为五类,包括JSTL核心库、数据库标签库、XML操作标签库、国际化和格式标签库以及函数标签库。其中JSTL核心库包括基本的输入输出、流程控制、循环等功能;数据库标签库主要包括基本的数据库操作功能;XML操作标签库用来处理XML文档;国际化和格式标签库主要功能是处理国际化和文字格式的标准化。
利用这些标签,基本上可以实现在页面上避免使用Java代码,而且这些标签的功能是非常强大的,仅仅引入一个简单的标签,就可以实现以前在JSP页面上一大段Java才能实现的功能。这不仅使开发人员避免了重复编码,而且也有利于程序的修改和维护。
常用标签
输出标签<c:out/>:
代码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!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><c:out value="<c:out/>标签示例"/></title> </head> <body> <font size="3"> 下面是一个字符串输出示例:<br> <c:out value="JSTL标签测试"/><br> 下面是一个表达式值的输出示例:<br> <c:out value="${10/5}"/> </font> </body> </html>
运行结果
判断标签<c:if/>与<c:choose/>,<c:when/>,<c:otherwise>:
代码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title><c:out value="<c:if/>标签示例"/></title> </head> <body> <font size="3"> <c:set var="number" value="2" scope="request"/> <c:if test="${number==1}"> <c:out value="给定数字的值为1"></c:out> </c:if> <c:if test="${number==2}"> <c:out value="给定数字的值为2"></c:out> </c:if> <c:if test="${number==3}"> <c:out value="给定数字的值为3"></c:out> </c:if> </font> </body> </html>
运行结果
代码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title><c:out value="<c:choose/>标签示例"/></title> </head> <body> <font size="3"> <c:out value="<c:choose/>标签示例"/><br> <c:set var="IDE" value="Eclipse"/> <c:choose> <c:when test="${IDE=='JBuilder'}"> <c:out value="你使用的开发工具为JBuilder"/> </c:when> <c:when test="${IDE=='Eclipse'}"> <c:out value="你使用的开发工具为Eclipse"/> </c:when> <c:when test="${IDE=='JCreator'}"> <c:out value="你使用的开发工具为JCreator"/> </c:when> <c:otherwise> <c:out value="你是高手!用记事本写代码?"/> </c:otherwise> </c:choose> </font> </body> </html>
运行结果
循环标签<c:forEach/>:
代码
<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title><c:out value="forEach标签示例"/></title> </head> <body> <font size="3"> <% ArrayList list = new ArrayList(); for(int i=0;i<5;i++) { list.add(i,(i+1)*15); } request.setAttribute("list",list); %> <c:out value="forEach标签示例:"/><br> <c:forEach items="${list}" var="current" varStatus="status"> <c:out value="序号:"/> <c:out value="${status.count}"/> <c:out value="值:"/> <c:out value="${current}"/><br> </c:forEach> </font> </body> </html>
运行结果
JSTL所想
JSP当中嵌套Java代码是为了开发界面方便,如果不是用JSP只能很麻烦的输出HTML元素;而JSTL替代Java代码是为了Java代码开发方便,可以理解为一种形式上的解耦(又将Java代码与HTML元素分开)。前一种是将两项技术硬生生的结合,后者是将它们有机的结合,很明显有机结合更适合高效开发。最终的结果都是提高代码的复用性,将通用性的代码写到标签库中,在下次使用的时候可以直接拿过来使用,面向对象思想的绝佳体现!