如何使用 SQL JSP 标准库:软件需求 Oracle9i Database version 9.0.1 或更新版本。您可从 Oracle 技术网下载 Oracle9i Database。 : m7 ~' r! `/ t9 k/ B
: K# A" D J8 U' A/ y8 E& a
JDK1.2.x 或更高版本。可从此处下载。
9 @6 Z" D* P; E7 p
% G; e7 o" C) _' I8 _. J" L8 P# k' Z3 |) F% K( ]! c
Oracle9iAS Container for Java(OC4J) version 9.0.3 或更新版本。可以在 OTN 下载。- JSP 标准标记库。您可以使用 Apache.org 提供的标准标记库 1.0 Reference Implementation
使用数据库 JSTL 标记6 O* N s% k/ l4 ~! `6 C$ L, @
JSTL 的数据库的库支持数据库查询、更新和事务处理。JSP 页面能够使用下面的指令导入这个库。
* R& ?. ?5 [0 s0 a- Q<%@ taglib prefix="sql" uri="http://java.sun.com/jstl/sql" %>% E. h+ D8 Z- R0 [/ h, K
8 A1 k7 V$ [- e
准备数据库对于没有默认数据库的 JSP 页面,<sql:setDataSource> 能够准备一个数据库以供使用。
- ^0 j: w& B0 A- c5 I1 Z下面的代码展示了如何创建一个数据源。5 [. y: O+ b" Q2 o6 V
<sql:setDataSource% L# A# `6 y% }! N8 O% O
var="example"
9 m" Q6 I% ]. B" a7 l driver="oracle.jdbc.driver.OracleDriver"
5 o* N' G/ i% W6 ^) i/ | url="jdbc racle:thin localhost:1521:ORCL"
" v9 D+ k: |- y% s% { user="scott"
2 d' e' E% x" s) } password="tiger"+ Z8 a- R# C1 T4 X: e
/> |
| <sql:setDataSource> 标签有如下属性:. o) F) ~/ b* L, M, B8 t' g) h
| 属性 | 说明 | 是否需要 | 默认 | | driver | 需要注册的 JDBC 驱动程序类的名称 | 不 | 无 | | url | 用于数据库连接的 JDBC URL | 不 | 无 | | user | 数据库用户名 | 不 | 无 | | password | 数据库密码 | 不 | 无 | | dataSource | 预先准备的数据库(字符串或
0 ? {9 Q% X1 o, n( O/ J0 D! Rjavax.sql.DataSource) | 不 | 无 | | var | 代表数据库的变量名 | 不 | 设置为默认 | | scope | 代表数据库的变量的作用域 | 不 | 页面 | 查询与更新JSTL 可以使用 <sql:query> 从数据库读取数据并使用 <sql:update> 向数据库写入数据。这些标记可以通过 ? 占位符支持 SQL 命令,<sql:param> 和 <sql:dateParam> 可以填充到这些占位符中。
4 O7 J! c4 X$ m! d+ M6 X
+ p: e( ]) z! j# `- m从数据库查询 <sql:query var="deejays">; {, h v* Z- R9 y |: [
SELECT * FROM mytable
" l1 J9 a& [- w( O8 G: J+ e, J</sql:query><%-- Get the column names for the header of the table --%><c:forEach var="columnName" items="${deejays.columnNames}">9 w$ E$ w& n2 E
<th><c ut value="${columnName}"/></th>+ A8 h/ ?5 D2 _9 F+ }, g
</c:forEach><%-- Get the value of each column while iterating over rows --%><c:forEach var="row" items="${deejays.rows}"># a/ t3 m- Q% y! M! d- V0 F
<tr>
6 G: e$ @* q- C9 [ <c:forEach var="column" items="${row}">
2 J7 a7 v3 ~2 x1 ~$ d3 M: o0 x+ H <td><c ut value="${column.value}"/></td>1 F8 ~. n3 H! f2 }, S5 _: K
</c:forEach>+ k2 z# P; i! [: q s# U' n& g
</tr>+ u. O; k% b* j; R: c; k0 k
</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
7 ~" w& i/ @( ?% D) T</sql:update> |
| <sql:update> 标记用于 DML 操作。在更新查询中可以有 '?'。然后您可以使用 <sql:parm> 把一个值与 ? 相关联。<sql:parm> 的值可以从一个变量中获取(如 HTTP 参数)。( g- J% ?+ `+ l# ~6 _/ {
您可以查看完整的源代码以了解如何创建一个表以及其撤消方法。 * @# t6 A9 k8 w: c: u9 @5 A
安装为了运行此代码,您需要配置 OC4J 以使用 JSTL。6 Q) A" ?/ ^$ Z1 ]! P# ?
- 把从 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 运行它
|