如何使用 SQL JSP 标准库:软件需求 Oracle9i Database version 9.0.1 或更新版本。您可从 Oracle 技术网下载 Oracle9i Database。 ) b: D1 d0 a. a j
: T1 P% v$ f4 s5 gJDK1.2.x 或更高版本。可从此处下载。
( Q+ j9 J& \0 v' p. U5 {7 }
/ P) |. A: x$ {% @) L. o2 Q! L
" { v$ {. S) Y/ u3 KOracle9iAS Container for Java(OC4J) version 9.0.3 或更新版本。可以在 OTN 下载。- JSP 标准标记库。您可以使用 Apache.org 提供的标准标记库 1.0 Reference Implementation
使用数据库 JSTL 标记% g2 U2 S3 H( t6 _$ J' g+ g5 F
JSTL 的数据库的库支持数据库查询、更新和事务处理。JSP 页面能够使用下面的指令导入这个库。% T- @: q4 I- ~
<%@ taglib prefix="sql" uri="http://java.sun.com/jstl/sql" %>
! F: {7 J( Q/ q1 B' x8 P' c4 v7 k
准备数据库对于没有默认数据库的 JSP 页面,<sql:setDataSource> 能够准备一个数据库以供使用。
) R- |' B4 c7 z. ?5 i3 d4 J下面的代码展示了如何创建一个数据源。
5 ^) h4 a$ Q2 @( u% z6 O h<sql:setDataSource
9 u5 M. ~( w' Q" p ^8 P$ K9 J/ U var="example") G+ b8 F! p" Z! \2 n/ U/ W, O. K
driver="oracle.jdbc.driver.OracleDriver"
+ r% E* z* e6 m% N' {& m, E9 x/ c$ O url="jdbcracle:thinlocalhost:1521:ORCL"
9 u/ w1 P9 y1 |. X3 \: `8 M user="scott"
6 Y# o8 W5 L8 I S f; R password="tiger"
3 K* L" g# f5 Q0 ? O0 E/> |
| <sql:setDataSource> 标签有如下属性:3 Y1 f2 ?) q1 d; e
属性 | 说明 | 是否需要 | 默认 | driver | 需要注册的 JDBC 驱动程序类的名称 | 不 | 无 | url | 用于数据库连接的 JDBC URL | 不 | 无 | user | 数据库用户名 | 不 | 无 | password | 数据库密码 | 不 | 无 | dataSource | 预先准备的数据库(字符串或; L$ m. H5 [1 _7 b4 K
javax.sql.DataSource) | 不 | 无 | var | 代表数据库的变量名 | 不 | 设置为默认 | scope | 代表数据库的变量的作用域 | 不 | 页面 | 查询与更新JSTL 可以使用 <sql:query> 从数据库读取数据并使用 <sql:update> 向数据库写入数据。这些标记可以通过 ? 占位符支持 SQL 命令,<sql:param> 和 <sql:dateParam> 可以填充到这些占位符中。
( B. J. S1 O" ?7 n
, @* p6 y0 @0 Q# F) a从数据库查询 <sql:query var="deejays">
s" h2 d6 P1 S! v SELECT * FROM mytable# G4 Q) ^" H% [( {- l
</sql:query><%-- Get the column names for the header of the table --%><c:forEach var="columnName" items="${deejays.columnNames}">
9 E. j* h7 b' A) P+ { <th><cut value="${columnName}"/></th>5 l! T. C$ n- D2 E
</c:forEach><%-- Get the value of each column while iterating over rows --%><c:forEach var="row" items="${deejays.rows}">
) x9 D& z9 B. ?: b( X" e, T <tr>3 P: U3 A* c1 @
<c:forEach var="column" items="${row}">' ]. u4 f" q6 Z( W9 h
<td><cut value="${column.value}"/></td>; }! O& ~* t% S: Q' x
</c:forEach>4 l* @/ ^' C- O
</tr>: Y. W7 W. c6 g7 A$ t7 C
</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' x( r5 A1 d3 }; y1 R- q& u7 X# L
</sql:update> |
| <sql:update> 标记用于 DML 操作。在更新查询中可以有 '?'。然后您可以使用 <sql:parm> 把一个值与 ? 相关联。<sql:parm> 的值可以从一个变量中获取(如 HTTP 参数)。
: y3 b9 U8 [: Z4 p. c1 j& n# |" W2 O您可以查看完整的源代码以了解如何创建一个表以及其撤消方法。
8 A7 E- o, W9 D6 \安装为了运行此代码,您需要配置 OC4J 以使用 JSTL。
0 s& X$ C4 |4 T7 ?" s% a$ H- 把从 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 运行它
|