如何使用 SQL JSP 标准库:软件需求 Oracle9i Database version 9.0.1 或更新版本。您可从 Oracle 技术网下载 Oracle9i Database。 ; p1 O+ y( }7 @ _) `. {
# m$ i o8 O' Q0 a
JDK1.2.x 或更高版本。可从此处下载。! u6 D" m. a1 p0 S# r' A/ \
8 q* h* T. @! X
, ^2 R9 `+ w( u6 W& m5 `* _) N' tOracle9iAS Container for Java(OC4J) version 9.0.3 或更新版本。可以在 OTN 下载。- JSP 标准标记库。您可以使用 Apache.org 提供的标准标记库 1.0 Reference Implementation
使用数据库 JSTL 标记
! U' w% H- E3 r7 {# z* e0 sJSTL 的数据库的库支持数据库查询、更新和事务处理。JSP 页面能够使用下面的指令导入这个库。
: J' z0 C, L. P! }1 |# m<%@ taglib prefix="sql" uri="http://java.sun.com/jstl/sql" %>% `( }7 D) c# ]# D9 m& R
* z) L" m) U* ` u7 x" z准备数据库对于没有默认数据库的 JSP 页面,<sql:setDataSource> 能够准备一个数据库以供使用。
8 w" H( Q: B% a下面的代码展示了如何创建一个数据源。0 p7 t# V# Y$ C4 ?( T6 s! j3 b0 E
<sql:setDataSource0 V2 c: H% x1 S) X$ B0 M! `$ I" N7 [
var="example"8 L) v4 a' x6 |5 \
driver="oracle.jdbc.driver.OracleDriver"
' n6 _- J4 ?( z2 `2 ]$ ? url="jdbc racle:thin localhost:1521:ORCL"$ J) X, K- o& ~7 [, ]
user="scott". X2 f6 j* L/ }* w( v6 R' @
password="tiger", i, }: h+ D. a$ y( ^8 ]" w k V
/> |
| <sql:setDataSource> 标签有如下属性:
) [0 t6 e }# I- R( T- I4 G/ K属性 | 说明 | 是否需要 | 默认 | driver | 需要注册的 JDBC 驱动程序类的名称 | 不 | 无 | url | 用于数据库连接的 JDBC URL | 不 | 无 | user | 数据库用户名 | 不 | 无 | password | 数据库密码 | 不 | 无 | dataSource | 预先准备的数据库(字符串或
4 u, _9 ^& |. u$ l9 E) S! j' ]8 r5 Ajavax.sql.DataSource) | 不 | 无 | var | 代表数据库的变量名 | 不 | 设置为默认 | scope | 代表数据库的变量的作用域 | 不 | 页面 | 查询与更新JSTL 可以使用 <sql:query> 从数据库读取数据并使用 <sql:update> 向数据库写入数据。这些标记可以通过 ? 占位符支持 SQL 命令,<sql:param> 和 <sql:dateParam> 可以填充到这些占位符中。
( i; H' K% _. t* V( {9 H0 u
' n, Q. C0 q& k: N( H8 P2 @9 U9 b从数据库查询 <sql:query var="deejays">
$ A( ]" V% g2 S- r8 j SELECT * FROM mytable
) [/ G* y& s' z! v$ E</sql:query><%-- Get the column names for the header of the table --%><c:forEach var="columnName" items="${deejays.columnNames}">
$ Y5 v4 ~& C1 }( B8 s <th><c ut value="${columnName}"/></th>
) J% Y$ W9 t- t( {</c:forEach><%-- Get the value of each column while iterating over rows --%><c:forEach var="row" items="${deejays.rows}">
& i$ |0 Y0 R ? <tr>! [) b N# l) e7 ~9 k+ X5 o/ ]
<c:forEach var="column" items="${row}">0 j7 h" I; b/ V* m! h# T
<td><c ut value="${column.value}"/></td>
$ U5 ^% w& ]. y/ V T </c:forEach>
+ ?( ~4 V) F9 U </tr>: v4 c% D% J* r+ c8 B z* }
</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
3 ?4 [* B* ^2 q% S v</sql:update> |
| <sql:update> 标记用于 DML 操作。在更新查询中可以有 '?'。然后您可以使用 <sql:parm> 把一个值与 ? 相关联。<sql:parm> 的值可以从一个变量中获取(如 HTTP 参数)。. F' @1 I+ M% |8 c! V
您可以查看完整的源代码以了解如何创建一个表以及其撤消方法。
) X3 o/ g% f* k; E) o4 s2 ]# G安装为了运行此代码,您需要配置 OC4J 以使用 JSTL。
& r6 m$ j* u4 n+ U' 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 运行它
|