JSTL与Struts的结合(七)

来源:互联网 发布:数据分析助力销售业绩 编辑:程序博客网 时间:2024/05/29 15:48

用于解析数字的<fmt:parseNumber>标签

<fmt:parseNumber>标签用于解析一个数字,并将结果作为java.lang.Number类的实例返回。<fmt:parseNumber>标签看起来和<fmt:formatNumber>标签的作用正好相反。它的属性和描述如表9.22所示:

9.22 <fmt:parseNumber>标签属性和说明

属性

描述

value

将被解析的字符串

type

解析格式化的类型

pattern

解析格式化模式

var

结果保存变量,类型为java.lang.Number

scope

变量的作用范围

parseLocale

以本地化的形式来解析字符串,该属性的内容应为Stringjava.util.Locale类型的实例

下面看一个示例。

<fmt:parseNumber value="15%" type="percent" var="num"/>

解析之后的结果为“0.15”。

9.5.10  用于格式化日期的<fmt:formatDate>标签

<fmt:formatDate>标签用于格式化日期。它的属性和描述如表9.23所示:

9.23 <fmt:formatDate>标签属性和说明

属性

描述

value

格式化的日期,该属性的内容应该是java.util.Date类型的实例

type

格式化的类型

pattern

格式化模式

var

结果保存变量

scope

变量的作用范围

timeZone

指定格式化日期的时区

<fmt:formatDate>标签与<fmt:timeZone><fmt:setTimeZone>两组标签的关系密切。若没有指定timeZone属性,也可以通过<fmt:timeZone><fmt:setTimeZone>两组标签设定的时区来格式化最后的结果。

9.5.11  用于解析日期的<fmt:parseDate>标签

<fmt:parseDate>标签用于解析一个日期,并将结果作为java.lang.Date类型的实例返回。<fmt:parseDate>标签看起来和<fmt:formatDate>标签的作用正好相反。它的属性和描述如表9.24所示:

9.24 <fmt:parseDate>标签属性和说明

属性

描述

value

将被解析的字符串

type

解析格式化的类型

pattern

解析格式化模式

var

结果保存变量,类型为java.lang.Date

scope

变量的作用范围

parseLocale

本地化的形式来解析字符串,该属性的内容为Stringjava.util.Locale类型的实例

timeZone

指定解析格式化日期的时区

<fmt:parseNumber><fmt:parseDate>两组标签都实现解析字符串为一个具体对象实例的工作,因此,这两组解析标签对var属性的字符串参数要求非常严格。就JSP页面的表示层前段来说,处理这种解析本不属于份内之事,因此<fmt:parseNumber><fmt:parseDate>两组标签应该尽量少用,替代工作的地方应该在服务器端表示层的后段,比如在Servlet中。

9.6  Database access标签库

Database access标签库中的标签用来提供在JSP页面中可以与数据库进行交互的功能,虽然它的存在对于早期纯JSP开发的应用以及小型的开发有着意义重大的贡献,但是对于MVC模型来说,它却是违反规范的。因为与数据库交互的工作本身就属于业务逻辑层的工作,所以不应该在JSP页面中出现,而是应该在模型层中进行。

对于Database access标签库本书不作重点介绍,只给出几个简单示例让读者略微了解它们的功能。

Database access标签库有以下6组标签来进行工作:<sql:setDataSource><sql:query><sql:update><sql:transaction><sql:setDataSource><sql:param><sql:dateParam>

9.6.1  用于设置数据源的<sql:setDataSource>标签

<sql:setDataSource>标签用于设置数据源,下面看一个示例:

<sql:setDataSource

         var="dataSrc"

         url="jdbc:postgresql://localhost:5432/myDB"

         driver="org.postgresql.Driver"

         user="admin"

         password="1111"/>

该示例定义一个数据源并保存在“dataSrc”变量内。

9.6.2  用于查询的<sql:query>标签

<sql:query>标签用于查询数据库,它标签体内可以是一句查询SQL。下面看一个示例:

<sql:query var="queryResults" dataSource="${dataSrc}">

       select * from table1

</sql:query>

该示例将返回查询的结果到变量“queryResults”中,保存的结果是javax.servlet.jsp.jstl.sql.Result类型的实例。要取得结果集中的数据可以使用<c:forEach>循环来进行。下面看一个示例。

<c:forEach var="row" items="${queryResults.rows}">

       <tr>

               <td>${row.userName}</td>

                   <td>${row.passWord}</td>

       </tr>

</c:forEach>

“rows”是javax.servlet.jsp.jstl.sql.Result实例变量属性之一,用来表示数据库表中的“列”集合,循环时,通过“${row.XXX}”表达式可以取得每一列的数据,“XXX”是表中的列名。

9.6.3  用于更新的<sql:update>标签

<sql:update>标签用于更新数据库,它的标签体内可以是一句更新的SQL语句。其使用和<sql:query>标签没有什么不同。

9.6.4  用于事务处理的<sql:transaction>标签

<sql:transaction>标签用于数据库的事务处理,在该标签体内可以使用<sql:update>标签和<sql:query>标签,而<sql:transaction>标签的事务管理将作用于它们之上。

<sql:transaction>标签对于事务处理定义了read_committedread_uncommittedrepeatable_readserializable4个隔离级别。

9.6.5  用于事务处理的<sql:param><sql:dateParam>标签

这两个标签用于向SQL语句提供参数,就好像程序中预处理SQL的“?”一样。<sql:param>标签传递除java.util.Date类型以外的所有相融参数,<sql:dateParam>标签则指定必须传递java.util.Date类型的参数。

原创粉丝点击