如何使用 SQL JSP 标准库:软件需求 Oracle9i Database version 9.0.1 或更新版本。您可从 Oracle 技术网下载 Oracle9i Database。 3 C$ n# A3 F8 k' x) @& ] d4 l
/ I3 }! k( i: c" {% W' G
JDK1.2.x 或更高版本。可从此处下载。2 Y8 v. F' x+ X1 z; T
4 p2 ?9 d4 s: u. Q
9 r- `- E# K& h0 S6 WOracle9iAS Container for Java(OC4J) version 9.0.3 或更新版本。可以在 OTN 下载。- JSP 标准标记库。您可以使用 Apache.org 提供的标准标记库 1.0 Reference Implementation
使用数据库 JSTL 标记# `& H G5 L# P1 f! N& X
JSTL 的数据库的库支持数据库查询、更新和事务处理。JSP 页面能够使用下面的指令导入这个库。+ x7 g- h) x% _* L2 l5 `, @: e
<%@ taglib prefix="sql" uri="http://java.sun.com/jstl/sql" %>
2 t0 Z" o. N7 Q! m% q
2 Y6 V, _- x( C9 ]" q9 y0 ]准备数据库对于没有默认数据库的 JSP 页面,<sql:setDataSource> 能够准备一个数据库以供使用。
" C D$ w/ j. H" F下面的代码展示了如何创建一个数据源。1 K; l; ~6 @- u, C. j
<sql:setDataSource
8 u6 y. ?6 p# X$ K var="example"
^0 K! k, Q0 X: `3 k% i* W) c9 _ driver="oracle.jdbc.driver.OracleDriver"6 l' E5 G, N; T# ?/ e% q& r( N
url="jdbc racle:thin localhost:1521:ORCL"! K$ g7 T3 \1 g# e, H* {
user="scott"
4 @1 O9 Y. }6 R: ^, D- D; R! f password="tiger"
, p3 k7 D+ f% d Y7 |3 ?( V4 G/> |
| <sql:setDataSource> 标签有如下属性:6 f ^, R5 S2 A" ^7 X6 X
| 属性 | 说明 | 是否需要 | 默认 | | driver | 需要注册的 JDBC 驱动程序类的名称 | 不 | 无 | | url | 用于数据库连接的 JDBC URL | 不 | 无 | | user | 数据库用户名 | 不 | 无 | | password | 数据库密码 | 不 | 无 | | dataSource | 预先准备的数据库(字符串或
) q3 w. [' ~3 x5 j9 b2 }javax.sql.DataSource) | 不 | 无 | | var | 代表数据库的变量名 | 不 | 设置为默认 | | scope | 代表数据库的变量的作用域 | 不 | 页面 | 查询与更新JSTL 可以使用 <sql:query> 从数据库读取数据并使用 <sql:update> 向数据库写入数据。这些标记可以通过 ? 占位符支持 SQL 命令,<sql:param> 和 <sql:dateParam> 可以填充到这些占位符中。
, r2 P# G# z3 {; @5 H9 f
; D8 D* G7 J8 A" o/ }从数据库查询 <sql:query var="deejays">
. A7 Y" A, V8 h! T7 M/ t( ` SELECT * FROM mytable
( y3 f1 c P9 ?: X6 g</sql:query><%-- Get the column names for the header of the table --%><c:forEach var="columnName" items="${deejays.columnNames}">
- u! V6 Y9 g0 n4 G5 l <th><c ut value="${columnName}"/></th>% L: J7 A R% Q8 w8 j
</c:forEach><%-- Get the value of each column while iterating over rows --%><c:forEach var="row" items="${deejays.rows}">
/ w F/ d4 a7 H8 K4 a <tr>
, l+ R' B3 i: c1 R+ w7 f4 \: c% L9 K <c:forEach var="column" items="${row}">9 ?' ]5 t' L3 {$ a r$ e0 M. w
<td><c ut value="${column.value}"/></td>- l) Q, z+ l4 X& y' R: H1 J
</c:forEach>
$ X( f9 l2 s1 n# i </tr>: W4 Q7 B/ _ c9 q3 ]
</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=1- d" Q9 d$ X' j4 L
</sql:update> |
| <sql:update> 标记用于 DML 操作。在更新查询中可以有 '?'。然后您可以使用 <sql:parm> 把一个值与 ? 相关联。<sql:parm> 的值可以从一个变量中获取(如 HTTP 参数)。
! y) O( m9 t7 ]. v您可以查看完整的源代码以了解如何创建一个表以及其撤消方法。
- ~ h+ Z5 Q( d$ }安装为了运行此代码,您需要配置 OC4J 以使用 JSTL。
* P! I2 ]( W2 V* k( Q% u K- 把从 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 运行它
|