JSTL详解(六)

来源:互联网 发布:淘宝网商城女鞋 编辑:程序博客网 时间:2024/04/28 02:22

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_committed read_uncommitted repeatable_read serializable4 个隔离级别。

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

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