1 JSTL标签库(Java Server Pages Standard Tag Library)
JSTL是由Apache的Jakarta小组负责维护的,它是一个不断完善的开放源代码的JSP标准标签库,JSTL包含标签库和EL表达式语言两部分,JSTL标签主要包含核心标签库、格式标签库、SQL标签库、XML标签库和函数标签库共5种标签库。
在使用JSTL标签之前必须在JSP页面的首行使用<%@ talib%>指令定义标签库的位置和访问前缀,各个标签库的定义如下:
核心标签库
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
格式标签库
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
SQL标签库
<%@taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%>
XML标签库
<%@taglib prefix="xml" uri="http://java.sun.com/jsp/jstl/xml"%>
函数标签库
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
2 JSTL核心标签库包括表达式标签、流程控制标签、循环标签和URL操作标签4种标签
表达式标签包括<c:out> <c:set> <c:remove> <c:catch>
流程控制标签包括: <c:if> <c:choose> <c:when>
循环标签包括:<c:forEach> <c:forTokens>
URL操作标签包括:<c:import> <c:redirect> <c:url>
3 JSTL格式标签库包括格式化日期和数字的标签、读取消息资源的标签、国际化的标签
格式化日期和数字的标签:<fmt:formatNumber> <fmt:parseNumber> <fmt:formatDate> <fmt:parseDate> <fmt:setTimeZone> <fmt:timeZone>
读取消息资源的标签:<fmt:message> <fmt:param> <fmt:bundle> <fmt:setBundle>
国际化的标签:<fmt:setlocale> <fmt:requestEncoding>
4 JSTL的XML标签库包括XML核心标签库、XML流程控制标签、XML文件转换
XML核心标签库:<x:parse> <x:out> <x:set>
XML流程控制标签:<x:if> <x:choose> <x:when> <x:otherwise> <x:forEach>
XML文件转换:<x:transform> <x:param>
5 JSTL的SQL标签库包括设置数据源的标签、SQL操作的标签
设置数据源的标签:
SQL操作的标签:<sql:setDataSource> <sql:query> <sql:update> <sql:param> <sql:dateParam> <sql:transaction>
6 JSTL的函数标签库。这个标签库主要用于EL表达式的字符串操作。
<fn:contains> <fn:containsIgnoreCase> <fn:startsWith> <fn:endsWith> <fn:escapeXml> <fn:indexOF> <fn:split> <fn:join> <fn:replace> <fn:trim> <fn:substring> <fn:substringAfter> <fn:substringBefore> <fn:toLowerCase> <fn:toUpperCase> <fn:length>
7 标签库如何使用:
1)tld导入,相关的解析类jar包导入
2)在页面中使用taglib指令,指明uri
3)了解标签库的功能及属性说明
注意:jstl把tld和jar统一放置
8 自定义函数:
作用:可以在el表达式中运用实现一定的功能,对el的功能进行扩展。
使用:
1)借助taglib指令定位tld文件(函数库位置)
2)形如${mytag:函数名(参数列表值)}
开发:
1)自定义一个类,实现相应静态方法
2)写一个函数库描述文件(tld后缀)
Uri:
Function:说明调用者,java类中对应的方法的关系
<function>
<name>multiply</name>
<function-class>com.itcast.Calculator</function-class>
<function-signature>int multiply(int,int)</function-signature>
</function>
Name:对外使用时的名称
Function-class:该方法所在类名
Function-signature:类中该方法的声明,注意:如果引用类型,必须使用类全名
自定义函数可以嵌套:
${calculation:getParameterValue(pageContext.request,calculation:concat("user","name"))}
练习:
1.自定义一个函数systemTime:显示系统时间