如何使用 SQL JSP 标准库:软件需求 Oracle9i Database version 9.0.1 或更新版本。您可从 Oracle 技术网下载 Oracle9i Database。 ?% R* }& [. ^* M4 J: B
4 K0 D7 [% ?* T/ l& S' M6 E
JDK1.2.x 或更高版本。可从此处下载。
: g! ]% w) y" x+ P
1 z5 t/ E# f$ A0 x4 \; A/ G
9 C& m" F! u3 K4 i" u- k% mOracle9iAS Container for Java(OC4J) version 9.0.3 或更新版本。可以在 OTN 下载。- JSP 标准标记库。您可以使用 Apache.org 提供的标准标记库 1.0 Reference Implementation
使用数据库 JSTL 标记% E3 t2 q+ J) f/ t; a# J3 V8 M
JSTL 的数据库的库支持数据库查询、更新和事务处理。JSP 页面能够使用下面的指令导入这个库。; T9 N3 @. O% ^# a
<%@ taglib prefix="sql" uri="http://java.sun.com/jstl/sql" %>
$ i0 Q4 E) n) U# Z" M9 y2 C% O! z, @3 R; B1 U
准备数据库对于没有默认数据库的 JSP 页面,<sql:setDataSource> 能够准备一个数据库以供使用。
8 u7 i$ O0 @! A2 @下面的代码展示了如何创建一个数据源。
/ Y/ y" `; G# p. I2 x- M<sql:setDataSource! _( Y3 ] P2 z* Y: N
var="example"
! ?' N2 i" z. |2 m& I7 F$ w# ]& J; B driver="oracle.jdbc.driver.OracleDriver"; M' i: E7 @1 z, A+ S# @( y9 J# p9 J
url="jdbc racle:thin localhost:1521:ORCL"
/ P+ t2 y+ _. u0 w5 ]/ t, C user="scott"
z. D* o; B) o% ~7 Q password="tiger"& E! y' B8 L2 z( c1 C
/> |
| <sql:setDataSource> 标签有如下属性:
$ w" H3 A4 w9 l8 G5 p4 c; B8 A属性 | 说明 | 是否需要 | 默认 | driver | 需要注册的 JDBC 驱动程序类的名称 | 不 | 无 | url | 用于数据库连接的 JDBC URL | 不 | 无 | user | 数据库用户名 | 不 | 无 | password | 数据库密码 | 不 | 无 | dataSource | 预先准备的数据库(字符串或) x, K3 J |' d- g K
javax.sql.DataSource) | 不 | 无 | var | 代表数据库的变量名 | 不 | 设置为默认 | scope | 代表数据库的变量的作用域 | 不 | 页面 | 查询与更新JSTL 可以使用 <sql:query> 从数据库读取数据并使用 <sql:update> 向数据库写入数据。这些标记可以通过 ? 占位符支持 SQL 命令,<sql:param> 和 <sql:dateParam> 可以填充到这些占位符中。0 }6 N2 c7 M% V+ I& t% V" L& x0 a
, _5 W1 t2 _0 n2 X5 A. F从数据库查询 <sql:query var="deejays">; N" O( {! k8 S, e
SELECT * FROM mytable: a! k+ N8 ~. Y I4 z. I
</sql:query><%-- Get the column names for the header of the table --%><c:forEach var="columnName" items="${deejays.columnNames}">( ?- K0 |. q9 V8 s* `( ~
<th><c ut value="${columnName}"/></th>6 c# x7 L( `0 s: w$ L7 o# N
</c:forEach><%-- Get the value of each column while iterating over rows --%><c:forEach var="row" items="${deejays.rows}">
3 k p2 i; H; M2 k" Y8 A% X <tr>) c. O3 |- X% g3 ?0 c3 @% J* M: }
<c:forEach var="column" items="${row}">
5 y$ T$ T. Z; P7 ^, I+ z <td><c ut value="${column.value}"/></td>) i2 J; B! U$ g& `" \9 t0 d
</c:forEach>6 I+ _6 \, ?3 D
</tr>
/ F- f# w: l7 S+ t1 x' w</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
0 h F& i! P+ s3 l: }</sql:update> |
| <sql:update> 标记用于 DML 操作。在更新查询中可以有 '?'。然后您可以使用 <sql:parm> 把一个值与 ? 相关联。<sql:parm> 的值可以从一个变量中获取(如 HTTP 参数)。
% u/ I2 j B$ x7 W1 ~6 m" f b您可以查看完整的源代码以了解如何创建一个表以及其撤消方法。 3 O" G% T2 f- o' ?9 m6 Z
安装为了运行此代码,您需要配置 OC4J 以使用 JSTL。
8 x( R4 q: H: _- z" b+ s- 把从 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 运行它
|