如何使用 SQL JSP 标准库:软件需求 Oracle9i Database version 9.0.1 或更新版本。您可从 Oracle 技术网下载 Oracle9i Database。 6 c. h* ?1 d W t: V, [
; w ]9 x6 ^# QJDK1.2.x 或更高版本。可从此处下载。
& A7 o. Y: D# Q' H3 Q" W% r, f
( u9 A; L* }7 e. \3 \
- k* Z: o- t% ?3 S- q9 w( C+ n" dOracle9iAS Container for Java(OC4J) version 9.0.3 或更新版本。可以在 OTN 下载。- JSP 标准标记库。您可以使用 Apache.org 提供的标准标记库 1.0 Reference Implementation
使用数据库 JSTL 标记
# T( o9 q" d9 EJSTL 的数据库的库支持数据库查询、更新和事务处理。JSP 页面能够使用下面的指令导入这个库。$ y" k) k# c- W( B5 U
<%@ taglib prefix="sql" uri="http://java.sun.com/jstl/sql" %>
( m7 {8 W7 T8 s2 m5 p, ?4 @! P( h( J& n; S
准备数据库对于没有默认数据库的 JSP 页面,<sql:setDataSource> 能够准备一个数据库以供使用。, @/ Q/ O# L2 O: z9 h
下面的代码展示了如何创建一个数据源。
0 o0 K- U0 K) ?# ?<sql:setDataSource
6 r5 a& Z1 \8 |% X$ O1 ?, d G4 ` ~ var="example"
& }1 f3 k, |% R6 L/ m2 ~, w6 J driver="oracle.jdbc.driver.OracleDriver"
4 G3 o1 C$ p1 H. V4 T+ B; t url="jdbc racle:thin localhost:1521:ORCL"- w) p5 g- d9 W
user="scott"
& L* f* R. e: v1 Z password="tiger"+ k! x5 ]+ x- t, g
/> |
| <sql:setDataSource> 标签有如下属性:; G8 f; A& [" N9 w1 W
| 属性 | 说明 | 是否需要 | 默认 | | driver | 需要注册的 JDBC 驱动程序类的名称 | 不 | 无 | | url | 用于数据库连接的 JDBC URL | 不 | 无 | | user | 数据库用户名 | 不 | 无 | | password | 数据库密码 | 不 | 无 | | dataSource | 预先准备的数据库(字符串或
& f" b$ t* g. d2 ^+ R& ?/ tjavax.sql.DataSource) | 不 | 无 | | var | 代表数据库的变量名 | 不 | 设置为默认 | | scope | 代表数据库的变量的作用域 | 不 | 页面 | 查询与更新JSTL 可以使用 <sql:query> 从数据库读取数据并使用 <sql:update> 向数据库写入数据。这些标记可以通过 ? 占位符支持 SQL 命令,<sql:param> 和 <sql:dateParam> 可以填充到这些占位符中。3 y6 F4 e8 E) n: M* @$ B& }- j& k
" i- M" u: J9 q0 I从数据库查询 <sql:query var="deejays">
) c) [* b: ~! t0 x' Y* b3 [ SELECT * FROM mytable
8 f$ D$ |& Q. \9 L8 x0 J$ R</sql:query><%-- Get the column names for the header of the table --%><c:forEach var="columnName" items="${deejays.columnNames}">% \! U( J7 P' E) J3 |
<th><c ut value="${columnName}"/></th>
* {3 S; L! v; t& J</c:forEach><%-- Get the value of each column while iterating over rows --%><c:forEach var="row" items="${deejays.rows}">
1 u6 R1 W r; v2 p. q; G8 Q <tr>
b# `9 F- e. ]: G* W <c:forEach var="column" items="${row}">
6 c) k, r' W& v1 x) c( q: y* f <td><c ut value="${column.value}"/></td>
0 q) V+ k) v! W0 | </c:forEach>4 H& ]9 M8 e# c" {. R3 P
</tr>
2 J* }9 b5 l6 _5 ?4 o2 a</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" L$ S4 B U l4 G0 u+ D# _
</sql:update> |
| <sql:update> 标记用于 DML 操作。在更新查询中可以有 '?'。然后您可以使用 <sql:parm> 把一个值与 ? 相关联。<sql:parm> 的值可以从一个变量中获取(如 HTTP 参数)。9 {$ v: C7 K- [$ b, C; t# P+ T2 l5 X
您可以查看完整的源代码以了解如何创建一个表以及其撤消方法。 ) p/ n7 k( P3 J* L" B# z8 o+ O. p
安装为了运行此代码,您需要配置 OC4J 以使用 JSTL。
/ R/ P& \ l1 M# i- 把从 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 运行它
|