如何使用 SQL JSP 标准库:软件需求 Oracle9i Database version 9.0.1 或更新版本。您可从 Oracle 技术网下载 Oracle9i Database。
$ i' E: k0 l9 J9 x ~
+ d6 Y- |" N% ^. y: gJDK1.2.x 或更高版本。可从此处下载。, ?7 S' q; a3 O0 @! |; I& c. e5 N) P
+ g3 _3 e1 R+ T- k+ s J
+ _- n6 y% g$ a% o# sOracle9iAS Container for Java(OC4J) version 9.0.3 或更新版本。可以在 OTN 下载。- JSP 标准标记库。您可以使用 Apache.org 提供的标准标记库 1.0 Reference Implementation
使用数据库 JSTL 标记
2 ?! U9 z1 @* ?6 K, p; Z/ Y- ~JSTL 的数据库的库支持数据库查询、更新和事务处理。JSP 页面能够使用下面的指令导入这个库。
/ y' {9 b/ R) K, t7 P<%@ taglib prefix="sql" uri="http://java.sun.com/jstl/sql" %>
: V2 \+ F: ~. g5 Y' d
; V- ?+ q8 d; O/ u& @8 f准备数据库对于没有默认数据库的 JSP 页面,<sql:setDataSource> 能够准备一个数据库以供使用。
7 H, N% |2 z- F4 w: g7 @; f, p3 Z- t下面的代码展示了如何创建一个数据源。
t4 P7 A3 E/ \9 n<sql:setDataSource
9 H. \+ _1 T ~0 W2 m* V var="example"
3 n* I' Z7 G6 g1 }9 m! m driver="oracle.jdbc.driver.OracleDriver"( W- T9 b: J$ E
url="jdbc racle:thin localhost:1521:ORCL"& ?" I% V- y* J7 z6 `
user="scott"$ p9 i7 B% s4 f$ F/ t5 a, o1 z+ u( R
password="tiger"
$ ]; G! [" A1 m* m2 q; q5 |/> |
| <sql:setDataSource> 标签有如下属性:" D" Y5 i% `5 Q# P
属性 | 说明 | 是否需要 | 默认 | driver | 需要注册的 JDBC 驱动程序类的名称 | 不 | 无 | url | 用于数据库连接的 JDBC URL | 不 | 无 | user | 数据库用户名 | 不 | 无 | password | 数据库密码 | 不 | 无 | dataSource | 预先准备的数据库(字符串或
( R/ {8 \; j' ojavax.sql.DataSource) | 不 | 无 | var | 代表数据库的变量名 | 不 | 设置为默认 | scope | 代表数据库的变量的作用域 | 不 | 页面 | 查询与更新JSTL 可以使用 <sql:query> 从数据库读取数据并使用 <sql:update> 向数据库写入数据。这些标记可以通过 ? 占位符支持 SQL 命令,<sql:param> 和 <sql:dateParam> 可以填充到这些占位符中。 v- g- d* o3 m. }/ r9 v5 S7 c4 ? m K; J
5 d7 i4 m! i6 a" V5 q从数据库查询 <sql:query var="deejays">7 J1 T: k/ w3 y& r! q/ m- N! d
SELECT * FROM mytable
, }/ f& I- J1 N* R) i</sql:query><%-- Get the column names for the header of the table --%><c:forEach var="columnName" items="${deejays.columnNames}">4 F: }, i4 x0 x
<th><c ut value="${columnName}"/></th>1 f. `% L; ]9 F; f
</c:forEach><%-- Get the value of each column while iterating over rows --%><c:forEach var="row" items="${deejays.rows}">/ s5 d$ t! `: Q4 B' d; D, F; j
<tr>
! W5 R* m( Z$ S. b <c:forEach var="column" items="${row}">4 ?/ }+ O H9 G* w8 [7 L7 t7 q
<td><c ut value="${column.value}"/></td>
6 ^1 Q3 x4 q6 d% j u5 K5 } </c:forEach>
' g1 |( S$ {; l4 D1 E </tr>
9 f0 l. ?6 z7 e& `+ d3 a: V; @</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" b% ?* `1 z$ |+ i' j/ N) v- f
</sql:update> |
| <sql:update> 标记用于 DML 操作。在更新查询中可以有 '?'。然后您可以使用 <sql:parm> 把一个值与 ? 相关联。<sql:parm> 的值可以从一个变量中获取(如 HTTP 参数)。
- a8 W, a4 t& ?' m' Y& t您可以查看完整的源代码以了解如何创建一个表以及其撤消方法。
, w9 L) O: p4 l- F% \安装为了运行此代码,您需要配置 OC4J 以使用 JSTL。" W/ Q: J4 A7 D8 o* e( T5 O
- 把从 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 运行它
|