如何使用 SQL JSP 标准库:软件需求 Oracle9i Database version 9.0.1 或更新版本。您可从 Oracle 技术网下载 Oracle9i Database。
' }/ _" N) s4 |1 O/ _+ I- O4 b* s$ m# s5 Z; ^" P4 H
JDK1.2.x 或更高版本。可从此处下载。
5 Z; p8 |9 J( N; ?" U! K
% w' H$ K, ]! q- q5 y: V- A
; R2 o) {! T. f5 D1 z9 OOracle9iAS Container for Java(OC4J) version 9.0.3 或更新版本。可以在 OTN 下载。- JSP 标准标记库。您可以使用 Apache.org 提供的标准标记库 1.0 Reference Implementation
使用数据库 JSTL 标记
' u2 _4 Z: }4 dJSTL 的数据库的库支持数据库查询、更新和事务处理。JSP 页面能够使用下面的指令导入这个库。$ T7 T& e4 V) G) r* U. e
<%@ taglib prefix="sql" uri="http://java.sun.com/jstl/sql" %>
% n, v" Q; R6 a$ u8 F4 ^4 f$ r( h) j
8 X+ ~, m' j, t# ~6 L4 M/ h2 d准备数据库对于没有默认数据库的 JSP 页面,<sql:setDataSource> 能够准备一个数据库以供使用。; a0 |5 i5 P- m( R$ l
下面的代码展示了如何创建一个数据源。
2 u1 E/ ?" r# L1 V<sql:setDataSource
: D( L! v8 t+ m( C3 w" m var="example"5 { ~9 w) V. s
driver="oracle.jdbc.driver.OracleDriver"! r& \1 B" j6 K* ~- Y
url="jdbc racle:thin localhost:1521:ORCL"
2 {- {+ E% ~3 { user="scott"" |+ y" Q0 y/ f0 ?0 \/ f
password="tiger"3 B* W6 D$ `8 P2 T+ A# x
/> |
| <sql:setDataSource> 标签有如下属性:& R# x" y u) J" }' j: N1 R% e0 K
属性 | 说明 | 是否需要 | 默认 | driver | 需要注册的 JDBC 驱动程序类的名称 | 不 | 无 | url | 用于数据库连接的 JDBC URL | 不 | 无 | user | 数据库用户名 | 不 | 无 | password | 数据库密码 | 不 | 无 | dataSource | 预先准备的数据库(字符串或/ A* H( w- T7 k+ a; E9 {2 V( O' O+ Y
javax.sql.DataSource) | 不 | 无 | var | 代表数据库的变量名 | 不 | 设置为默认 | scope | 代表数据库的变量的作用域 | 不 | 页面 | 查询与更新JSTL 可以使用 <sql:query> 从数据库读取数据并使用 <sql:update> 向数据库写入数据。这些标记可以通过 ? 占位符支持 SQL 命令,<sql:param> 和 <sql:dateParam> 可以填充到这些占位符中。! i T; F- d; S: K& D3 [
; R# V" A/ M7 {- U0 u2 b
从数据库查询 <sql:query var="deejays">7 x0 w# x0 C. V- h: ~& G# ~
SELECT * FROM mytable0 c1 x5 d; T' f8 x
</sql:query><%-- Get the column names for the header of the table --%><c:forEach var="columnName" items="${deejays.columnNames}">. C- n' V8 ] G: I4 m+ {
<th><c ut value="${columnName}"/></th>' m/ U6 A W) M
</c:forEach><%-- Get the value of each column while iterating over rows --%><c:forEach var="row" items="${deejays.rows}">
; e1 e/ ?8 l4 d5 z; x% [7 [ <tr>
5 H C. o' X0 M d' q! W! c) | <c:forEach var="column" items="${row}">
" [/ x4 b& a" I# g& x: `- y <td><c ut value="${column.value}"/></td>
, y4 w6 B( ^2 y6 Z" i9 j1 J </c:forEach>* F9 H& Z' U5 P. z" ]. s) ]
</tr> U/ k" W4 D6 l* j5 Z
</c:forEach> |
|
<sql:query> 标记可用来查询数据库,核心标记 <c:forEach> 用于遍历结果集。<c:forEach> 标记读取查询中的每一行。您可以使用列名来获取行中每一列的值。核心标记 <c ut> 用于输出值。 更新表中的一列 <sql:update var="updateCount" dataSource="${example}"> UPDATE mytable SET name=? <sql:param value="Scott Tiger"/> WHERE nameid=19 ^4 P" o& v* C1 M
</sql:update> |
| <sql:update> 标记用于 DML 操作。在更新查询中可以有 '?'。然后您可以使用 <sql:parm> 把一个值与 ? 相关联。<sql:parm> 的值可以从一个变量中获取(如 HTTP 参数)。
' Y. x- @8 P& H您可以查看完整的源代码以了解如何创建一个表以及其撤消方法。 ! J$ O6 X0 Y; }$ Y2 }
安装为了运行此代码,您需要配置 OC4J 以使用 JSTL。
( _2 U5 l: }+ l8 @; y) Z- f9 q9 j6 R- 把从 Apache 下载的文件 jakarta-taglibs-standard-1.0.zip 解压缩到一个目录中,比如 D:\mydir。
- 把目录 D:\mydir\jakarta-taglibs\jstl-1.0\lib 中的文件复制到 <J2EE_HOME>\default-web-app\WEB-INF\lib。如果不存在目录 <J2EE_HOME>\default-web-app\WEB-INF\lib,则创建它。
- 把文件 JstlSql.jsp 复制到目录 <J2EE_HOME>\default-web-app\examples\jsp
- 从 http://<host-name>:<port>/examples/jsp/JstlSql.jsp 运行它
|