1. JSTL:JSP标准标签库。由Sun制定的一套标准自定义标签的规范。实现了Web页面中的通用功能。
1) 版本:JSTL1.1需要支持J2EE1.4的Web容器。还需要添加相应的类库。
JSTL1.2是JavaEE5.0规范的一部分,JavaEE5.0的Web容器都必须提供JSTL1.2的实现。
2. JSTL1.1的安装和使用:下载Apache组织提供的实现包(jstl.jar,standard.jar)并添加到类路径中。
3. JSTL1.1的标签库分类:
1) 核心标签库 http://java.sun.com/jsp/jstl/core c
国际化和格式化 http://java.sun.com/jsp/jstl/fmt fmt
函数库 http://java.sun.com/jsp/jstl/functions fn
数据库操作 http://java.sun.com/jsp/jstl/sql sql
XML操作 http://java.sun.com/jsp/jstl/xml x
4. 核心标签库
1) 通用标签:
★a) <c:out value="值或EL表达式" [default="默认值"] [escapeXml="true|false"]/>
b) <c:set var="变量名" value="值或EL表达式" [scope="page|request|session|application"]/>
c) <c:remove var="变量名" [scope="page|request|session|application"]/>
d) <c:catch var="变量名">....</c:catch>
2) 条件标签:
★a) <c:if test="布尔值或EL表达式" [var="变量名"] [scope="..."]>主体</c:if>
☆b) <c:choose>
<c:when test="布尔值或EL表达式">主体</c:when>
<c:when test="布尔值或EL表达式">主体</c:when>
<c:otherwise>主体</c:otherwise>
</c:choose>
3) 迭代标签:
★a) <c:forEach items="${要遍历的集合}" var="集合中元素的临时名字" varStatus="迭代状态对象变量">
${迭代状态变量.count}, ${临时名字}
</c:forEach>
b) <c:forTokens items="要分隔的字符串" var="临时名" delims="分隔符列表">
${临时名}
</c:forTokens>
4) 与URL相关的标签:
a) <c:import url="目标URL" [context=".."] [var=""]/> 把目标路径的资源包含到当前页面
b) <c:redirect url="目标URL" [context=".."] [var=""]/> 重定向,但浏览器地址栏不出现新地址
☆c) <c:url value="要进行URL重写的URL" [var="变量名"] [scope=".."]>
[<c:param name="参数名" value="参数值"/>]
</c:url>
Servlet: String value = URLDecode.decode(request.getParameter("参数名"), "utf-8");
5. 国际化和格式化标签库:支持I18N
1) <fmt:setBundle baseName="资源文件的基本名" [var="变量名"] [scope="..."]/> //根据本地环境信息绑定资源文件到指定作用域,默认存放在pageContext
2) <fmt:bundle baseName="资源文件的基本名">主体</fmt> //根据本地环境信息绑定资源文件,只能在标签主体中使用
3) <fmt:message key="消息键" bundle="资源对象变量名" [var=".."]>主体</fmt:message> //从指定资源信息对象中取出指定键对应的值
<fmt:param value="值"/> 给消息键对应的值中的占位符传值
4) <fmt:setLocale value="代表本地环境信息的字符串" scope=".."/>
5) 资源文件的命名规范: 基本名_语言代号_地区代号.properties。默认使用的资源文件为:基本名.properties
本地环境信息的命名规范:语言代号_地区代号。语言代号为两个小写字母,地区代号为两位大写字母。
如:zh_CN、zh_TW、zh_HK、en_US
☆6) <fmt:formatNumber value="字符串或数值类型"
type="number|currency|percent"
pattern="数字模式串"
var="变量名"
scope=".."/>
☆7) <fmt:formatDate value="java.util.Date类型对象"
type="date|time|both"
dateStyle="default|short|medium|long|full"
timeStyle="default|short|medium|long|full"
pattern="日期时间模式串"
var="变量名"
scope=".."/>
6. 函数标签库:只通过在EL表达式中使用,如: ${fn:length("string")}
1) fn:contains(string, substring)
2) fn:containsIgnoreCase(string, substring)
3) fn:endsWith(string, substring)
4) fn:escapeXml(str)
5) fn:indexOf(str, str2)
6) fn:join(数组, "连接符")
☆7) fn:length(数组或集合的长度)
8) fn:replace(string, oldStr,newStr)
9) fn:split(string "分隔符")
10)fn:startsWith()
11)fn:substring(string, start, end)
12)fn:substringAfter()
13)fn:substringBefore()
14)fn:toLowerCase()
15)fn:toUpperCase()
16)fn:trim()