如何使用 SQL JSP 标准库:软件需求 Oracle9i Database version 9.0.1 或更新版本。您可从 Oracle 技术网下载 Oracle9i Database。 5 C( |; ]; V" L# K
1 P3 O/ H; H: N. N) a3 f( RJDK1.2.x 或更高版本。可从此处下载。
% G' N# C! o% X; \
7 E% \6 n3 j, h9 A
2 s+ Z2 O6 {* \5 @' k" fOracle9iAS Container for Java(OC4J) version 9.0.3 或更新版本。可以在 OTN 下载。- JSP 标准标记库。您可以使用 Apache.org 提供的标准标记库 1.0 Reference Implementation
使用数据库 JSTL 标记
' O. f& g* d+ R; g& kJSTL 的数据库的库支持数据库查询、更新和事务处理。JSP 页面能够使用下面的指令导入这个库。9 j5 D2 W& y' O4 \
<%@ taglib prefix="sql" uri="http://java.sun.com/jstl/sql" %>3 N. A2 T/ Y% }5 H w6 e O
9 y" N, E6 `" z0 ]1 L! K
准备数据库对于没有默认数据库的 JSP 页面,<sql:setDataSource> 能够准备一个数据库以供使用。; S; k) ^: K$ M' g; e9 U5 a q4 ]8 ]
下面的代码展示了如何创建一个数据源。. t' G& {8 J" h% T# B
<sql:setDataSource/ n! k( \' x+ b9 \ I& p
var="example"7 g. ~3 X5 c# [2 W/ F
driver="oracle.jdbc.driver.OracleDriver"
1 f' g3 ]/ C' K9 Y url="jdbc racle:thin localhost:1521:ORCL"
8 b3 T1 B, w. x( I& s" S user="scott"' I6 L8 Y s/ h( v3 ]' K
password="tiger"
1 b: l% l! f, t! [, K: y0 H/> |
| <sql:setDataSource> 标签有如下属性:. {5 \/ h* }: S3 f6 E
| 属性 | 说明 | 是否需要 | 默认 | | driver | 需要注册的 JDBC 驱动程序类的名称 | 不 | 无 | | url | 用于数据库连接的 JDBC URL | 不 | 无 | | user | 数据库用户名 | 不 | 无 | | password | 数据库密码 | 不 | 无 | | dataSource | 预先准备的数据库(字符串或
* G* G9 ^- V4 ^6 ?9 z9 _javax.sql.DataSource) | 不 | 无 | | var | 代表数据库的变量名 | 不 | 设置为默认 | | scope | 代表数据库的变量的作用域 | 不 | 页面 | 查询与更新JSTL 可以使用 <sql:query> 从数据库读取数据并使用 <sql:update> 向数据库写入数据。这些标记可以通过 ? 占位符支持 SQL 命令,<sql:param> 和 <sql:dateParam> 可以填充到这些占位符中。$ y4 b8 L7 ~2 i5 {+ j9 U! U
, k* \" k i& \% J( T5 M# G b
从数据库查询 <sql:query var="deejays">* {6 ~8 S2 ~: F0 c/ H- Y) p' A. N
SELECT * FROM mytable
4 }" L5 U0 x4 j</sql:query><%-- Get the column names for the header of the table --%><c:forEach var="columnName" items="${deejays.columnNames}">3 d& w# T* C4 v
<th><c ut value="${columnName}"/></th>$ W. p: @6 ~ J8 e. I: A1 N, I
</c:forEach><%-- Get the value of each column while iterating over rows --%><c:forEach var="row" items="${deejays.rows}">
* S8 g' O* r2 N: y- o+ ^' Y <tr>
( d& C3 i+ l, |" I# j- H <c:forEach var="column" items="${row}">- m/ D" L, K0 v9 m3 i
<td><c ut value="${column.value}"/></td>
# _1 N% X1 U+ m8 K# E </c:forEach>: o" A9 R) h2 u' g
</tr>8 K% v" W: j, O3 j6 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
4 q" {% P% s. I7 h5 m8 H) Z</sql:update> |
| <sql:update> 标记用于 DML 操作。在更新查询中可以有 '?'。然后您可以使用 <sql:parm> 把一个值与 ? 相关联。<sql:parm> 的值可以从一个变量中获取(如 HTTP 参数)。( ]7 `9 K G- f4 |! z- \
您可以查看完整的源代码以了解如何创建一个表以及其撤消方法。 2 s5 ?1 U0 C4 K5 E! D& p. n( T2 N, U
安装为了运行此代码,您需要配置 OC4J 以使用 JSTL。, v& H4 W/ l! Q) p ]# B5 ~) Y
- 把从 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 运行它
|