如何使用 SQL JSP 标准库:软件需求 Oracle9i Database version 9.0.1 或更新版本。您可从 Oracle 技术网下载 Oracle9i Database。 8 _+ \: |+ z' {6 W
2 V7 L! e& ~* D' d+ ^# |' |
JDK1.2.x 或更高版本。可从此处下载。# e) e- k8 y4 l7 n; R: n* W: f
7 a9 L {/ p4 F5 B: F6 h# f) s+ e$ Y7 T- t2 i
Oracle9iAS Container for Java(OC4J) version 9.0.3 或更新版本。可以在 OTN 下载。- JSP 标准标记库。您可以使用 Apache.org 提供的标准标记库 1.0 Reference Implementation
使用数据库 JSTL 标记1 {) J, h5 S& A( o7 Y
JSTL 的数据库的库支持数据库查询、更新和事务处理。JSP 页面能够使用下面的指令导入这个库。6 {2 j) A5 p# v) Q3 s3 t3 _- w
<%@ taglib prefix="sql" uri="http://java.sun.com/jstl/sql" %># `6 g3 ~0 t& W6 s, }, P0 {
% ?2 [: ?- f: O/ j$ ^
准备数据库对于没有默认数据库的 JSP 页面,<sql:setDataSource> 能够准备一个数据库以供使用。
8 [1 Y: u1 Q+ V8 i) ^ ~下面的代码展示了如何创建一个数据源。" v1 V9 W v- f6 X
<sql:setDataSource
3 |8 U5 M. i; N0 k! o D, Z# p3 ? Z var="example"
' o" r' T" }" L driver="oracle.jdbc.driver.OracleDriver"
& T( K0 G* l. N9 W/ | url="jdbcracle:thinlocalhost:1521:ORCL"
?( B2 r6 T$ e* I& b user="scott" S6 l2 v5 J! k1 ?' h
password="tiger"
) `, g' l. l/ @1 e! R3 O/> |
| <sql:setDataSource> 标签有如下属性:
3 P& f3 t$ g9 n' U9 Y4 Z属性 | 说明 | 是否需要 | 默认 | driver | 需要注册的 JDBC 驱动程序类的名称 | 不 | 无 | url | 用于数据库连接的 JDBC URL | 不 | 无 | user | 数据库用户名 | 不 | 无 | password | 数据库密码 | 不 | 无 | dataSource | 预先准备的数据库(字符串或! @% k* [) S4 ^9 U
javax.sql.DataSource) | 不 | 无 | var | 代表数据库的变量名 | 不 | 设置为默认 | scope | 代表数据库的变量的作用域 | 不 | 页面 | 查询与更新JSTL 可以使用 <sql:query> 从数据库读取数据并使用 <sql:update> 向数据库写入数据。这些标记可以通过 ? 占位符支持 SQL 命令,<sql:param> 和 <sql:dateParam> 可以填充到这些占位符中。
: @- T4 `# Z# [, |7 H$ v; t. c, a H1 ~7 W4 _
从数据库查询 <sql:query var="deejays">
8 I# \2 l8 Z; \ SELECT * FROM mytable
$ k' [2 s5 `( O% d6 r0 J</sql:query><%-- Get the column names for the header of the table --%><c:forEach var="columnName" items="${deejays.columnNames}">; n7 p4 e9 d# w6 T) i( @* T. o
<th><cut value="${columnName}"/></th>
4 ^( Z6 ^' `: E% P8 ?4 w</c:forEach><%-- Get the value of each column while iterating over rows --%><c:forEach var="row" items="${deejays.rows}">
* {; ~; @0 M. Z1 q& S f4 r <tr>
; O2 \3 o) m: t <c:forEach var="column" items="${row}">
2 P& |8 T& v) h2 V <td><cut value="${column.value}"/></td># Q! y! q N! \2 x7 h! P x
</c:forEach>' t: A2 F/ d4 p9 t
</tr>
! u h) m' Y- s</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
! w2 a, h( R: O- [8 t; b/ ~+ B" d</sql:update> |
| <sql:update> 标记用于 DML 操作。在更新查询中可以有 '?'。然后您可以使用 <sql:parm> 把一个值与 ? 相关联。<sql:parm> 的值可以从一个变量中获取(如 HTTP 参数)。
0 e! T6 E0 D) c' O: f您可以查看完整的源代码以了解如何创建一个表以及其撤消方法。 ! r( {: `- I5 |4 c$ e9 ^% g- i1 j
安装为了运行此代码,您需要配置 OC4J 以使用 JSTL。" E- z# C# K! |! R9 W
- 把从 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 运行它
|