如何使用 SQL JSP 标准库:软件需求 Oracle9i Database version 9.0.1 或更新版本。您可从 Oracle 技术网下载 Oracle9i Database。 ' o: S/ ^2 Z X6 o2 y! z' Q# G) Z
t8 x0 y' c' \) G* M6 W H$ c
JDK1.2.x 或更高版本。可从此处下载。
$ ]- A2 X& r. |7 m# i' c! t3 A% J, O4 Q7 h
! {/ {1 t5 c! f6 z7 q5 w+ g
Oracle9iAS Container for Java(OC4J) version 9.0.3 或更新版本。可以在 OTN 下载。- JSP 标准标记库。您可以使用 Apache.org 提供的标准标记库 1.0 Reference Implementation
使用数据库 JSTL 标记
2 J% c! u+ I( }. W6 v& L" a6 MJSTL 的数据库的库支持数据库查询、更新和事务处理。JSP 页面能够使用下面的指令导入这个库。( g. \7 y5 B( T4 h! `% Z2 N) }: \
<%@ taglib prefix="sql" uri="http://java.sun.com/jstl/sql" %>
+ j4 V- }( W0 }! i7 X' D9 s5 t
' h. I1 K0 z5 F; L% y2 y准备数据库对于没有默认数据库的 JSP 页面,<sql:setDataSource> 能够准备一个数据库以供使用。9 H2 L/ y0 P9 M2 Z5 T
下面的代码展示了如何创建一个数据源。9 [# e' y2 l2 E0 V, H0 e7 O; B8 Y
<sql:setDataSource
8 V, r2 @' T) l, Y2 i var="example"( j* ?$ S8 j6 x; [
driver="oracle.jdbc.driver.OracleDriver"
% a; ]* ]5 z7 d url="jdbc racle:thin localhost:1521:ORCL"- y S' m0 _4 _! J1 i% K, J
user="scott"
- j% d9 ~% @3 B4 D* F, @4 C) A password="tiger": u6 m' `) l: g9 G- ]& F" X2 Y
/> |
| <sql:setDataSource> 标签有如下属性:
3 Z; B. D" S$ r! G) N属性 | 说明 | 是否需要 | 默认 | driver | 需要注册的 JDBC 驱动程序类的名称 | 不 | 无 | url | 用于数据库连接的 JDBC URL | 不 | 无 | user | 数据库用户名 | 不 | 无 | password | 数据库密码 | 不 | 无 | dataSource | 预先准备的数据库(字符串或
) B/ G+ h! R. [0 njavax.sql.DataSource) | 不 | 无 | var | 代表数据库的变量名 | 不 | 设置为默认 | scope | 代表数据库的变量的作用域 | 不 | 页面 | 查询与更新JSTL 可以使用 <sql:query> 从数据库读取数据并使用 <sql:update> 向数据库写入数据。这些标记可以通过 ? 占位符支持 SQL 命令,<sql:param> 和 <sql:dateParam> 可以填充到这些占位符中。' E% }2 f [! a+ W- q8 ^
% ~: o5 j, N5 x0 u) K& K从数据库查询 <sql:query var="deejays">
5 ^( o# e4 m9 B. f SELECT * FROM mytable" a# y9 `' x3 F6 o- J5 B* r
</sql:query><%-- Get the column names for the header of the table --%><c:forEach var="columnName" items="${deejays.columnNames}">
2 n: ?" t: h5 J( T. ~5 Y. X! R <th><c ut value="${columnName}"/></th>
) r5 J8 P k! ^- a% m7 r</c:forEach><%-- Get the value of each column while iterating over rows --%><c:forEach var="row" items="${deejays.rows}">
6 u: V$ @- x9 G7 `" | <tr>9 W0 r' Y, n6 D. V+ }
<c:forEach var="column" items="${row}">
" v* w, l! R. |; `* S% A <td><c ut value="${column.value}"/></td>1 m, c0 s ~" Q" k9 N0 ~
</c:forEach>
7 a( m6 f7 A- |$ \6 ~' H, I! j* \ </tr>( `% ~; C! d) u/ f" m
</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$ Z/ U( g- f& B' _# `$ b* |
</sql:update> |
| <sql:update> 标记用于 DML 操作。在更新查询中可以有 '?'。然后您可以使用 <sql:parm> 把一个值与 ? 相关联。<sql:parm> 的值可以从一个变量中获取(如 HTTP 参数)。- i; y- t# _& R' @& T! s5 g, ?
您可以查看完整的源代码以了解如何创建一个表以及其撤消方法。 8 N' m9 s% T3 A
安装为了运行此代码,您需要配置 OC4J 以使用 JSTL。, o1 r. N3 f0 a( ^6 c. q
- 把从 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 运行它
|