JSTL詳解(六)
9.6 ?Database access 標簽庫
Database access 標簽庫中的標簽用來提供在 JSP 頁面中可以與數(shù)據(jù)庫進行交互的功能,雖然它的存在對于早期純 JSP 開發(fā)的應用以及小型的開發(fā)有著意義重大的貢獻,但是對于 MVC 模型來說,它卻是違反規(guī)范的。因為與數(shù)據(jù)庫交互的工作本身就屬于業(yè)務邏輯層的工作,所以不應該在 JSP 頁面中出現(xiàn),而是應該在模型層中進行。
對于 Database access 標簽庫本書不作重點介紹,只給出幾個簡單示例讓讀者略微了解它們的功能。
Database access 標簽庫有以下 6 組標簽來進行工作: <sql:setDataSource> 、 <sql:query> 、 <sql:update> 、 <sql:transaction> 、 <sql:setDataSource> 、 <sql:param> 、 <sql:dateParam> 。
9.6.1? 用于設置數(shù)據(jù)源的 <sql:setDataSource> 標簽
<sql:setDataSource> 標簽用于設置數(shù)據(jù)源,下面看一個示例:
<sql:setDataSource
???????? var="dataSrc"
???????? url="jdbc:postgresql://localhost:5432/myDB"
???????? driver="org.postgresql.Driver"
???????? user="admin"
???????? password="1111"/>
該示例定義一個數(shù)據(jù)源并保存在“ dataSrc ”變量內(nèi)。
9.6.2? 用于查詢的 <sql:query> 標簽
<sql:query> 標簽用于查詢數(shù)據(jù)庫,它標簽體內(nèi)可以是一句查詢 SQL 。下面看一個示例:
<sql:query var="queryResults" dataSource="${dataSrc}">
????? select * from table1
</sql:query>
該示例將返回查詢的結(jié)果到變量“ queryResults ”中,保存的結(jié)果是 javax.servlet.jsp.jstl.sql.Result 類型的實例。要取得結(jié)果集中的數(shù)據(jù)可以使用 <c:forEach> 循環(huán)來進行。下面看一個示例。
<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 實例的變量屬性之一,用來表示數(shù)據(jù)庫表中的“列”集合,循環(huán)時,通過“ ${row.XXX} ”表達式可以取得每一列的數(shù)據(jù),“ XXX ”是表中的列名。
9.6.3? 用于更新的 <sql:update> 標簽
<sql:update> 標簽用于更新數(shù)據(jù)庫,它的標簽體內(nèi)可以是一句更新的 SQL 語句。其使用和 <sql:query> 標簽沒有什么不同。
9.6.4? 用于事務處理的 <sql:transaction> 標簽
<sql:transaction> 標簽用于數(shù)據(jù)庫的事務處理,在該標簽體內(nèi)可以使用 <sql:update> 標簽和 <sql:query> 標簽,而 <sql:transaction> 標簽的事務管理將作用于它們之上。
<sql:transaction> 標簽對于事務處理定義了 read_committed 、 read_uncommitted 、 repeatable_read 、 serializable4 個隔離級別。
9.6.5? 用于事務處理的 <sql:param> 、 <sql:dateParam> 標簽
posted on 2007-01-18 15:18 nbt 閱讀(2393) 評論(1) 編輯 收藏 所屬分類: HTML&CSS&JavaScript