jstl学习笔记(下)

5<fmt:setTimeZone>标签

该标签用于设定默认时区或者将时区存储在指定的JSP范围内。

【语法】:

<fmt:setTimeZone value=”value”[var=”name”][scope=”page|request|session|application”]/>

【参数说明】:见表9-10

9-10 <fmt:setTimeZone>标签属性说明

 

参数名

说明

EL

类型

必须

默认值

value

使用的时区

String

Java.util.TimeZone

var

使用var定义的参数名保存值

String

scope

存储varJSP范围

String

page

 

value用来设定使用的时区,例如中国使用的时区为CST,其他的还有ESTPST等。可以把时区存储在指定的JSP范围内,例如存储在session中,用户访问的所有页面都可以显示使用的设定的时区下对应的时间。

【示例代码】

<fmt:setTimeZone value=”EST”scope=”session”/>

提示:有关TimeZone的说明见JDK帮助文档的java.util.TimeZone类。

6<fmt:timeZone>标签

该标签主要用于设置标签体内使用的时区。

【语法】:

<fmt:timeZonevalue=”timeZone”>

…..

</fmt:timeZone>

使用<fmt:timeZone></fmt:timeZone>只会应用到标签体内使用的时区,对标签外部将不产生影响。

9.3.2 读取消息资源

读取消息资源用到的标签主要有4个:<fmt:message>标签、<fmt:param>标签、<fmt:bundle>标签和<fmt:setBundle>标签。主要用于从资源文件中读取信息。

1<fmt:bundle>标签

该标签主要用于将资源文件绑定于它的标签体中的显示。

【语法】:

<fmt:bundlebasename=”name”[prefix=”prefix”]>

….标签主题

</fmt:bundle>

【参数说明】:见表9-11

9-11 <fmt:bundle>标签属性说明

 

参数名

说明

EL

类型

必须

默认值

basename

指定使用的资源文件的名称

String

prefix

前置关键字

String

 

2<fmt:setBundle>标签

该标签主要用于绑定资源文件或者把资源文件保存在指定的JSP范围内。

【语法】:

<fmt:setBundle basename=”name” [var=”name”]

                                    [scope=”page|request|session|application”]

【参数说明】:见表9-12

9-12 <fmt:setBundle>标签属性说明

 

参数名

说明

EL

类型

必须

默认值

basename

指定使用的资源文件的名称

String

var

指定将资源文件保存的名称

String

scope

设定将资源文件保存的JSP范围

String

page

 

3<fmt:message>标签

该标签主要负责读取本地资源文件,从指定的消息文本资源文件中读取键值,并且可以将键值保存在指定的JSP范围内。

【语法1】:

<fmt:message key=”keyName”[bundle=”bundle”]

                                    [scope=”page|request|session|application”]

/>

【语法2】:

<fmt:message key=”keyName”[bundle=”bundle”]

                                    [scope=”page|request|session|application”]

<fmt:param/>

</fmt:message>

【语法3】:

<fmt:message key=”keyName”[bundle=”bundle”]

                                                       [scope=”page|request|session|application”]

key<fmt:param/>

</fmt:message>

【参数说明】:见表9-13

9-13 <fmt:message>标签属性说明

 

参数名

说明

EL

类型

必须

默认值

key

指定键值的名称(索引)

String

bundle

指定消息文本的来源

LocalizationContext

var

指定存储键值的变量名

String

scope

指定var的作用域

String

page

 

提示:建议此处的bundle使用EL表达式,因为属性bundle的类型为LocalizationContext,而不是一个String类型的URL

【示例代码】:代码9.17实现从指定的资源文件中读取对应key的值。

首先编写一个资源文件内容下

name=olive

password=01234

使用标签从资源文件中读取相应的值。

代码9.17 <fmt:message>标签示例:fmtdemo05.jsp

<%@ page language="java"pageEncoding="gbk"%>

<%@ taglib prefix="c"uri="http://java.sun.com/jsp/jstl/core" %>

<%@ taglib prefix="fmt"uri="http://java.sun.com/jsp/jstl/fmt" %>

<jsp:useBean id="date"class="java.util.Date"></jsp:useBean>

<html>

 <head>  

   <title>I18N标签库</title>

 </head>

 <body>

  <H4><c:outvalue="资源文件读取示例"></c:out></H4>

  <hr>

   <fmt:bundlebasename="message">

   <c:outvalue="message资源文件中得到的keyname的值为:"></c:out>

   <fmt:messagekey="name"></fmt:message>

  </fmt:bundle>

  <hr>

  <fmt:setBundle basename="message"var="m"/>

   <fmt:messagekey="password"bundle="${m}"></fmt:message>

    ${m}

  </body>

</html>

【代码解析】:

1)使用<fmt:bundle>标签指定从message.properties文件中读取值。

2)使用<fmt:message>标签读取资源文件中keyname的值。<fmt:message>标签放在<fmt:bundle>标签体内使用。

3)使用<fmt:setBundle>标签在page范围绑定一个配置文件,以m为参数名存储。

4)使用<fmt:message>标签得到keypassword的值,此处指定资源文件的方式为使用<fmt:message>标签的bundle属性来设定。

5)输出参数m的值,加深对bundle的理解。

<fmt:bundle>标签中有一个prefix属性,该标签用来指明前缀。例如配置文件内容如下:

org.person.name=olive

org.personpassword=01234

如果不使用prefix标签,在取值是要指明前缀。例如:

<fmt:bundlebasename=”message”>

<fmt:messagekey=”org.person.name”></fmt:message>

<fmt:messagekey=”org.person.password”></fmt:message>

</fmt:bundle>

使用prefix属性可以简化取值时的代码。

<fmt:bundle basename=”message”prefix=”org.person”>

<fmt:messagekey=”name”></fmt:message>

<fmt:messagekey=”password”></fmt:message>

</fmt:bundle>

4<fmt:param>标签

该标签主要用于当<fmt:message>中资源文件中获得键值时,动态的为资源文件中的变量赋值。

【语法1】:

<fmt:param value=”value”/>

【语法2】:

<fmt:param >

标签主体

</fmt:param>

【示例代码】:

1)创建资源文件。在message.properties文件中增加一个keyvalue

news={0} welcome to outwebsite!<br>today is :{1,date}

表达的含义是键news对应的是一个字符串,字符串中还有动态变量{0}表示第一个动态变量,{1,date}表示第二个动态变量并且该变量是一个日期类型的对象。

2)通过标签从资源文件中取出键值,并给动态变量赋值显示在页面。

代码9.18 <fmt:param>标签示例:fmtdemo06.jsp

<%@ page language="java"pageEncoding="gbk"%>

<%@ taglib prefix="c"uri="http://java.sun.com/jsp/jstl/core" %>

<%@ taglib prefix="fmt"uri="http://java.sun.com/jsp/jstl/fmt" %>

<jsp:useBean id="date"class="java.util.Date"></jsp:useBean>

<html>

 <head>  

   <title>I18N标签库</title>

 </head>

 <body>

  <H4><c:outvalue="<fmt:param>标签的使用"></c:out></H4>

  <hr>

   <fmt:bundlebasename="message">

   <fmt:messagekey="news">

   <fmt:paramvalue="olive" />

   <fmt:paramvalue="${date}"/>

  </fmt:message>

  </fmt:bundle>

  </body>

</html>

【代码解析】:

1)使用<fmt:bundle>标签把资源文件绑定在标签体内。

2)在<fmt:bundle>标签体内使用<fmt:message>得到键值。

3)使用<fmt:param>为资源文件中的动态变量赋值。

提示:资源文件经过修改后,应用程序需要重载才能生效。

9.3.3 国际化

国际化这个分类中共包含两个标签:用于设定语言地区<fmt:setLocale/>和用于设定请求的字符编码的<fmt:requestEncoding>标签。

1<fmt:setLocale/>标签

<fmt:setLocale>标签用来设定用户语言区域。

【语法】:

<fmt:setLocalevalue=”locale”[variant=”variant”]

                           [scope=”page|request|session|application”]>

【参数说明】:见表9-14

9-14 <fmt:setLocale>标签属性说明

 

参数名

说明

EL

类型

必须

默认值

value

指定区域代码

String

java.util.Locale

variant

操作系统的类型

String

scope

设定时区的作用范围

String

page

 

value属性用来指定使用的语言代码,可以从浏览器的【工具】---Internet选项】---【语言】---【添加】中查看浏览器支持的语言种类及语言代码。例如:中文(zh_cn)、台湾(zh_tw)、香港(zh_mo)等。

【示例代码】:代码9.19实现了设定不同的区域代码,根据不同的区域代码浏览将显示不同格式的日期。

代码9.19 <fmt:setLocale>标签示例:fmtdemo07.jsp

<%@ page language="java"pageEncoding="gbk"%>

<%@ taglib prefix="c"uri="http://java.sun.com/jsp/jstl/core" %>

<%@ taglib prefix="fmt"uri="http://java.sun.com/jsp/jstl/fmt" %>

<jsp:useBean id="date"class="java.util.Date"></jsp:useBean>

<html>

 <head>  

   <title>I18N标签库</title>

 </head>

 <body>

  <H4><c:outvalue="<fmt:setlocale>标签的使用"></c:out></H4>

  <hr>

  <fmt:setLocale value="en_us" />

  <fmt:formatDatevalue="${date}" type="both" dateStyle="full"timeStyle="full"/>

  <hr>

  <fmt:setLocale value="zh_cn" />

  <fmt:formatDatevalue="${date}" type="both" dateStyle="full"timeStyle="full"/>

  <hr>

  <fmt:setLocale value="zh_TW"/>

  <fmt:formatDatevalue="${date}" type="both" dateStyle="full"timeStyle="full"/>

  </body>

</html>

【代码解析】:

1)浏览器默认跟您使用的操作系统的语言相同,因此默认值zh_cn。使用<fmt:setLocale/>标签设置使用的语言为en_us(英语)。使用<fmt:formateDate>格式化输出的时间字符串,该标签会根据不同的语言输出不同的日期格式。

2)使用的语言修改为zh_cn,再次用格式化输出。

3)使用语言修改为zh_TW,输出格式化后的时间。

2<fmt:requestEncoding>标签

该标签用于设定请求的编码格式。功能同servletRequest.setCharacterEncoding()方法相同。

【语法】:

<fmt:requestEncoding[value=”charEncoding”]/>

【参数说明】:

value属性用来指定使用的编码集例如:gbkgb2312等。当没有给出value的值时将会自动搜索取寻找合适的编码方式,因此能够很好的解决中文乱码问题。

9.4 SQL标签库

JSTL提供了与数据库相关操作的标签,可以直接从页面上实现数据库操作的功能,在开发小型网站是可以很方便的实现数据的读取和操作。本章将详细介绍这些标签的功能和使用方法。

SQL标签库从功能上可以划分为两类:设置数据源标签、SQL指令标签。

引入SQL标签库的指令代码为:

<%@ taglib prefix="sql"uri="http://java.sun.com/jsp/jstl/sql" %>

9.4.1 设置数据源

使用<sql:setDataSource>标签可以实现对数据源的配置。

【语法1】:直接使用已经存在的数据源。

<sql:setDataSourcedataSource=”dataSource”[var=”name”]

                           [scope=”page|request|session|application”]/>

【语法2】:使用JDBC方式建立数据库连接。

<sql:setDataSource driver=”driverClass”url=”jdbcURL”

                                              user=”username”

                                              password=”pwd”                

                                              [var=”name”]

                                              [scope=”page|request|session|application”]/>

【参数说明】:见表9-15

9-15 <sql:DataSource>标签属性说明

 

参数名

说明

EL

类型

必须

默认值

dataSource

数据源

String

Javax.sql.DataSource

driver

使用的JDBC驱动

String

url

连接数据库的路径

String

user

连接数据库的用户名

String

password

连接数据库的密码

String

var

指定存储数据源的变量名

String

scope

指定数据源存储的JSP范围

String

page

 

提示:是否必须是相对的,比如说如果使用数据源则,driverurl等就不再被使用。如果使用JDBC则要用到driverurluserpassword属性。

例如连接SQL Server需要进行如下配置:

Driver="com.microsoft.jdbc.sqlserver.SQLServerDriver"

url=” jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs"

user=”sa”

password=””

使用<fmt:setDataSource>配置的代码如下:

<fmt:setDataSourcedriver=”com.microsoft.jdbc.sqlserver.SQLServerDriver”

                  url=”jdbc.microsoft:sqlserver://localhost:1433;DatabaseName=pubs”

                  user=”sa”

                  password=””>

如果连接其他数据库,只须把相对应的项修改即可。

提示:可以把数据连接的配置存入session中,如果再用到数据库连接只须配置使用DataSource属性。

9.4.2 SQL操作标签

JSTL提供了<sql:query><sql:update><sql:param><sql:dateParam><sql:transaction>5个标签,通过使用SQL语言操作数据库,实现增加、删除、修改等操作。下面将介绍这5个标签的功能和使用方式。

1<sql:query>标签

<sql:query>标签用来查询数据。

【语法1】:

<sql:query sql=”sqlQuery” var=”name”[scope=”page|request|session|application”]

                  [dataSource=”dateSource”]

                  [maxRow=”maxRow”]

                  [startRow=”starRow”]/>

【语法2】:

<sql:query var=”name”[scope=”page|request|session|application”]

                  [dataSource=”dateSource”]

                  [maxRow=”maxRow”]

                  [startRow=”starRow”]

sqlQuery

</sql:query>

【属性说明】:见表9-16

9-16 <sql:query>标签属性说明

 

参数名

说明

EL

类型

必须

默认值

sql

查询数据的SQL语句

String

dataSource

数据源对象

String

Javax.sql.DataSoutce

maxRow

设定最多可以暂存数据的行数

String

startRow

设定从那一行数据开始

String

var

指定存储查询结果的变量名

String

scope

指定结果的作用域

String

page

 

使用<sql:query>必须指定数据源,dataSource是可选的,如果未给定该属性标签会在page范围内查找是否设置过数据源,如果没有找到将抛出异常。

一般情况下使用<sql:setDateSource>标签设置一个数据源存储在session范围中,当需要数据库连接时使用dataSource属性并实现数据库的操作。

<sql:query>var属性是必须的用来存放结果集,如果没有指定scope范围则默认为page,即在当前页面我们可以随时输出查询结果。结果集有一系列的属性如表9-17所示。

maxRowsstartRow属性用来操作结果集,使用SQL语句首先吧数据放入内存中,检查是否设置了startRow属性,如果设置了就从starRow指定的那一行开始取maxRows个值,如果没有设定则从第一行开始取。

9-17 结果集参数说明

 

属性名

类型

说明

rowCount

int

结果集中的记录总数

Rows

Java.util.Map

以字段为索引查询的结果

rowsByIndex

Object[]

以数字为作索引的查询结果

columnNames

String[]

字段名称数组

limitedByMaxRows

boolean

是否设置了maxRows属性来限制查询记录的数量

 

提示:limitedByMaxRows用来判断程序是否收到maxRows属性的限制。并不是说设定了maxRows属性,得到结果集的limitedByMaxRows的属性都为true,当取出的结果集小于maxRows时,则maxRows没有对结果集起到作用此时也为false。例如可以使用startRow属性限制结果集的数据量。

结果集的作用就是定义了数据在页面中的显示方式。下面给出了结果集每个属性的作用。

q       rowCount属性。该属性统计结果集中有效记录的量,可以使用于大批量数据分页显示。

q       Rows属性。等到每个字段对应的值。返回的结果为:字段名={字段值···}

q       rowsByIndex属性。常用得到数据库中数据的方式,从有效行的第一个元素开始遍历,到最后一个有效行的最后一个元素。

q       columnNames属性。用于得到数据库中的字段名。

q       limitedByMaxRows属性。用于判断是否受到了maxRows的限制。

【示例代码】:代码9.20给出了配置数据库连接,和使用<sql:query>查询数据以及结果集属性的使用。

代码9.20 数据库示查询示例:sqldemo01.jsp

<%@ taglib prefix="c"uri="http://java.sun.com/jsp/jstl/core" %>

<%@ taglib prefix="sql"uri="http://java.sun.com/jsp/jstl/sql" %>

<%@ pagecontentType="text/html;charset=GBK"%>

<html>

<head>

 <title>JSTL:SQL标签</title>

</head>

<body >

<h3>SQL标签库</h3>

<hr>

<sql:setDataSourcedriver="com.microsoft.jdbc.sqlserver.SQLServerDriver"

        url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs"

        user="sa" password="" />

<sql:query var="result" sql="select * fromperson" maxRows="2" startRow="1"/>

结果集的实质是:${result}<br>

得到的行数为:${result.rowCount}<br>

是否收到了maxRows的限制:${result.limitedByMaxRows}

<hr>

<table border="1"align="center">

<tr><c:forEachvar="columnName" items="${result.columnNames}">

<td>

<c:out value="${columnName}"/>

</td>

</c:forEach></tr>

<c:forEach var="row"items="${result.rowsByIndex}">

<tr>

<c:forEach var="column"items="${row}">

<td><c:outvalue="${column}"/></td>

</c:forEach>

</tr>

</c:forEach>

</table>

</body>

</html>

【代码解析】:

1)配置数据源。使用<sql:dataSource>标签配置数据源,因为只共本页使用因此存储在默认的page范围中。

2)使用<sql:query>标签进行数据库查询,并定义了maxRowsstartRow属性。并把结果集存储于作用于page范围的result变量。使用${result}输出可以发现结果集就是一个ResultImpl类。

提示:在进行数据源配置时程序不会检查数据库连接是否配置正确,直接根据设定的数据库及连接访问,如果没有找到则抛出操作的表异常,因此要放如<c:catch></c:catch>同时在编写程序时一定要注意数据源是否配置正确。

3)使用结果集的rowCount属性得到记录的总量。代码为:

${result.rowCount}

4)使用结果集的limitedMaxRows属性判断是否收到maxRows设定的影响。代码为:

${result.limitedMaxRows}

5)从结果集中得到数据库中定义的所有的字段。${result.columnnames}得到的结果是一个字符串数组,因此需要使用<c:forEach>循环输出。代码如下:

<c:forEach var="columnName"items="${result.columnNames}">

<c:out value="${columnName}"/>

</c:forEach>

6)从结果集中得到所有的值。首先要遍历每一行,然后遍历每一行中的元素,因此需要循环嵌套。代码如下:

<c:forEach var="columnName"items="${result.columnNames}">

<c:out value="${columnName}"/>

</c:forEach>

<c:forEach var="row"items="${result.rowsByIndex}">

<c:forEach var="column"items="${row}">

<c:outvalue="${column}"/></td>

</c:forEach>

</c:forEach>

提示:在代码解析中省略了html元素表格等标签的元素,本示例适用于任何数据库表,只要把数据库的URL、使用的JDBC进行相应的配置和操作的数据表名进行相应的修改即可看到结果。

2<sql:update>标签

<sql:update>用来实现操作数据库如:使用createupdatedeleteinsertSQL语句,并返回影响记录的条数。

【语法1】:SQL语句放在标签属性中。

<sql:update sql=”SQL语句” [var=”name”][scope=”page|request|session|application”]

                                                       [dateSource=”dateSource”]/>

【语法2】:SQL语句放在标签体内。

<sql:update [var=”name”][scope=”page|request|session|application”]

                                                       [dateSource=”dateSource”]

SQL语句

</sql:update>

【参数说明】:见表9-18

9-18 <sql:update>标签属性说明

 

参数名

说明

EL

类型

必须

默认值

sql

查询数据的SQL语句

String

dataSource

数据源对象

String

Javax.sql.DataSoutce

var

指定存储查询结果的变量名

String

scope

指定结果的作用域

String

page

 

提示:<sql:update>标签的属性同<sql:query>标签的属性相比只减少了maxRowsstartRow2个属性。其他参数用法一样。

使用<sql:update>可以实现数据表的创建、插入数据、更行数据、删除数据。使用时只须在标签中放入正确的SQL语句即可,同时要捕获可能产生的异常。本节只对一个简单的插入操作进行说明。

【示例代码】:代码9.21实现了创建一个表、实现数据的插入。

代码9.21 数据库创建、数据插入示例:sqldemo02.jsp

<%@ taglib prefix="c"uri="http://java.sun.com/jsp/jstl/core" %>

<%@ taglib prefix="sql"uri="http://java.sun.com/jsp/jstl/sql" %>

<%@ pagecontentType="text/html;charset=GBK"%>

<html>

<head>

 <title>JSTL:SQL标签</title>

</head>

<body >

<h3>SQL标签库</h3>

<hr>

<sql:setDataSourcedriver="com.microsoft.jdbc.sqlserver.SQLServerDriver"

        url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs"

        user="sa" password="" />

实现数据库表的创建<br>

<sql:update var="result1">

create table c_user (

         id int primary key ,

    name varchar(80),

    sex varchar(80),

)

</sql:update>

<c:catch var="error">

<sql:update var="result2" >

insert c_user values(05,'Linda','')

insert c_user values(01,'Rom','' )

</sql:update>

影响的记录数为:<c:outvalue="${result2}"></c:out>

</c:catch>

<c:outvalue="${error}"></c:out><br>

<hr>

</body>

</html>

【代码解析】:

1)配置数据源。

2)使用<sql:update>标签创建一个新表。

3)向表中插入两行数据。

提示:本示例也没有针对固定的表进行操作,在使用时直接运行即可,如果使用的是其他数据库,需要更改数据源配置和SQL语句部分修改。

使用<sql:update>var属性记录结果是不准确的,尤其是在一个标签中使用多条sql语句只能记录下第一条。

3<sql:param>标签

<sql:param>标签用于动态的为SQL语句设定参数,同<sql:query>标签共同使用。可以防止SQL注入作用类似于java.sql.PreparedStatement

【语法1】:

<sql:param value=”value”/>

【语法2】:

<sql:param>

Value

</sql:param>

【参数说明】:

value的作用为SQL中的参数赋值。

【使用示例】:

<sql:query var=”result”>

select * from person where 序号=

<sql:query>

4<sql:dateParam>标签

<sql:dataParam>标签主要用于为SQL标签填充日期类型的参数值。

【语法】:

<sql:dateParamvalue=”date”[type=”timestamp|time|date”]/>

【参数说明】:

q       value属性:java.util.Date类型的参数。

q       type属性:指定填充日期的类型timestamp(全部日期和时间)、time(填充的参数为时间)、date(填充的参数为日期)。

5<sql:transaction>标签

<sql:transaction>标签提供了数据操作的一种安全机制(即事务回滚),当操作数据库的某条SQL语句发生异常时,取消<sql:transaction>标签体中的所有操作,恢复原来的状态,重新对数据库进行操作。

【语法】:

<sql:transaction [dataSource=”dataSource”]

[isolation=”read_committed|read_uncommitted|repeatable|serializable”]

<sql:query>

<sql:uptade>

</sql:transation>

9.5 XML标签库

JSTL提供了操作xml文件的标签库,使用xml标签库可以省去使用DomSAX标签库的繁琐,能轻松的读取xml文件的内容。

9.5.1 XML核心标签库

1<x:parse>标签

<x:parse/>标签用来解析指定的xml文件。

【语法1】:

<x:parse doc=”xmlDocument”

{var=”name”[scope=”page|request|session|application”]|varDom=”name”[scope=”page|request|session|application”]}

systemId=”systemId”

filter=”filter”

/>

【语法2】:

<x:parse

{var=”name”[scope=”page|request|session|application”]|varDom=”name”[scope=”page|request|session|application”]}

systemId=”systemId”

filter=”filter”

xmlDocument

</x:parse>

【参数说明】:见表9-20

9-20 <x:parse>标签属性说明

属性名

说明

EL

类型

必须

默认值

doc

指定解析的xml文件

String/Reader

var

存储解析后的xml文件

String

scope

指定varJSP范围

String

page

varDom

以(org.w3c.dom.Doucemet)的形式存储解析的xml文件

String

scopeDom

指定varDomJSP范围

String

page

systemId

xml文件的url

String

filter

解析xml文件的过滤器

Org.xml.sax.Filter

提示:doc指定解析的xml文件并不是指定xml文件的路径,而是同<c:import>共同使用,由<c:import>加载并存储,然后使用<x:parse>解析。

例如:如果解析person.xml文件需要通过如下代码实现对xml文件的解析。

<c:import var="docString"url="person.xml"/><!--引入person.xml文件-->

<x:parse var="doc"doc="${docString}"/>

<c:import>语句用来导入或存储文件到JSP。如果不使用var来存储,xml文件将显式的出现在JSP文件中。

<x:parse>标签只用来解析xml文件,并不显示xml文件中的内容,如果想得到xml的节点元素或值需要使用<x:out>元素来实现。

2<x:out>标签

<x:out>标签主要用来输出xml的信息。

【语法】:

<x:outselect=”XpathExperssion”[excapeXml=”true|false”]>

【参数说明】:见表9-21

9-21 <x:out>标签属性说明

属性名

说明

EL

类型

必须

默认值

select

指定使用的XPath语句

String

escapeXml

是否转换特殊字符。如<

boolean

true

提示:使用XPath语句需要用到xalan.jar支持包,可以从示例程序的lib中获取,获得直接从myEclipse中可以找到。

【示例代码】:

3<x:set>标签

<x:set>标签用于将从xml文件节点解析的内容存储到JSP属性范围中。

【语法】:

<x:set select=”XPathExperssion” var=”name”scope=”page|request|session|application”>

【参数说明】:

1select通过指定的XPath表达式语句获取节点的值。

2var指定用于存储值的变量名。

3)指定varJSP属性范围。

9.5.2 XML流程控制

使用xml标签库的流程控制标签可以迭代处理xml文件的内容,流程控制可以分为以下两个方面的内容:

1)条件判断。

2)循环功能。

1<x:if>

<x:if>主要用于条件判断。

【语法1】:未含有本体内容。

<x:if select=”XPathExperssion”var=”name”[scope=”page|request|session|application”]/>

【语法2】:含有本体内容。

<x:if select=”XPathExperssion”var=”name”[scope=”page|request|session|application”]

本体内容

</x:if>

语法1只把根据条件表达式得到的结果的存储在JSP范围中,语法2根据<x:if>标签根据条件表达式的结果决定是否执行本体内的代码。

【参数说明】:

1select用来指定使用的XpathExperssion表达式。

2var设定标量名用来存储表达式的结果。

3scope指定var存储的JSP属性范围。

2<x:choose><x:when><x:otherwise>标签

同核心标签库的<c:choose><c:when><c:otherwise>标签作用相似,只是使用的条件表达式不同。

<x;choose>是主标签,<x:when><x:otherwise>放在<x:choose>标签体内共同使用。

【语法】:

<x:choose>

<x:when>

<x:when>

<x:otherwise>

</x:choose>

其中只有<x:when>有属性。

【语法】:

<x:whenselect=”XPathExperssion”>

3<x:forEach>标签

<x;forEach>标签实现了对xml文档的遍历。

【语法】:

<x:forEachselect=”XPathExperssion”[var=”name”][varStartus=”StartusName”]

[begin=”begin”][end=”end”][step=”step”]

//标签主体

</x:forEach>

【参数说明】:见表9-22

9-22 <x:forEach>标签属性说明

属性名

说明

EL

类型

必须

默认值

select

指定使用的XPath语句

String

var

用于存储表达式的结果

String

varStatus

用来存放循环到的变量的相关信息

String

begin

循环的起始位置

int

end

循环的终止位置

int

9.5.3 xml的文件转换

<x:transform><x:param>能轻易使用XSLT样式包装xml文件,成为另一种显示方式。

1<x:transform>标签

使用该标签可以轻松的实现xmlXSLT的转化。

【语法1】:

<x:transform doc=”xmldoc”xslt=”XSLTStytlesheet”[docSystemId=”xmlsystemid”]

[result=”result”]

[var=”name”]

[scope=”scopeName”]

[xsltSystemId=”xsltsystemid”]/>

【语法2】:

<x:transform doc=”xmldoc”xslt=”XSLTStytlesheet”[docSystemId=”xmlsystemid”]

[result=”result”]

[var=”name”]

[scope=”scopeName”]

[xsltSystemId=”xsltsystemid”]

<x:param/>

</x:transform>

【语法3】:

<x:transform doc=”xmldoc”xslt=”XSLTStytlesheet”[docSystemId=”xmlsystemid”]

[result=”result”]

[var=”name”]

[scope=”scopeName”]

[xsltSystemId=”xsltsystemid”]

Xml文件内容

<x:param/>

</x:transform>

【参数说明】:见表9-23

9-23 <x:transform>标签属性说明

属性名

说明

EL

类型

必须

默认值

doc

指定xml文件来源

String

xslt

转化xml的样式模板

String

docSystemId

xml文件的URI

String

xsltSystemId

xslt文件的URI

String

result

用来存储转换后的结果对象

java.xml.transform

var

org.w3c.dom.Documet类型存储转换后的结果

String

scope

var的属性范围

String

2<x:param>标签

该标签用来为<x:transform>标签转换参数。

【语法1】:

<x:param name=”name”value=”value”/>

【语法2】:

<x:param name=”name” value=”value”

Value

</x:param>

【参数说明】:

1name指定参数的名称。

2value指定参数值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不讲理的胖子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值