如何使用 SQL JSP 标准库:软件需求 Oracle9i Database version 9.0.1 或更新版本。您可从 Oracle 技术网下载 Oracle9i Database。
0 U# X `/ x5 `1 S4 e3 F* e" H, ~* o" B6 B& r, ^9 h5 c
JDK1.2.x 或更高版本。可从此处下载。4 u- D9 e0 Q+ x2 o! n) \1 ?
6 U6 U. R( h1 ^$ u/ z1 s7 V4 r O
) m3 M! [ P$ L' P. EOracle9iAS Container for Java(OC4J) version 9.0.3 或更新版本。可以在 OTN 下载。- JSP 标准标记库。您可以使用 Apache.org 提供的标准标记库 1.0 Reference Implementation
使用数据库 JSTL 标记8 |( h. M U0 C5 i! A9 p% |! C
JSTL 的数据库的库支持数据库查询、更新和事务处理。JSP 页面能够使用下面的指令导入这个库。
' v( k/ x/ z$ R" W; M7 y. E<%@ taglib prefix="sql" uri="http://java.sun.com/jstl/sql" %>
|: J6 K2 o$ m: o+ J4 @
[9 B: k. U( Q+ T7 w5 l1 S" s7 f& S准备数据库对于没有默认数据库的 JSP 页面,<sql:setDataSource> 能够准备一个数据库以供使用。: O8 I+ ?9 M1 t' e) e
下面的代码展示了如何创建一个数据源。, `5 I6 _; p+ B+ G/ i
<sql:setDataSource
9 l1 k2 A3 \7 W7 c var="example"
) j# A: d( Z3 `; m! X5 r driver="oracle.jdbc.driver.OracleDriver"4 }1 q, }' g, }0 ~: L5 n
url="jdbc racle:thin localhost:1521:ORCL"
! v9 B0 E6 q$ B user="scott"
: o ~/ L8 r, K0 H password="tiger"& `7 e2 Q( Z- g) o1 {
/> |
| <sql:setDataSource> 标签有如下属性:' m2 O" s9 `+ Z, T$ p- r4 n
属性 | 说明 | 是否需要 | 默认 | driver | 需要注册的 JDBC 驱动程序类的名称 | 不 | 无 | url | 用于数据库连接的 JDBC URL | 不 | 无 | user | 数据库用户名 | 不 | 无 | password | 数据库密码 | 不 | 无 | dataSource | 预先准备的数据库(字符串或
+ L& u5 B# W5 z' F) {9 djavax.sql.DataSource) | 不 | 无 | var | 代表数据库的变量名 | 不 | 设置为默认 | scope | 代表数据库的变量的作用域 | 不 | 页面 | 查询与更新JSTL 可以使用 <sql:query> 从数据库读取数据并使用 <sql:update> 向数据库写入数据。这些标记可以通过 ? 占位符支持 SQL 命令,<sql:param> 和 <sql:dateParam> 可以填充到这些占位符中。
8 W, e( O9 K5 w" _$ G: T- W, ^* A6 F1 V
从数据库查询 <sql:query var="deejays">
8 w5 ` _ X+ F2 W8 c6 O- J SELECT * FROM mytable1 ?+ Q- T: w; [- g/ z( L- s
</sql:query><%-- Get the column names for the header of the table --%><c:forEach var="columnName" items="${deejays.columnNames}">
/ m9 j, y- F4 } <th><c ut value="${columnName}"/></th>1 d s$ b* F9 V; y5 W6 Q
</c:forEach><%-- Get the value of each column while iterating over rows --%><c:forEach var="row" items="${deejays.rows}"># \, m( [6 C. b
<tr>
( p* j( |$ G: j& r$ S( t: u <c:forEach var="column" items="${row}">
1 z( \& L$ M$ i; J <td><c ut value="${column.value}"/></td>
" i4 q) ~) ~% O </c:forEach>
$ C3 F! ^; h* `; ^ </tr>
6 M( X8 h9 ?9 i- b! c" K1 s</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, `; D* q+ n3 P/ G# ~2 {1 N7 |# }& O8 J
</sql:update> |
| <sql:update> 标记用于 DML 操作。在更新查询中可以有 '?'。然后您可以使用 <sql:parm> 把一个值与 ? 相关联。<sql:parm> 的值可以从一个变量中获取(如 HTTP 参数)。
. I5 k. V$ s$ ~7 J您可以查看完整的源代码以了解如何创建一个表以及其撤消方法。 5 }& B8 s$ W1 F7 q- Y
安装为了运行此代码,您需要配置 OC4J 以使用 JSTL。
( m% F! b# ^1 y' U- 把从 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 运行它
|