如何使用 SQL JSP 标准库:软件需求 Oracle9i Database version 9.0.1 或更新版本。您可从 Oracle 技术网下载 Oracle9i Database。
0 m+ B9 D6 G$ Z/ E1 G; m6 D0 S* W) e5 E( T) G5 D, A' I
JDK1.2.x 或更高版本。可从此处下载。
& O, C" R% ~- S+ k Y6 l! y4 ~7 Y# K! y4 {( q
9 A+ r; ]% |$ u4 l6 O, Y5 C. s
Oracle9iAS Container for Java(OC4J) version 9.0.3 或更新版本。可以在 OTN 下载。- JSP 标准标记库。您可以使用 Apache.org 提供的标准标记库 1.0 Reference Implementation
使用数据库 JSTL 标记
& @* H8 u( F- b3 l/ iJSTL 的数据库的库支持数据库查询、更新和事务处理。JSP 页面能够使用下面的指令导入这个库。
3 v8 [% O( N- H6 g8 V# f; p0 k<%@ taglib prefix="sql" uri="http://java.sun.com/jstl/sql" %>
6 d1 d) F; t4 ~
1 W) V( ?- A5 K* N* L9 L3 _准备数据库对于没有默认数据库的 JSP 页面,<sql:setDataSource> 能够准备一个数据库以供使用。
3 x! S9 f4 ]4 T1 D下面的代码展示了如何创建一个数据源。4 _. T j' W' W4 _. Z) m
<sql:setDataSource7 W( m4 ]& Z$ Z+ v6 \* B
var="example"
2 H7 ]3 B1 L) b: w: h; v- m driver="oracle.jdbc.driver.OracleDriver"/ i) P4 F2 Q; c5 O# M; ~$ i5 @7 P$ F
url="jdbcracle:thinlocalhost:1521:ORCL"
) G- j1 u6 E3 q4 {2 s9 d user="scott"
9 U3 C3 ]7 v A% I) s password="tiger"! E# |# N) ^# }6 m& H
/> |
| <sql:setDataSource> 标签有如下属性:+ B, t" j; \# _7 a5 U |0 }" f4 }6 D
属性 | 说明 | 是否需要 | 默认 | driver | 需要注册的 JDBC 驱动程序类的名称 | 不 | 无 | url | 用于数据库连接的 JDBC URL | 不 | 无 | user | 数据库用户名 | 不 | 无 | password | 数据库密码 | 不 | 无 | dataSource | 预先准备的数据库(字符串或
- d/ b& J; f7 i$ ~& }7 B1 G- j1 Y$ Z$ zjavax.sql.DataSource) | 不 | 无 | var | 代表数据库的变量名 | 不 | 设置为默认 | scope | 代表数据库的变量的作用域 | 不 | 页面 | 查询与更新JSTL 可以使用 <sql:query> 从数据库读取数据并使用 <sql:update> 向数据库写入数据。这些标记可以通过 ? 占位符支持 SQL 命令,<sql:param> 和 <sql:dateParam> 可以填充到这些占位符中。
; ?( A# E/ M( Q* t. z( Q- |7 K; z* F$ g
从数据库查询 <sql:query var="deejays">/ t* l0 K4 w4 b" q( i
SELECT * FROM mytable
) Z& N! D0 c8 ?9 h( d/ Q</sql:query><%-- Get the column names for the header of the table --%><c:forEach var="columnName" items="${deejays.columnNames}">+ o0 Q, M6 ]" d( s$ X1 X' H( [8 p
<th><cut value="${columnName}"/></th>0 L# \* p1 A/ c+ ~: S
</c:forEach><%-- Get the value of each column while iterating over rows --%><c:forEach var="row" items="${deejays.rows}">
. u+ v& S+ i& C <tr>& ?0 M1 |4 p. ?' Q% i r2 e
<c:forEach var="column" items="${row}">- v( G9 y. g7 v: h4 {' G
<td><cut value="${column.value}"/></td>
9 L0 `# G9 Z$ m/ E </c:forEach>0 V* ?: X0 R' b9 C1 H
</tr>, S9 z# @* D$ c1 W1 ?! `
</c:forEach> |
|
<sql:query> 标记可用来查询数据库,核心标记 <c:forEach> 用于遍历结果集。<c:forEach> 标记读取查询中的每一行。您可以使用列名来获取行中每一列的值。核心标记 <cut> 用于输出值。 更新表中的一列 <sql:update var="updateCount" dataSource="${example}"> UPDATE mytable SET name=? <sql:param value="Scott Tiger"/> WHERE nameid=1, a7 G6 Q+ M5 k- @4 t @9 Q/ W. [3 T
</sql:update> |
| <sql:update> 标记用于 DML 操作。在更新查询中可以有 '?'。然后您可以使用 <sql:parm> 把一个值与 ? 相关联。<sql:parm> 的值可以从一个变量中获取(如 HTTP 参数)。
! B, O6 b5 d5 J/ s9 X# @您可以查看完整的源代码以了解如何创建一个表以及其撤消方法。 3 u) L: \, P, w) U+ X
安装为了运行此代码,您需要配置 OC4J 以使用 JSTL。" U# n. K2 ?) p8 Y1 z
- 把从 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 运行它
|