- 浏览: 30839 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (47)
- MyEclipse集成本地Tomcat (2)
- JSP指令元素 (1)
- JSP动作元素 (1)
- JSP内置对象 (1)
- JSP和JavaBean (1)
- EL表达式 (1)
- JSTL标签库 (1)
- Servlet开发基础 (1)
- Filter开发 (1)
- Listener开发 (1)
- DAO设计模式 (1)
- MVC (1)
- JAVA面试智力题 (1)
- ORACLE 数据库 (4)
- JAVA开发应用 (1)
- web前端 (2)
- 数据库 (3)
- SVN更新的时候前面的U与G是什么意思? (1)
- oracle通过约束名查看表名的方法 (1)
- TOMCAT 配置 (1)
- 表空间使用及修改大小 (1)
- Oracle function (1)
- 数据库、DBLINK (1)
- Spring AOP (2)
最新评论
JSTL标签库
JSTL标签库分为五类,分别是JSTL核心标签库、数据库标签库、I18N格式化标签库、XML标签库和JSTL函数标签库。本章将详细介绍各类标签以及每个标签的使用方法和作用。
通过本章的学习,读者应该能够完成如下几个目标。
熟练掌握通过JSTL核心数据库定义变量,输出变量,移除变量。
熟练掌握通过数据库标签库完成数据库操作。
熟练掌握通过XML标签库完成XML文件操作。
熟练掌握通过I18N标签库完成国际化操作。
熟练掌握通过JSTL函数标签库完成常用函数操作。
1 JSTL核心标签
在JSP页面中要使用到核心标签,必须使用<%@taglib%>指令,指定核心标签。代码如下。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
1.1 <c:set>标签
JSTL提供了能方便定义变量的标签<c:set>,能够将变量储存在JSP范围中或者JavaBean属性中。其语法格式分为如下五种。
(1)指定变量名以及变量值,不指定scope(范围)。
<c:set var="username" value="value"></c:set>
(2)将value的值储存到范围为scope的变量中。
<c:set var="username" value="value" scope=”page | request | session | application”></c:set>
(3)将本体内容的数据储存至范围为scope的变量中。
<c:set var="varname" scope=”page | request | session | application”>
本体内容
</c:set>
(4)将value值储存到targer对象的属性中。
<c:set value=”value” target=”target” property=”propertyName”></c:set>
(5)将本体内容的数据储存到targer对象的属性中。
<c:set target=”target” property=”propertyName”>
本体内容
</c:set>
1.2 <c:out>标签
<c:out>用来显示数据的内容,类似于<%=%>但是功能要更加强大。使用<c:out>输出内容比使用Scriptlets代码要更加简单,方便页面维护。其语法格式分为如下五种。
(1)通过在<c:out>中的value属性指定需要显示的值。
<c:out value="value"/>
(2)通过escapeXml属性设置是否将value中的内容按照原样输出。因为<c:out>默认会将<、>、’、”、&转换成<、>、'、"和&。如果不想转换,只需要设定escapeXml属性为“false”。
<c:out value="value" escapeXml="true | false"/>
(3)通过default属性来指定默认值。如果value的值为null时,则显示default的值。
<c:out value="value" default="No data"/>
(4)通过本体内容来指定默认值。如果value的值为null时,则显示default的值。
<c:out value="value" escapeXml="true | false"/>
本体内容
</c:out>
1.3 <c:remove>标签
<c:remove> 操作是用来移除指定范围的变量。其语法格式如下。
<c:remove var=”number” scope=”session”>
var属性指定待删除变量的名称,scope属性是可选的,用来指定删除变量的范围,缺省为page。
1.4 <c:if>标签
<c:if>标签用来执行流程控制,其功能和Java语言中的if完全相同。<c:if>标签有两种语法格式。一种没有本体内容,一种有本体内容。
(1)没有本体内容的<c:if>标签格式如下。
<c:if test = ”testCondition” var=”varName” [scope=”{page | request | session | application}]” />
其中test属性是必须填写的,表示进行判断的表达式。属性var定义变量,该变量存放判断后的结果。scope表示var定义变量储存的范围。
(2)有本体内容的<c:if>标签格式如下。
<c:if test = ”testCondition” var=”varName” [scope=”{page | request | session | application}]” >
本体内容
</if>
其中test属性是必须填写的,当test中表达式的结果为true时,则会执行本体内容;如果为false则不会执行。
1.5 <c:choose>、<c:when>、<c:otherwise>标签
<c:if>标签只能判断一个表达式,而且无法指定如果表达式不成立执行语句。JSTL同样提供了类似于if....else....的语句<c:choose>标签。
<c:choose>本身只能当<c:when>和<c:otherwise>的标签。其中可以有一个或多个<c:when>标签,有零个或多个<c:otherwise>标签。其语法格式如下。
<c:choose>
..
<c:when test = ”testCondition”>
</c:when>
..
<c:oherwise>
</c:oherwise>
</c:choose>
1.6 <c:forEach>标签
<c:forEach>标签两种语法格式。一种用来遍历集合对象的成员,一种用来使语句循环执行指定次数。
(1)<c:forEach>遍历集合对象的成员,语法格式如下。
<c:forEach [var=”varname”] items=”collection” [varStatus=”varStatusName”] [begin=”begin”] [end=”end”] [step=”step”]>
本地内容
</forEach>
其中“var”用来存放现在指到的成员。“items”指被迭代的集合对象。“varStatus”用来存放现在指到的相关成员的信息。“begin”表示开始位置(默认为0)。“end”表示结束位置。“step”表示步长(默认为1)。
(2)<c:forEach>指定语句执行次数,其语法格式如下。
<c:forEach [var=”varname”] [varStatus=”varStatusName”] [begin=”begin”] [end=”end”] [step=”step”]>
本地内容
</forEach>
1.7 <c:forTokens>标签
<c:forTokens>用来根据指定分隔符分割字符串。其语法格式如下。
<c:forTokens [var=”varname”] items=”stringOfTokens” delims=”delimiters” [varStatus=”varStatusName”] [begin=”begin”] [end=”end”] [step=”step”]>
本地内容
</c:forTokens>
其中“var”、“varStatus”、“begin”、“end”、“step”属性和<c:forEach>标签中用法一样。“items”属性表示被分割的字符串,“delims”属性指定分隔符。
<c:forTokens>不仅可以分割仅有一个分隔符的字符串。也可以通过设定多个分割符来分割有多个分隔符的字符串,只需要设置多个分隔符就可以了。
1.8 <c:import>标签
<c:import>可以把其他静态或动态的文件包含到本身的JSP网页中。它和JSP动作指令的<jsp:include>最大的差别在于:<jsp:include>只能包含和自己在同一Web application下的文件;而<c:import>除了能够包含和自己的同一Web application的文件外。也可以包含不同Web application或者其他网站的文件。
<c:import>的语法格式如下。
<c:import url=”url” [context=”context”] [var=”varName”] [scope=”{page | request | session | application}”] [charEncoding=”charEncoding”]>
本体内容
</c:import>
或者。
<c:import url=”url” [context=”context”] varReader=”varReaderName” [charEncoding=”charEncoding”]>
本体内容
</c:import>
1.9 <c:param>标签
<c:param>标签用来传递参数,其包含两个参数。<c:param>包含两个属性name和value。
< c:param >的语法格式如下。
<c:param name=“参数名” value=“参数值”>
1.10 <c:url>标签
<c:url>标签用来生成URL,其语法格式分为两种,一种是不带参数的,一种是带参数的。语法格式如下。
不带参数的语法格式。
<c:url value=”value” [context=”context”] [var=”varName”] [scope=”{page | request | session | application}”] />
带参数的语法格式。
<c:url value=”value” [context=”context”] [var=”varName”] [scope=”{page | request | session | application}”] >
<c:param>标签
</c:url>
1.11 <c:redirect>标签
使用<c: redirect >可以从一个JSP页面跳转其他的页面上去。而且可以通过<c:param>标签传递参数。
其语法格式分为两种,一种是不带参数的,一种是带参数的。语法格式如下。
不带参数的语法格式。
<c: redirect url=”url” [context=”context”] />
带参数的语法格式。
<c: redirect url=”url” [context=”context”] >
<c:param>
</c:redirect>
2 数据库标签库
在JSP中要使用SQL标签库,必须先使用<%@taglib%>指定,代码如下。
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
2.1 <sql:setDataSource>标签
使用JSTL的<sql:setDataSource>标签来设定数据源。<sql:setDataSource>标签的语法格式如下。
<sql:setDataSource url=”jdbcUrl”
driver=”driverClassName”
user=”userName”
password=”password”
[var=”varName”
[scope=”{page | request | session | application}”]/>
2.2 <sql:update>标签
JSTL提供了<sql:update>标签来进行增、删、改操作。<sql:update>的语法格式有两种,一种是将SQL语句写在标签里。格式如下。
<sql:update sql=”sqlUpdate” [var=”varName”]
[scope=”{page | request | session | application}”]
[dataSource=”dataSource”]
/>
另外一种是将SQL语句做为本体内容。
2.3 <sql:query>标签
JSTL中使用<sql:query>用来查询数据库中数据,<sql:query>的语法格式有两种,一种是将SQL语句写在标签里。格式如下。
<sql:query sql=”sqlQuery” [var=”varName”]
[scope=”{page | request | session | application}”]
[dataSource=”dataSource”]
[maxRows=”maxRows”]
[startRow=”startRow”]
/>
2.4 <sql:param>和<sql:dateParam>标签
使用<sql:param>和<sql:dateParam>标签能让SQL语句动态的设定变量。<sql:param>可用于各种数据类型,但是如果与时间或者日期有关时,则必须使用<sql:dateParam>来设定SQL语句中的Date类型。
<sql:param>有两种语法格式,一种没有本体内容。语法格式如下。
<sql:param value=”value”>
另外一种有本体内容。语法格式如下。
<sql:param>
value
</sql:param>
2.5 <sql:transaction >标签
<sql:transaction >标签提供存取数据库时的一种安全机制(事务处理安全机制)。其语法格式如下。
<sql:transaction [dataSource=”dataSource”]
[isolation=”read_committed | read_uncomitted | repeatabl_read | serializable]>
<sql:query>或者<sql:update>
</sql:transaction>
3 I18N格式化标签库
在JSP页面中要使用到格式化标签,必须使用<%@taglib%>指令,指定格式化标签。代码如下。
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
3.1 <fmt: formatNumber>标签
<fmt: formatNumber>会根据区域或是定制的方式将数字格式化成数字、货币或百分比。语法分为两种,一种是没有本体内容,使用value属性来指定要格式化的数字;一种有本体内容,使用本体内容来指定要格式化的数字。
<fmt:formatNumber value=”number” [type={number | currency | percent}]
[pattern=”pattern”]
[currencyCode=” currencyCode”]
[currencySymbol=” currencySymbol”]
[groupingUsed=”{true | false}”]
[maxIntegerDigits=” maxIntegerDigits”]
[minIntegerDigits=” minIntegerDigits”]
[maxFractionDigits=” maxFractionDigits”]
[minFractionDigits=” minFractionDigits”]
[var=”varName”]
[scope=”{page | request | session | application}”]
/>
3.2 <fmt: parseNumber>标签
<fmt: parseNumber>用来将字符串类型的数字、货币或百分比转换成数字类型。和<fmt: formatNumber>标签的作用正好相反。语法同样分为两种,一种是没有本体内容,使用value属性来指定要转换成数字的字符串;一种有本体内容,使用本体内容来指定转换成数字的字符串。
<fmt: parseNumber value=”numberString” [type={number | currency | percent}]
[pattern=”pattern”]
[parseLocale=” parseLocale”]
[integerOnly=”{false | true}”]
[var=”varName”]
[scope=”{page | request | session | application}”]
/>
3.3 <fmt: formatDate>标签
<fmt: formatDate>会根据区域或是定制的方式将日期或时间格式化,用来将日期类型转化成字符串类型日期。其语法格式如下。
<fmt: formatDate value=”number” [type={time | date | both}]
[pattern=”pattern”]
[dateStyle=”{default | short | medium | long | full}”]
[timeStyle=”{default | short | medium | long | full}”]
[timeZone=” timeZone”]
[var=”varName”]
[scope=”{page | request | session | application}”]
/>
3.4 <fmt: parseDate>标签
<fmt: parseDate>用来将字符串类型的时间或日期转换成日期时间类型。和<fmt: formatDate>标签的作用正好相反。语法同样分为两种,一种是没有本体内容,使用value属性来指定要转换成日期时间的字符串;一种有本体内容,使用本体内容来指定转换成日期时间的字符串。
<fmt: parseDate value=”date” [type={time | date | both}]
[pattern=”pattern”]
[dateStyle=”{default | short | medium | long | full}”]
[timeStyle=”{default | short | medium | long | full}”]
[timeZone=” timeZone”]
[var=”varName”]
[scope=”{page | request | session | application}”]
/>
3.5 <fmt: setTimeZone>标签
<fmt: setTimeZone>用来设定默认时区或者是将时区储存到属性范围中。其语法格式如下。
<fmt:setTimeZone value=”timeZone” [var=”varName”]
[scope=”{page | request | session | application}”]
/>
3.6 <fmt: timeZone>标签
<fmt: timeZone>用来暂时的设定时区。其语法格式如下。
<fmt:timeZone value=”timeZone”>
本体内容
</fmt:setTimeZones>
3.7 <fmt: setLocale>标签
<fmt: setLocale>标签用来设定用户的区域语言。这里所指的区域语言是指用户所在地区使用的语言种类以及国家和地区的综合。比如中国内地所使用的语言为中文,语言代码为“zh”,而地区代码为“cn”,所以中国内地的语言区域为“zh_cn”。
<fmt:setLocale>的语法格式如下。
<fmt:setLocale value=”locale” [variant=”variant”]
[scope=”{page | request | session | application}”]
/>
3.8 <fmt: requestEncoding>标签
<fmt: requestEncoding>用来设定接受的字符串的编码格式,与request.setCharacterEncoding()功能一样。<fmt: requestEncoding >的语法格式如下。
<fmt: requestEncoding value=”charseName”/>
3.9 <fmt: setBundle>标签
<fmt: setBundle>用来设定默认的数据来源,也可以将储存到一定范围中,供需要时使用。<fmt: setBundle>的语法格式如下。
<fmt: setBundle basename=” basename” [var=”varName”]
[scope=”{page | request | session | application}”]
/>
3.10 <fmt: message>标签
<fmt: message>用来从指定的资源文件中通过索引(key)取得值(value)。其语法分为两种,一种是没有本体内容,使用key属性来指定要索引;一种有本体内容,使用本体内容来指定索引。语法格式如下。
<fmt: message key=”messageKey” [bundle=”resourceBundle”]
[var=”varName”]
[scope=”{page | request | session | application}”]
/>
3.11 <fmt: param>标签
当从资源文件中取得信息时,可能需要动态设定参数,例如用户名等。这是就需要通过<fmt:param>来传递参数。其语法分为两种,一种是没有本体内容,使用value属性来指定要参数值;一种有本体内容,使用本体内容来指定参数值。语法格式如下。
没有本体内容。
<fmt:param value=”messageParameter”/>
有本体内容。
<fmt:param value=”messageParameter”>
参数值
</fmt:param>
3.12 <fmt: bundle>标签
<fmt: bundle>同样用来设定数据来源,但是与<fmt: setBundle>不同的是,<fmt: bundle>设定数据来源只对本体内容中的标签有效。其语法格式如下。
<fmt:bundle basename=”basename” [prefix=”prefix”]>
本体内容{<fmt:message>}
</fmt:bundle>
4 XML标签库
XML标签根据标签功能主要分为三类:
(1)XML核心操作,用来解析XML文件、显示XML文件中的信息
(2)XML流程控制操作,用来对XML中信息进行判断,循环操作。
(3)XML转换操作,使用XML搭配XSLT显示在JSP页面上。
4.1 下载并安装进行XML操作必须的JAR文件
在前面讲解过如果安装JSTL,但是要想通过JSTL对XML进行操作还必须下载并安装“xalan.jar”和“serializer.jar”。如果没有安装该JAR文件的话,在进行XML操作时会出现错误提示。
4.2 <x:parse>标签
<x:parse>标签用来解析指定的XML文件。其语法格式分为两种,一种没有本体内容,使用doc属性指定XML文件地址。一种有本体内容,在本体内容中给出要解析的XML文件。
<x:parse doc=”XMLDocument”
{var=”varName” [scope=”{page | request | session | session}”] |
varDom=”varNmae [scopeDom=”{page | request | session | session}”]”}
[systemId=” systemId”]
[filter=”filter”]/>
4.3 <x:out>标签
<x:out>通过XPath语句将结果输出到JSP中。与<c:out>类似,但是<c:out>是输出变量值。其语法格式如下。
<x:out select=”XPathExpression” [escapXml=”{true} | false”]/>
4.4 <x:set>标签
<x: set>通过XPath语句将结果储存在设定的属性范围的变量中。其语法格式如下。
<x: set
select=”XPathExpression”
var=”varName”
[scope=”{page | request | session | session}”]
/>
4.5 <x:if>标签
<x:if>同<c:if>类似都是用来做判断操作,其语法格式分为两种,一种没有本体内容,将判断的结果储存在属性范围的变量中。一种有本体内容,通过判断XPath语句,如何为“true”则执行本体内容中的代码,如果为“false”则不会执行。
没有本体内容。
<x:if select=”XPathExpression”
var=”varName” [scope=”{page|request|session|application}”]/>
有本体内容。
<x:if select=”XPathExpression”
[var=”varName”] [scope=”{page|request|session|application}”]>
本体内容
</x:if>
4.6 <x:choose>标签
<x:choose>标签同<c:choose>类似。同样XML标签库提供<x:when>标签和<x:otherwise>标签,三个标签通常结合在一起使用。其中只有<x:when>标签中有属性,其他两个标签都没有属性。
<x:when>标签使用XPath语句来进行判断。其语法格式如下。
<x:when select=”XPathExpression”>
本体内容
</x:when>
4.7 <x:forEach>标签
<x: forEach >标签同<c: forEach >类似。通过<c:forEach>可以遍历Java集合对象,而通过<x:forEach>可以遍历整个XML文件内容。其语法格式如下。
<x:forEach select=”XPathExpression”> [var=”varName”]
[varStatus=”varStatusName”]
[begin=”begin”] [end=”end”] [step=”step”]>
本体内容
</x:forEach>
JSTL标签库分为五类,分别是JSTL核心标签库、数据库标签库、I18N格式化标签库、XML标签库和JSTL函数标签库。本章将详细介绍各类标签以及每个标签的使用方法和作用。
通过本章的学习,读者应该能够完成如下几个目标。
熟练掌握通过JSTL核心数据库定义变量,输出变量,移除变量。
熟练掌握通过数据库标签库完成数据库操作。
熟练掌握通过XML标签库完成XML文件操作。
熟练掌握通过I18N标签库完成国际化操作。
熟练掌握通过JSTL函数标签库完成常用函数操作。
1 JSTL核心标签
在JSP页面中要使用到核心标签,必须使用<%@taglib%>指令,指定核心标签。代码如下。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
1.1 <c:set>标签
JSTL提供了能方便定义变量的标签<c:set>,能够将变量储存在JSP范围中或者JavaBean属性中。其语法格式分为如下五种。
(1)指定变量名以及变量值,不指定scope(范围)。
<c:set var="username" value="value"></c:set>
(2)将value的值储存到范围为scope的变量中。
<c:set var="username" value="value" scope=”page | request | session | application”></c:set>
(3)将本体内容的数据储存至范围为scope的变量中。
<c:set var="varname" scope=”page | request | session | application”>
本体内容
</c:set>
(4)将value值储存到targer对象的属性中。
<c:set value=”value” target=”target” property=”propertyName”></c:set>
(5)将本体内容的数据储存到targer对象的属性中。
<c:set target=”target” property=”propertyName”>
本体内容
</c:set>
1.2 <c:out>标签
<c:out>用来显示数据的内容,类似于<%=%>但是功能要更加强大。使用<c:out>输出内容比使用Scriptlets代码要更加简单,方便页面维护。其语法格式分为如下五种。
(1)通过在<c:out>中的value属性指定需要显示的值。
<c:out value="value"/>
(2)通过escapeXml属性设置是否将value中的内容按照原样输出。因为<c:out>默认会将<、>、’、”、&转换成<、>、'、"和&。如果不想转换,只需要设定escapeXml属性为“false”。
<c:out value="value" escapeXml="true | false"/>
(3)通过default属性来指定默认值。如果value的值为null时,则显示default的值。
<c:out value="value" default="No data"/>
(4)通过本体内容来指定默认值。如果value的值为null时,则显示default的值。
<c:out value="value" escapeXml="true | false"/>
本体内容
</c:out>
1.3 <c:remove>标签
<c:remove> 操作是用来移除指定范围的变量。其语法格式如下。
<c:remove var=”number” scope=”session”>
var属性指定待删除变量的名称,scope属性是可选的,用来指定删除变量的范围,缺省为page。
1.4 <c:if>标签
<c:if>标签用来执行流程控制,其功能和Java语言中的if完全相同。<c:if>标签有两种语法格式。一种没有本体内容,一种有本体内容。
(1)没有本体内容的<c:if>标签格式如下。
<c:if test = ”testCondition” var=”varName” [scope=”{page | request | session | application}]” />
其中test属性是必须填写的,表示进行判断的表达式。属性var定义变量,该变量存放判断后的结果。scope表示var定义变量储存的范围。
(2)有本体内容的<c:if>标签格式如下。
<c:if test = ”testCondition” var=”varName” [scope=”{page | request | session | application}]” >
本体内容
</if>
其中test属性是必须填写的,当test中表达式的结果为true时,则会执行本体内容;如果为false则不会执行。
1.5 <c:choose>、<c:when>、<c:otherwise>标签
<c:if>标签只能判断一个表达式,而且无法指定如果表达式不成立执行语句。JSTL同样提供了类似于if....else....的语句<c:choose>标签。
<c:choose>本身只能当<c:when>和<c:otherwise>的标签。其中可以有一个或多个<c:when>标签,有零个或多个<c:otherwise>标签。其语法格式如下。
<c:choose>
..
<c:when test = ”testCondition”>
</c:when>
..
<c:oherwise>
</c:oherwise>
</c:choose>
1.6 <c:forEach>标签
<c:forEach>标签两种语法格式。一种用来遍历集合对象的成员,一种用来使语句循环执行指定次数。
(1)<c:forEach>遍历集合对象的成员,语法格式如下。
<c:forEach [var=”varname”] items=”collection” [varStatus=”varStatusName”] [begin=”begin”] [end=”end”] [step=”step”]>
本地内容
</forEach>
其中“var”用来存放现在指到的成员。“items”指被迭代的集合对象。“varStatus”用来存放现在指到的相关成员的信息。“begin”表示开始位置(默认为0)。“end”表示结束位置。“step”表示步长(默认为1)。
(2)<c:forEach>指定语句执行次数,其语法格式如下。
<c:forEach [var=”varname”] [varStatus=”varStatusName”] [begin=”begin”] [end=”end”] [step=”step”]>
本地内容
</forEach>
1.7 <c:forTokens>标签
<c:forTokens>用来根据指定分隔符分割字符串。其语法格式如下。
<c:forTokens [var=”varname”] items=”stringOfTokens” delims=”delimiters” [varStatus=”varStatusName”] [begin=”begin”] [end=”end”] [step=”step”]>
本地内容
</c:forTokens>
其中“var”、“varStatus”、“begin”、“end”、“step”属性和<c:forEach>标签中用法一样。“items”属性表示被分割的字符串,“delims”属性指定分隔符。
<c:forTokens>不仅可以分割仅有一个分隔符的字符串。也可以通过设定多个分割符来分割有多个分隔符的字符串,只需要设置多个分隔符就可以了。
1.8 <c:import>标签
<c:import>可以把其他静态或动态的文件包含到本身的JSP网页中。它和JSP动作指令的<jsp:include>最大的差别在于:<jsp:include>只能包含和自己在同一Web application下的文件;而<c:import>除了能够包含和自己的同一Web application的文件外。也可以包含不同Web application或者其他网站的文件。
<c:import>的语法格式如下。
<c:import url=”url” [context=”context”] [var=”varName”] [scope=”{page | request | session | application}”] [charEncoding=”charEncoding”]>
本体内容
</c:import>
或者。
<c:import url=”url” [context=”context”] varReader=”varReaderName” [charEncoding=”charEncoding”]>
本体内容
</c:import>
1.9 <c:param>标签
<c:param>标签用来传递参数,其包含两个参数。<c:param>包含两个属性name和value。
< c:param >的语法格式如下。
<c:param name=“参数名” value=“参数值”>
1.10 <c:url>标签
<c:url>标签用来生成URL,其语法格式分为两种,一种是不带参数的,一种是带参数的。语法格式如下。
不带参数的语法格式。
<c:url value=”value” [context=”context”] [var=”varName”] [scope=”{page | request | session | application}”] />
带参数的语法格式。
<c:url value=”value” [context=”context”] [var=”varName”] [scope=”{page | request | session | application}”] >
<c:param>标签
</c:url>
1.11 <c:redirect>标签
使用<c: redirect >可以从一个JSP页面跳转其他的页面上去。而且可以通过<c:param>标签传递参数。
其语法格式分为两种,一种是不带参数的,一种是带参数的。语法格式如下。
不带参数的语法格式。
<c: redirect url=”url” [context=”context”] />
带参数的语法格式。
<c: redirect url=”url” [context=”context”] >
<c:param>
</c:redirect>
2 数据库标签库
在JSP中要使用SQL标签库,必须先使用<%@taglib%>指定,代码如下。
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
2.1 <sql:setDataSource>标签
使用JSTL的<sql:setDataSource>标签来设定数据源。<sql:setDataSource>标签的语法格式如下。
<sql:setDataSource url=”jdbcUrl”
driver=”driverClassName”
user=”userName”
password=”password”
[var=”varName”
[scope=”{page | request | session | application}”]/>
2.2 <sql:update>标签
JSTL提供了<sql:update>标签来进行增、删、改操作。<sql:update>的语法格式有两种,一种是将SQL语句写在标签里。格式如下。
<sql:update sql=”sqlUpdate” [var=”varName”]
[scope=”{page | request | session | application}”]
[dataSource=”dataSource”]
/>
另外一种是将SQL语句做为本体内容。
2.3 <sql:query>标签
JSTL中使用<sql:query>用来查询数据库中数据,<sql:query>的语法格式有两种,一种是将SQL语句写在标签里。格式如下。
<sql:query sql=”sqlQuery” [var=”varName”]
[scope=”{page | request | session | application}”]
[dataSource=”dataSource”]
[maxRows=”maxRows”]
[startRow=”startRow”]
/>
2.4 <sql:param>和<sql:dateParam>标签
使用<sql:param>和<sql:dateParam>标签能让SQL语句动态的设定变量。<sql:param>可用于各种数据类型,但是如果与时间或者日期有关时,则必须使用<sql:dateParam>来设定SQL语句中的Date类型。
<sql:param>有两种语法格式,一种没有本体内容。语法格式如下。
<sql:param value=”value”>
另外一种有本体内容。语法格式如下。
<sql:param>
value
</sql:param>
2.5 <sql:transaction >标签
<sql:transaction >标签提供存取数据库时的一种安全机制(事务处理安全机制)。其语法格式如下。
<sql:transaction [dataSource=”dataSource”]
[isolation=”read_committed | read_uncomitted | repeatabl_read | serializable]>
<sql:query>或者<sql:update>
</sql:transaction>
3 I18N格式化标签库
在JSP页面中要使用到格式化标签,必须使用<%@taglib%>指令,指定格式化标签。代码如下。
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
3.1 <fmt: formatNumber>标签
<fmt: formatNumber>会根据区域或是定制的方式将数字格式化成数字、货币或百分比。语法分为两种,一种是没有本体内容,使用value属性来指定要格式化的数字;一种有本体内容,使用本体内容来指定要格式化的数字。
<fmt:formatNumber value=”number” [type={number | currency | percent}]
[pattern=”pattern”]
[currencyCode=” currencyCode”]
[currencySymbol=” currencySymbol”]
[groupingUsed=”{true | false}”]
[maxIntegerDigits=” maxIntegerDigits”]
[minIntegerDigits=” minIntegerDigits”]
[maxFractionDigits=” maxFractionDigits”]
[minFractionDigits=” minFractionDigits”]
[var=”varName”]
[scope=”{page | request | session | application}”]
/>
3.2 <fmt: parseNumber>标签
<fmt: parseNumber>用来将字符串类型的数字、货币或百分比转换成数字类型。和<fmt: formatNumber>标签的作用正好相反。语法同样分为两种,一种是没有本体内容,使用value属性来指定要转换成数字的字符串;一种有本体内容,使用本体内容来指定转换成数字的字符串。
<fmt: parseNumber value=”numberString” [type={number | currency | percent}]
[pattern=”pattern”]
[parseLocale=” parseLocale”]
[integerOnly=”{false | true}”]
[var=”varName”]
[scope=”{page | request | session | application}”]
/>
3.3 <fmt: formatDate>标签
<fmt: formatDate>会根据区域或是定制的方式将日期或时间格式化,用来将日期类型转化成字符串类型日期。其语法格式如下。
<fmt: formatDate value=”number” [type={time | date | both}]
[pattern=”pattern”]
[dateStyle=”{default | short | medium | long | full}”]
[timeStyle=”{default | short | medium | long | full}”]
[timeZone=” timeZone”]
[var=”varName”]
[scope=”{page | request | session | application}”]
/>
3.4 <fmt: parseDate>标签
<fmt: parseDate>用来将字符串类型的时间或日期转换成日期时间类型。和<fmt: formatDate>标签的作用正好相反。语法同样分为两种,一种是没有本体内容,使用value属性来指定要转换成日期时间的字符串;一种有本体内容,使用本体内容来指定转换成日期时间的字符串。
<fmt: parseDate value=”date” [type={time | date | both}]
[pattern=”pattern”]
[dateStyle=”{default | short | medium | long | full}”]
[timeStyle=”{default | short | medium | long | full}”]
[timeZone=” timeZone”]
[var=”varName”]
[scope=”{page | request | session | application}”]
/>
3.5 <fmt: setTimeZone>标签
<fmt: setTimeZone>用来设定默认时区或者是将时区储存到属性范围中。其语法格式如下。
<fmt:setTimeZone value=”timeZone” [var=”varName”]
[scope=”{page | request | session | application}”]
/>
3.6 <fmt: timeZone>标签
<fmt: timeZone>用来暂时的设定时区。其语法格式如下。
<fmt:timeZone value=”timeZone”>
本体内容
</fmt:setTimeZones>
3.7 <fmt: setLocale>标签
<fmt: setLocale>标签用来设定用户的区域语言。这里所指的区域语言是指用户所在地区使用的语言种类以及国家和地区的综合。比如中国内地所使用的语言为中文,语言代码为“zh”,而地区代码为“cn”,所以中国内地的语言区域为“zh_cn”。
<fmt:setLocale>的语法格式如下。
<fmt:setLocale value=”locale” [variant=”variant”]
[scope=”{page | request | session | application}”]
/>
3.8 <fmt: requestEncoding>标签
<fmt: requestEncoding>用来设定接受的字符串的编码格式,与request.setCharacterEncoding()功能一样。<fmt: requestEncoding >的语法格式如下。
<fmt: requestEncoding value=”charseName”/>
3.9 <fmt: setBundle>标签
<fmt: setBundle>用来设定默认的数据来源,也可以将储存到一定范围中,供需要时使用。<fmt: setBundle>的语法格式如下。
<fmt: setBundle basename=” basename” [var=”varName”]
[scope=”{page | request | session | application}”]
/>
3.10 <fmt: message>标签
<fmt: message>用来从指定的资源文件中通过索引(key)取得值(value)。其语法分为两种,一种是没有本体内容,使用key属性来指定要索引;一种有本体内容,使用本体内容来指定索引。语法格式如下。
<fmt: message key=”messageKey” [bundle=”resourceBundle”]
[var=”varName”]
[scope=”{page | request | session | application}”]
/>
3.11 <fmt: param>标签
当从资源文件中取得信息时,可能需要动态设定参数,例如用户名等。这是就需要通过<fmt:param>来传递参数。其语法分为两种,一种是没有本体内容,使用value属性来指定要参数值;一种有本体内容,使用本体内容来指定参数值。语法格式如下。
没有本体内容。
<fmt:param value=”messageParameter”/>
有本体内容。
<fmt:param value=”messageParameter”>
参数值
</fmt:param>
3.12 <fmt: bundle>标签
<fmt: bundle>同样用来设定数据来源,但是与<fmt: setBundle>不同的是,<fmt: bundle>设定数据来源只对本体内容中的标签有效。其语法格式如下。
<fmt:bundle basename=”basename” [prefix=”prefix”]>
本体内容{<fmt:message>}
</fmt:bundle>
4 XML标签库
XML标签根据标签功能主要分为三类:
(1)XML核心操作,用来解析XML文件、显示XML文件中的信息
(2)XML流程控制操作,用来对XML中信息进行判断,循环操作。
(3)XML转换操作,使用XML搭配XSLT显示在JSP页面上。
4.1 下载并安装进行XML操作必须的JAR文件
在前面讲解过如果安装JSTL,但是要想通过JSTL对XML进行操作还必须下载并安装“xalan.jar”和“serializer.jar”。如果没有安装该JAR文件的话,在进行XML操作时会出现错误提示。
4.2 <x:parse>标签
<x:parse>标签用来解析指定的XML文件。其语法格式分为两种,一种没有本体内容,使用doc属性指定XML文件地址。一种有本体内容,在本体内容中给出要解析的XML文件。
<x:parse doc=”XMLDocument”
{var=”varName” [scope=”{page | request | session | session}”] |
varDom=”varNmae [scopeDom=”{page | request | session | session}”]”}
[systemId=” systemId”]
[filter=”filter”]/>
4.3 <x:out>标签
<x:out>通过XPath语句将结果输出到JSP中。与<c:out>类似,但是<c:out>是输出变量值。其语法格式如下。
<x:out select=”XPathExpression” [escapXml=”{true} | false”]/>
4.4 <x:set>标签
<x: set>通过XPath语句将结果储存在设定的属性范围的变量中。其语法格式如下。
<x: set
select=”XPathExpression”
var=”varName”
[scope=”{page | request | session | session}”]
/>
4.5 <x:if>标签
<x:if>同<c:if>类似都是用来做判断操作,其语法格式分为两种,一种没有本体内容,将判断的结果储存在属性范围的变量中。一种有本体内容,通过判断XPath语句,如何为“true”则执行本体内容中的代码,如果为“false”则不会执行。
没有本体内容。
<x:if select=”XPathExpression”
var=”varName” [scope=”{page|request|session|application}”]/>
有本体内容。
<x:if select=”XPathExpression”
[var=”varName”] [scope=”{page|request|session|application}”]>
本体内容
</x:if>
4.6 <x:choose>标签
<x:choose>标签同<c:choose>类似。同样XML标签库提供<x:when>标签和<x:otherwise>标签,三个标签通常结合在一起使用。其中只有<x:when>标签中有属性,其他两个标签都没有属性。
<x:when>标签使用XPath语句来进行判断。其语法格式如下。
<x:when select=”XPathExpression”>
本体内容
</x:when>
4.7 <x:forEach>标签
<x: forEach >标签同<c: forEach >类似。通过<c:forEach>可以遍历Java集合对象,而通过<x:forEach>可以遍历整个XML文件内容。其语法格式如下。
<x:forEach select=”XPathExpression”> [var=”varName”]
[varStatus=”varStatusName”]
[begin=”begin”] [end=”end”] [step=”step”]>
本体内容
</x:forEach>
相关推荐
JAVAEE 实验报告 EL 表达式和 JSTL 标签库的使用 EL 表达式(Expression Language)是一种在 JSP 页面中使用的脚本语言,用于简化 JSP 页面的开发。EL 表达式可以访问 JSP 页面中的变量、对象和集合,进行逻辑操作...
**JSTL标签库及其使用方法** JavaServer Pages Standard Tag Library(JSTL)是Java社区为简化JSP页面开发而推出的一个标准标签库。它提供了丰富的功能,如迭代、条件判断、XML处理、国际化等,使代码更加简洁、易...
本篇文章将深入探讨JSTL标签库的配置过程及其在实际应用中的作用。 首先,我们要理解**JSTL的核心组件**。JSTL主要由五个核心部分组成:Core、Format、I18N、SQL和XML。其中,Core组件包含了大部分用于控制流程、...
二、JSTL标签库 JSTL是Java Web开发的标准标签库,它包含五个核心部分:Core、Format、I18N、XML和SQL。这些标签提供了丰富的功能,例如控制流、格式化、国际化、XML处理和数据库操作。 1. **Core标签**:包括if、...
以下是关于JSTL标签库所需导入的JAR包及其功能的详细解释: 1. **jstl.jar**:这是核心JSTL库,包含了大部分常用的标签,如 `<c:if>`, `<c:forEach>`, `<fmt:formatDate>` 等。这些标签提供了条件判断、循环、格式...
每个`taglib`元素定义了一个TLD(Tag Library Descriptor)文件的位置,这告诉服务器JSTL标签库的位置和元数据。 总之,JSTL通过提供丰富的标签来增强JSP页面的功能,而解决"无法解析绝对uri"的错误通常涉及到正确...
- 使用JSTL标签库可以提高代码的可读性和可维护性,降低HTML和Java代码的混合程度。 - 结合EL,可以进一步减少脚本let的使用,使JSP页面更加整洁。 - 注意,JSTL的SQL标签库不适用于复杂的数据库操作,现代Web应用...
### JSTL标签库及其下载 #### JSTL概述 JSTL(JavaServer Pages Standard Tag Library,JavaServer页面标准标签库)是一组用于开发JavaServer Pages页面的标准标签集合。这些标签简化了JSP页面的编写工作,使...
**JSTL标签库与JAR包详解** JavaServer Pages Standard Tag Library(JSTL)是Java EE领域中用于简化JSP开发的一个重要工具。它提供了一组预定义的标签,帮助开发者更高效地处理常见任务,如迭代、条件判断、国际化...
【JSTL标签库】是Java服务器页面(JSP)的一种标准标签库,由Sun Microsystems公司发布,旨在简化JSP页面的开发。JSTL提供了一系列预定义的标签,用于处理常见的任务,如数据输出、流程控制、循环、XML处理、国际化...
JSTL(JavaServer Pages Standard Tag Library)是Java Web开发中一个重要的标签库,主要用于简化JSP页面中的Java代码,提高JSP页面的可读性和维护性。在Tomcat 10这个高性能、轻量级的Servlet容器中,JSTL的使用...
**JSTL(JavaServer Pages Standard Tag Library)标签库**是Java Web开发中常用的一组预定义的HTML和XML标签,用于简化JavaServer Pages(JSP)开发。它提供了更面向声明的编程方式,使开发者可以更专注于业务逻辑...
JSTL(JavaServer Pages Standard Tag Library)是Java服务器页面标准标签库,它为JSP开发者提供了一系列预定义的、可重用的标签,以简化网页开发过程,提高代码的可读性和可维护性。JSTL主要由以下几个核心部分组成...
EL表达式与JSTL标签库,挺实用的工具
在本资源包中,你将找到两个重要的JSTL相关文件——`jstl.jar`和`standard.jar`,以及一个名为`JSTL标签库配置.doc`的文档,它们是配置和使用JSTL标签库所必需的。 **一、jstl.jar和standard.jar** 1. **jstl.jar*...
JSTL(JavaServer Pages Standard Tag Library)是一个用于JSP的标准标签库,它提供了一系列预定义的标签,简化了常见的编程任务,如控制流程、输出处理、URL管理和数据操作等。JSTL的核心标签库(Core Library)是...
### JSTL标签库知识点详解 #### 1. JSTL简介 JSP标准标签库(JSTL)是Sun Microsystems公司推出的一款用于简化JSP页面开发的强大工具。它的主要目的是减少页面脚本代码量,使得JSP页面更加易于维护和阅读。JSTL...