如何使用 SQL JSP 标准库:软件需求 Oracle9i Database version 9.0.1 或更新版本。您可从 Oracle 技术网下载 Oracle9i Database。 - d- e: c! I; S
& S9 Y5 R$ d5 a( z* Q
JDK1.2.x 或更高版本。可从此处下载。; Z/ r) z0 y6 y4 V+ r& n0 i! o. U
9 l# Y& j+ v+ S: |! \
# E* X( a: T) S1 z* tOracle9iAS Container for Java(OC4J) version 9.0.3 或更新版本。可以在 OTN 下载。- JSP 标准标记库。您可以使用 Apache.org 提供的标准标记库 1.0 Reference Implementation
使用数据库 JSTL 标记
; [. s- w' {+ U: K$ Z0 GJSTL 的数据库的库支持数据库查询、更新和事务处理。JSP 页面能够使用下面的指令导入这个库。
% H' @" K7 \- A3 F4 q0 e& P<%@ taglib prefix="sql" uri="http://java.sun.com/jstl/sql" %>' s1 T3 ~# d- p7 Q- y3 f
+ E9 a4 [2 }1 e4 r准备数据库对于没有默认数据库的 JSP 页面,<sql:setDataSource> 能够准备一个数据库以供使用。5 H# V8 [. k% [, s% W7 ^) i# a
下面的代码展示了如何创建一个数据源。
9 V: ]$ q' V# k* i1 Q+ ]3 s<sql:setDataSource
7 }& {+ t6 q; J% i/ c4 Q var="example", x( ^! M0 Q7 f) U2 q
driver="oracle.jdbc.driver.OracleDriver"
$ I1 Z$ e) e3 G1 X url="jdbcracle:thinlocalhost:1521:ORCL"
( g& y$ P% P n% N+ M( @ user="scott"
% _, _! V6 T- a E6 p! F' p- y password="tiger"0 Z/ c8 S- m. ]
/> |
| <sql:setDataSource> 标签有如下属性:; c1 O6 X: Z: U! \2 u2 Z; i
属性 | 说明 | 是否需要 | 默认 | driver | 需要注册的 JDBC 驱动程序类的名称 | 不 | 无 | url | 用于数据库连接的 JDBC URL | 不 | 无 | user | 数据库用户名 | 不 | 无 | password | 数据库密码 | 不 | 无 | dataSource | 预先准备的数据库(字符串或4 k, {* E! X+ n
javax.sql.DataSource) | 不 | 无 | var | 代表数据库的变量名 | 不 | 设置为默认 | scope | 代表数据库的变量的作用域 | 不 | 页面 | 查询与更新JSTL 可以使用 <sql:query> 从数据库读取数据并使用 <sql:update> 向数据库写入数据。这些标记可以通过 ? 占位符支持 SQL 命令,<sql:param> 和 <sql:dateParam> 可以填充到这些占位符中。, M! c" P$ k, w/ o
/ ?5 ]; y; _( `8 L- W从数据库查询 <sql:query var="deejays">
$ B" r) z% C% G8 @. l SELECT * FROM mytable( [7 s0 G9 l3 o K) {
</sql:query><%-- Get the column names for the header of the table --%><c:forEach var="columnName" items="${deejays.columnNames}">
0 u- F D7 u5 O1 @: ~ x <th><cut value="${columnName}"/></th>
! r- e6 r9 f( z4 Q7 G</c:forEach><%-- Get the value of each column while iterating over rows --%><c:forEach var="row" items="${deejays.rows}">& s8 B& d8 x( ~8 z. D. H4 K8 L3 U
<tr>
* j! h* I7 A6 o ?& {* I2 Y) ~ <c:forEach var="column" items="${row}">
9 @# b1 n1 i" J+ S$ l+ P! I <td><cut value="${column.value}"/></td>
+ ] x# Z+ T5 b, o/ [! o2 }. I9 N0 R: J </c:forEach>" C/ l/ z6 ^4 g% `# s
</tr>
' |. l0 q6 R4 H9 ?$ |9 C6 n1 n</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
2 l: x- G. q$ K</sql:update> |
| <sql:update> 标记用于 DML 操作。在更新查询中可以有 '?'。然后您可以使用 <sql:parm> 把一个值与 ? 相关联。<sql:parm> 的值可以从一个变量中获取(如 HTTP 参数)。' Z# G+ V9 x8 P$ @5 p1 @' @+ x
您可以查看完整的源代码以了解如何创建一个表以及其撤消方法。 ) [: @4 {+ ]4 k5 b u8 V$ u
安装为了运行此代码,您需要配置 OC4J 以使用 JSTL。
/ g M7 p6 S- q) V' n! G- 把从 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 运行它
|