如何使用 SQL JSP 标准库:软件需求 Oracle9i Database version 9.0.1 或更新版本。您可从 Oracle 技术网下载 Oracle9i Database。
* k$ a' k) l8 h: r+ Z# \: ]0 P
4 h2 j% T3 o$ ?9 \, F8 dJDK1.2.x 或更高版本。可从此处下载。7 U& d3 a3 ]2 D" w' y/ P% ~
% A& \) z6 K+ u& [/ p
6 j) p( Q$ f$ w$ F, h1 l
Oracle9iAS Container for Java(OC4J) version 9.0.3 或更新版本。可以在 OTN 下载。- JSP 标准标记库。您可以使用 Apache.org 提供的标准标记库 1.0 Reference Implementation
使用数据库 JSTL 标记* B: B% T( ]( M7 l/ e: U- b
JSTL 的数据库的库支持数据库查询、更新和事务处理。JSP 页面能够使用下面的指令导入这个库。
- C v" z$ s& [6 A( e<%@ taglib prefix="sql" uri="http://java.sun.com/jstl/sql" %>5 H6 e% b' G6 @' m( X1 J0 X
# m# E$ J+ [. ?
准备数据库对于没有默认数据库的 JSP 页面,<sql:setDataSource> 能够准备一个数据库以供使用。
( U; ?5 m2 ^4 V( A下面的代码展示了如何创建一个数据源。# V- _1 I2 t' J1 B' _6 `
<sql:setDataSource5 ?" P7 E" x) I( M
var="example"7 [1 }( d: [" F
driver="oracle.jdbc.driver.OracleDriver"
+ i; Z8 s8 p! G/ Y url="jdbc racle:thin localhost:1521:ORCL"
5 k9 w3 a4 R1 ?( G1 \' A" v user="scott"; v0 w* W& J, \; Z* F6 ^
password="tiger"6 ~4 D2 C' g* M& ~, J- o2 {
/> |
| <sql:setDataSource> 标签有如下属性:4 p' [. @( }& e5 r
| 属性 | 说明 | 是否需要 | 默认 | | driver | 需要注册的 JDBC 驱动程序类的名称 | 不 | 无 | | url | 用于数据库连接的 JDBC URL | 不 | 无 | | user | 数据库用户名 | 不 | 无 | | password | 数据库密码 | 不 | 无 | | dataSource | 预先准备的数据库(字符串或; E% I" l0 ^# R' g
javax.sql.DataSource) | 不 | 无 | | var | 代表数据库的变量名 | 不 | 设置为默认 | | scope | 代表数据库的变量的作用域 | 不 | 页面 | 查询与更新JSTL 可以使用 <sql:query> 从数据库读取数据并使用 <sql:update> 向数据库写入数据。这些标记可以通过 ? 占位符支持 SQL 命令,<sql:param> 和 <sql:dateParam> 可以填充到这些占位符中。
$ J1 g7 \& O( c. _, \6 n2 u( }+ R+ v7 X) ?. ^ j" b9 c! Z0 n
从数据库查询 <sql:query var="deejays">
, K" I/ c, N0 j6 M# k SELECT * FROM mytable
) Y8 j6 G/ O8 j. Y5 w( s& d</sql:query><%-- Get the column names for the header of the table --%><c:forEach var="columnName" items="${deejays.columnNames}">
% a5 E- _8 H* Q4 K3 r' j/ j9 e( A: ? <th><c ut value="${columnName}"/></th># i. q' z8 u+ E6 [7 f
</c:forEach><%-- Get the value of each column while iterating over rows --%><c:forEach var="row" items="${deejays.rows}">
! }; u v4 ~+ S, n2 L <tr>
* C. J; b# z; Y& E6 Y ^; a+ C <c:forEach var="column" items="${row}">' A1 B7 a* Z- V( W1 {. V4 l J) `
<td><c ut value="${column.value}"/></td>3 N7 ?$ Z% K6 g. o. Y4 a; Y7 Z
</c:forEach>' | W+ Z3 T; Z) W# z
</tr>' j- |! i" ^- ^, n- o) R
</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 A2 h1 g6 r9 K</sql:update> |
| <sql:update> 标记用于 DML 操作。在更新查询中可以有 '?'。然后您可以使用 <sql:parm> 把一个值与 ? 相关联。<sql:parm> 的值可以从一个变量中获取(如 HTTP 参数)。1 x5 a, J" |+ K' e N( v5 _
您可以查看完整的源代码以了解如何创建一个表以及其撤消方法。
1 o" C. L+ p3 k. o' E安装为了运行此代码,您需要配置 OC4J 以使用 JSTL。
# R2 A1 G+ B" u" \5 X- 把从 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 运行它
|