如何使用 SQL JSP 标准库:软件需求 Oracle9i Database version 9.0.1 或更新版本。您可从 Oracle 技术网下载 Oracle9i Database。 4 H0 G( \& \$ W' u* `
! {# p# K9 F) t# B# jJDK1.2.x 或更高版本。可从此处下载。
' }( p1 B, Q( q m/ ]' p" B( B( n. |- X8 | i- I" r6 v* B- C5 Q
- N% e, J V; r0 [' R( e. E+ u
Oracle9iAS Container for Java(OC4J) version 9.0.3 或更新版本。可以在 OTN 下载。- JSP 标准标记库。您可以使用 Apache.org 提供的标准标记库 1.0 Reference Implementation
使用数据库 JSTL 标记3 }' b. Q4 v9 a: t* [$ o; C8 T
JSTL 的数据库的库支持数据库查询、更新和事务处理。JSP 页面能够使用下面的指令导入这个库。* K& H) S0 Z7 M' N3 I
<%@ taglib prefix="sql" uri="http://java.sun.com/jstl/sql" %>) k; I6 N8 O) y3 \, C/ _/ ~
0 m# Y' g$ u8 |8 J, \2 u: m8 z5 C
准备数据库对于没有默认数据库的 JSP 页面,<sql:setDataSource> 能够准备一个数据库以供使用。
7 z2 w+ d d- k; e5 C4 \8 Q下面的代码展示了如何创建一个数据源。
' [* X5 s* ~; d4 Y+ O<sql:setDataSource' V/ o' n" J; P% P; c: w; i- n
var="example"
- w9 W% c7 E9 \4 n/ T; u( w7 G5 B driver="oracle.jdbc.driver.OracleDriver"" v* F. o! b) ]2 x- j
url="jdbc racle:thin localhost:1521:ORCL"! a4 w8 `7 X5 v, w/ G) z5 k9 [* |
user="scott"
2 z K$ J7 x; j) ? password="tiger"9 E- U# C4 ? s) E
/> |
| <sql:setDataSource> 标签有如下属性:( k; k9 |: J* P) c3 [& T
属性 | 说明 | 是否需要 | 默认 | driver | 需要注册的 JDBC 驱动程序类的名称 | 不 | 无 | url | 用于数据库连接的 JDBC URL | 不 | 无 | user | 数据库用户名 | 不 | 无 | password | 数据库密码 | 不 | 无 | dataSource | 预先准备的数据库(字符串或3 p; R9 i% @& W. s0 j$ z8 }4 z+ Q. R
javax.sql.DataSource) | 不 | 无 | var | 代表数据库的变量名 | 不 | 设置为默认 | scope | 代表数据库的变量的作用域 | 不 | 页面 | 查询与更新JSTL 可以使用 <sql:query> 从数据库读取数据并使用 <sql:update> 向数据库写入数据。这些标记可以通过 ? 占位符支持 SQL 命令,<sql:param> 和 <sql:dateParam> 可以填充到这些占位符中。
0 W0 g0 K! m# @% {: z. } F- N# I5 d+ ~
0 y* Z' s; Q/ B* ], Z. \ e9 `从数据库查询 <sql:query var="deejays">* ^* Z M$ G& n& E E1 _9 D# s
SELECT * FROM mytable
/ G* c3 W) }$ f/ K</sql:query><%-- Get the column names for the header of the table --%><c:forEach var="columnName" items="${deejays.columnNames}">
+ ]! r' U) ~5 i0 z% K; t <th><c ut value="${columnName}"/></th>
* |8 b H8 {) u4 j! O</c:forEach><%-- Get the value of each column while iterating over rows --%><c:forEach var="row" items="${deejays.rows}">
' l3 z! c/ O; K: ?; | <tr>
1 _9 R: f5 N# K! q7 _! ~- E* M <c:forEach var="column" items="${row}">
8 t8 m: O# o! q# Y) ] <td><c ut value="${column.value}"/></td>2 n( ]2 G d M7 a# N
</c:forEach>
h0 G+ B% S1 J0 m% i1 L- f% x </tr>' i. g: q: l2 C* u, S
</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( w; r/ g) ~4 t! }. L6 E& ~
</sql:update> |
| <sql:update> 标记用于 DML 操作。在更新查询中可以有 '?'。然后您可以使用 <sql:parm> 把一个值与 ? 相关联。<sql:parm> 的值可以从一个变量中获取(如 HTTP 参数)。
8 e% I2 [5 x) K7 ~您可以查看完整的源代码以了解如何创建一个表以及其撤消方法。 2 o7 w. o m0 Z2 x5 r- [
安装为了运行此代码,您需要配置 OC4J 以使用 JSTL。& w, W5 C, v3 ^5 c+ B
- 把从 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 运行它
|