JSP æ ‡å‡†æ ‡ç¾åº“(JSTL)
JSPæ ‡å‡†æ ‡ç¾åº“(JSTL)是一个JSPæ ‡ç¾é›†å�ˆï¼Œå®ƒå°�装了JSPåº”ç”¨çš„é€šç”¨æ ¸å¿ƒåŠŸèƒ½ã€‚
JSTL支æŒ�通用的ã€�结构化的任务,比如è¿ä»£ï¼Œæ�¡ä»¶åˆ¤æ–,XML文档æ“�ä½œï¼Œå›½é™…åŒ–æ ‡ç¾ï¼ŒSQLæ ‡ç¾ã€‚ 除了这些,它还æ��供了一个框架æ�¥ä½¿ç”¨é›†æˆ�JSTLçš„è‡ªå®šä¹‰æ ‡ç¾ã€‚
æ ¹æ�®JSTLæ ‡ç¾æ‰€æ��供的功能,å�¯ä»¥å°†å…¶åˆ†ä¸º5个类别。
- æ ¸å¿ƒæ ‡ç¾
- æ ¼å¼�åŒ–æ ‡ç¾
- SQL æ ‡ç¾
- XML æ ‡ç¾
- JSTL 函数
JSTL 库安装
Apache Tomcat安装JSTL 库æ¥éª¤å¦‚下:
从Apacheçš„æ ‡å‡†æ ‡ç¾åº“ä¸ä¸‹è½½çš„二进包(jakarta-taglibs-standard-current.zip)。
- 官方下载地�:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/
- 本站下载地�:jakarta-taglibs-standard-1.1.2.zip
下载 jakarta-taglibs-standard-1.1.2.zip 包并解压,将 jakarta-taglibs-standard-1.1.2/lib/ 下的两个 jar 文件:standard.jar 和 jstl.jar 文件拷�到 /WEB-INF/lib/ 下。
将 tld 下的需�引入的 tld 文件�制到 WEB-INF 目录下。
接下æ�¥æˆ‘们在 web.xml æ–‡ä»¶ä¸æ·»åР以䏋é…�置:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<jsp-config>
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/fmt</taglib-uri>
<taglib-location>/WEB-INF/fmt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/fmt-rt</taglib-uri>
<taglib-location>/WEB-INF/fmt-rt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/c.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/core-rt</taglib-uri>
<taglib-location>/WEB-INF/c-rt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/sql</taglib-uri>
<taglib-location>/WEB-INF/sql.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/sql-rt</taglib-uri>
<taglib-location>/WEB-INF/sql-rt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/x</taglib-uri>
<taglib-location>/WEB-INF/x.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/x-rt</taglib-uri>
<taglib-location>/WEB-INF/x-rt.tld</taglib-location>
</taglib>
</jsp-config>
</web-app>
ä½¿ç”¨ä»»ä½•åº“ï¼Œä½ å¿…é¡»åœ¨æ¯�个 JSP 文件ä¸çš„头部包å�« <taglib> æ ‡ç¾ã€‚
æ ¸å¿ƒæ ‡ç¾
æ ¸å¿ƒæ ‡ç¾æ˜¯æœ€å¸¸ç”¨çš„ JSTLæ ‡ç¾ã€‚å¼•ç”¨æ ¸å¿ƒæ ‡ç¾åº“çš„è¯æ³•如下:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
| æ ‡ç¾ | æ��è¿° |
|---|---|
| <c:out> | 用于在JSP䏿˜¾ç¤ºæ•°æ�®ï¼Œå°±åƒ�<%= ... > |
| <c:set> | 用于ä¿�å˜æ•°æ�® |
| <c:remove> | ç”¨äºŽåˆ é™¤æ•°æ�® |
| <c:catch> | 用æ�¥å¤„ç�†äº§ç”Ÿé”™è¯¯çš„异常状况,并且将错误信æ�¯å‚¨å˜èµ·æ�¥ |
| <c:if> | 与我们在一般程åº�ä¸ç”¨çš„ifä¸€æ · |
| <c:choose> | 本身å�ªå½“å�š<c:when>å’Œ<c:otherwise>çš„çˆ¶æ ‡ç¾ |
| <c:when> | <c:choose>çš„å�æ ‡ç¾ï¼Œç”¨æ�¥åˆ¤æ–æ�¡ä»¶æ˜¯å�¦æˆ�ç«‹ |
| <c:otherwise> | <c:choose>çš„å�æ ‡ç¾ï¼ŒæŽ¥åœ¨<c:when>æ ‡ç¾å�Žï¼Œå½“<c:when>æ ‡ç¾åˆ¤æ–为false时被执行 |
| <c:import> | 检索一个�对或相对 URL,然�将其内容暴露给页� |
| <c:forEach> | 基础è¿ä»£æ ‡ç¾ï¼ŒæŽ¥å�—多ç§�集å�ˆç±»åž‹ |
| <c:forTokens> | æ ¹æ�®æŒ‡å®šçš„分隔符æ�¥åˆ†éš”内容并è¿ä»£è¾“出 |
| <c:param> | 用æ�¥ç»™åŒ…å�«æˆ–é‡�定å�‘的页é�¢ä¼ 递å�‚æ•° |
| <c:redirect> | �定�至一个新的URL. |
| <c:url> | 使用å�¯é€‰çš„æŸ¥è¯¢å�‚æ•°æ�¥åˆ›é€ 一个URL |
æ ¼å¼�åŒ–æ ‡ç¾
JSTLæ ¼å¼�åŒ–æ ‡ç¾ç”¨æ�¥æ ¼å¼�化并输出文本ã€�日期ã€�æ—¶é—´ã€�æ•°å—ã€‚å¼•ç”¨æ ¼å¼�åŒ–æ ‡ç¾åº“çš„è¯æ³•如下:
<%@ taglib prefix="fmt"
uri="http://java.sun.com/jsp/jstl/fmt" %>
| æ ‡ç¾ | æ��è¿° |
|---|---|
| <fmt:formatNumber> | ä½¿ç”¨æŒ‡å®šçš„æ ¼å¼�æˆ–ç²¾åº¦æ ¼å¼�åŒ–æ•°å— |
| <fmt:parseNumber> | è§£æž�一个代表ç�€æ•°å—,货å¸�或百分比的å—符串 |
| <fmt:formatDate> | ä½¿ç”¨æŒ‡å®šçš„é£Žæ ¼æˆ–æ¨¡å¼�æ ¼å¼�化日期和时间 |
| <fmt:parseDate> | è§£æž�一个代表ç�€æ—¥æœŸæˆ–æ—¶é—´çš„å—符串 |
| <fmt:bundle> | 绑定资� |
| <fmt:setLocale> | 指定地区 |
| <fmt:setBundle> | 绑定资� |
| <fmt:timeZone> | 指定时区 |
| <fmt:setTimeZone> | 指定时区 |
| <fmt:message> | 显示资��置文件信� |
| <fmt:requestEncoding> | 设置requestçš„å—符编ç � |
SQLæ ‡ç¾
JSTL SQLæ ‡ç¾åº“æ��供了与关系型数æ�®åº“(Oracle,MySQL,SQL Serverç‰ç‰ï¼‰è¿›è¡Œäº¤äº’çš„æ ‡ç¾ã€‚引用SQLæ ‡ç¾åº“çš„è¯æ³•如下:
<%@ taglib prefix="sql"
uri="http://java.sun.com/jsp/jstl/sql" %>
| æ ‡ç¾ | æ��è¿° |
|---|---|
| <sql:setDataSource> | 指定数�� |
| <sql:query> | è¿�行SQL查询è¯å�¥ |
| <sql:update> | è¿�行SQLæ›´æ–°è¯å�¥ |
| <sql:param> | å°†SQLè¯å�¥ä¸çš„å�‚数设为指定值 |
| <sql:dateParam> | å°†SQLè¯å�¥ä¸çš„æ—¥æœŸå�‚数设为指定的java.util.Date 对象值 |
| <sql:transaction> | 在共享数æ�®åº“è¿žæŽ¥ä¸æ��供嵌套的数æ�®åº“è¡Œä¸ºå…ƒç´ ï¼Œå°†æ‰€æœ‰è¯å�¥ä»¥ä¸€ä¸ªäº‹åŠ¡çš„å½¢å¼�æ�¥è¿�行 |
XML æ ‡ç¾
JSTL XMLæ ‡ç¾åº“æ��供了创建和æ“�作XMLæ–‡æ¡£çš„æ ‡ç¾ã€‚引用XMLæ ‡ç¾åº“çš„è¯æ³•如下:
<%@ taglib prefix="x"
uri="http://java.sun.com/jsp/jstl/xml" %>
在使用xmlæ ‡ç¾å‰�ï¼Œä½ å¿…é¡»å°†XML å’Œ XPath 的相关包拷è´�è‡³ä½ çš„<Tomcat 安装目录>\lib下:
- XercesImpl.jar
下载地�: http://www.apache.org/dist/xerces/j/
- xalan.jar
下载地�: http://xml.apache.org/xalan-j/index.html
| æ ‡ç¾ | æ��è¿° |
|---|---|
| <x:out> | 与<%= ... >,类似,�过�用于XPath表达� |
| <x:parse> | 解� XML 数� |
| <x:set> | 设置XPath表达� |
| <x:if> | 判æ–XPath表达å¼�,若为真,则执行本体ä¸çš„内容,å�¦åˆ™è·³è¿‡æœ¬ä½“ |
| <x:forEach> | è¿ä»£XML文档ä¸çš„节点 |
| <x:choose> | <x:when>å’Œ<x:otherwise>çš„çˆ¶æ ‡ç¾ |
| <x:when> | <x:choose>çš„å�æ ‡ç¾ï¼Œç”¨æ�¥è¿›è¡Œæ�¡ä»¶åˆ¤æ– |
| <x:otherwise> | <x:choose>çš„å�æ ‡ç¾ï¼Œå½“<x:when>判æ–为false时被执行 |
| <x:transform> | å°†XSL转æ�¢åº”用在XMLæ–‡æ¡£ä¸ |
| <x:param> | 与<x:transform>å…±å�Œä½¿ç”¨ï¼Œç”¨äºŽè®¾ç½®XSLæ ·å¼�表 |
JSTL函数
JSTL包å�«ä¸€ç³»åˆ—æ ‡å‡†å‡½æ•°ï¼Œå¤§éƒ¨åˆ†æ˜¯é€šç”¨çš„å—符串处ç�†å‡½æ•°ã€‚引用JSTLå‡½æ•°åº“çš„è¯æ³•如下:
<%@ taglib prefix="fn"
uri="http://java.sun.com/jsp/jstl/functions" %>
| 函数 | �述 |
|---|---|
| fn:contains() | 测试输入的å—符串是å�¦åŒ…å�«æŒ‡å®šçš„å�串 |
| fn:containsIgnoreCase() | 测试输入的å—符串是å�¦åŒ…å�«æŒ‡å®šçš„å�串,大å°�写ä¸�æ•�感 |
| fn:endsWith() | 测试输入的å—符串是å�¦ä»¥æŒ‡å®šçš„å�Žç¼€ç»“å°¾ |
| fn:escapeXml() | 跳过å�¯ä»¥ä½œä¸ºXMLæ ‡è®°çš„å—符 |
| fn:indexOf() | 返回指定å—符串在输入å—符串ä¸å‡ºçŽ°çš„ä½�ç½® |
| fn:join() | 将数组ä¸çš„å…ƒç´ å�ˆæˆ�一个å—符串然å�Žè¾“出 |
| fn:length() | 返回å—符串长度 |
| fn:replace() | 将输入å—ç¬¦ä¸²ä¸æŒ‡å®šçš„ä½�置替æ�¢ä¸ºæŒ‡å®šçš„å—符串然å�Žè¿”回 |
| fn:split() | å°†å—符串用指定的分隔符分隔然å�Žç»„æˆ�一个å�å—符串数组并返回 |
| fn:startsWith() | 测试输入å—符串是å�¦ä»¥æŒ‡å®šçš„å‰�缀开始 |
| fn:substring() | 返回å—符串的å�集 |
| fn:substringAfter() | 返回å—符串在指定å�串之å�Žçš„å�集 |
| fn:substringBefore() | 返回å—符串在指定å�串之å‰�çš„å�集 |
| fn:toLowerCase() | å°†å—符串ä¸çš„å—符转为å°�写 |
| fn:toUpperCase() | å°†å—符串ä¸çš„å—符转为大写 |
| fn:trim() | 移除首尾的空白符 |
stackoverflow
hgn***@163.com
�考地�
JSTL 1.1 与 JSTL 1.2 之间的区别?如何下载 JSTL 1.2?
JSTL 1.2 ä¸ä¸�è¦�求 standard.jar 包。
您å�¯ä»¥åœ¨ Maven ä¸å¤®ä»“åº“ä¸æ‰¾åˆ°å®ƒä»¬ã€‚
http://repo2.maven.org/maven2/javax/servlet/jstl/
http://repo2.maven.org/maven2/taglibs/standard/
由于
JSTL 1.1å·²ç»�过时,Apacheå·²å°†å…¶ç½®äºŽå˜æ¡£ä¸ã€‚选择jakarta-taglibs-standard-current.zip文件。但是,如果您æ£åœ¨è¿�行Servlet 2.5兼容容器并且web.xml声明为至少Servlet 2.5,那么您应该能够使用新的JSTL 1.2。需è¦�注æ„�的是JSTL 1.2并没有è¦�求standard.jar。stackoverflow
hgn***@163.com
�考地�