如何使用 SQL JSP 标准库:软件需求 Oracle9i Database version 9.0.1 或更新版本。您可从 Oracle 技术网下载 Oracle9i Database。
5 I; g5 Q3 M& k: a5 z/ ?4 v5 f: e D5 O9 O0 t1 `
JDK1.2.x 或更高版本。可从此处下载。
: ?9 J* D! X1 ]* k) `
) j6 b$ i% o9 F4 r* \ O: F( _$ i E1 M- O
Oracle9iAS Container for Java(OC4J) version 9.0.3 或更新版本。可以在 OTN 下载。- JSP 标准标记库。您可以使用 Apache.org 提供的标准标记库 1.0 Reference Implementation
使用数据库 JSTL 标记0 A& l1 j6 G) n8 C
JSTL 的数据库的库支持数据库查询、更新和事务处理。JSP 页面能够使用下面的指令导入这个库。
6 n. _ g$ e& F R$ g2 K7 b<%@ taglib prefix="sql" uri="http://java.sun.com/jstl/sql" %>3 t, p7 ^- b% z7 r
: l6 I) G% Q- j, l3 G
准备数据库对于没有默认数据库的 JSP 页面,<sql:setDataSource> 能够准备一个数据库以供使用。
# s% ?7 q# B) n, x a下面的代码展示了如何创建一个数据源。# j3 _ v* A* s
<sql:setDataSource
' v- n7 O* b* w/ K7 l1 i( } var="example"; d O- P* F: W) R4 `0 f( p0 p
driver="oracle.jdbc.driver.OracleDriver"
; w% `2 l4 q) u' O9 Z6 N url="jdbc racle:thin localhost:1521:ORCL"
' Y# l' l# K, s D2 h user="scott"( N& U3 V0 G( F2 P% c* _: Z0 U% _
password="tiger"& g: s2 }& f2 d) U! R7 J! D6 X* u
/> |
| <sql:setDataSource> 标签有如下属性: e6 ], t. l6 v1 X( i3 D0 s6 y
属性 | 说明 | 是否需要 | 默认 | driver | 需要注册的 JDBC 驱动程序类的名称 | 不 | 无 | url | 用于数据库连接的 JDBC URL | 不 | 无 | user | 数据库用户名 | 不 | 无 | password | 数据库密码 | 不 | 无 | dataSource | 预先准备的数据库(字符串或( h2 z6 R4 d3 e& E7 J/ U
javax.sql.DataSource) | 不 | 无 | var | 代表数据库的变量名 | 不 | 设置为默认 | scope | 代表数据库的变量的作用域 | 不 | 页面 | 查询与更新JSTL 可以使用 <sql:query> 从数据库读取数据并使用 <sql:update> 向数据库写入数据。这些标记可以通过 ? 占位符支持 SQL 命令,<sql:param> 和 <sql:dateParam> 可以填充到这些占位符中。- a$ z# W/ c' ~, F" ]! Y+ ^1 r
. Y z/ H/ K, |
从数据库查询 <sql:query var="deejays">
: R$ g' f. S7 N) O SELECT * FROM mytable
- \1 J. E8 m. `: p- n</sql:query><%-- Get the column names for the header of the table --%><c:forEach var="columnName" items="${deejays.columnNames}">
. o! B( O' _$ p$ j: E4 Z+ a <th><c ut value="${columnName}"/></th>
( F( S) y: C2 N& n. f$ t</c:forEach><%-- Get the value of each column while iterating over rows --%><c:forEach var="row" items="${deejays.rows}">+ Q0 q4 s3 n0 c7 W' }
<tr>0 s" F7 `" h$ n, h7 {1 i6 E! S$ B
<c:forEach var="column" items="${row}">1 I9 k% g6 l8 @
<td><c ut value="${column.value}"/></td>* p% Q- r2 G1 ?/ p; ?
</c:forEach>
# m/ T" a+ ~4 a1 k5 R$ G# y </tr>
( J, o: T3 y# B</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
% h% {4 z: ]8 D8 U6 [</sql:update> |
| <sql:update> 标记用于 DML 操作。在更新查询中可以有 '?'。然后您可以使用 <sql:parm> 把一个值与 ? 相关联。<sql:parm> 的值可以从一个变量中获取(如 HTTP 参数)。
" V9 n5 i# n( Q$ m1 M: m2 A- Q2 X8 \, N8 Y您可以查看完整的源代码以了解如何创建一个表以及其撤消方法。 3 V: |4 a/ o! e0 N7 K0 n* I
安装为了运行此代码,您需要配置 OC4J 以使用 JSTL。
8 O9 _% w6 a9 \8 V5 Q7 S/ T* 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 运行它
|