如何使用 SQL JSP 标准库:软件需求 Oracle9i Database version 9.0.1 或更新版本。您可从 Oracle 技术网下载 Oracle9i Database。 , F+ m9 g6 Y& ]9 n! H" E
' y& Y/ h$ g* zJDK1.2.x 或更高版本。可从此处下载。
& W! n+ E: ` ?( t! ` \( G1 D. @2 ]1 Y: r, M* a/ `+ V
1 p* y0 }. X# {' E5 P% }3 Q" p6 ], FOracle9iAS Container for Java(OC4J) version 9.0.3 或更新版本。可以在 OTN 下载。- JSP 标准标记库。您可以使用 Apache.org 提供的标准标记库 1.0 Reference Implementation
使用数据库 JSTL 标记
6 M# g, c9 L" `( G0 wJSTL 的数据库的库支持数据库查询、更新和事务处理。JSP 页面能够使用下面的指令导入这个库。
3 Q" Z9 ^5 R* r" m# V* y<%@ taglib prefix="sql" uri="http://java.sun.com/jstl/sql" %>' V1 `4 G% L. Y$ Q
$ n: X" U6 T4 V% x$ y准备数据库对于没有默认数据库的 JSP 页面,<sql:setDataSource> 能够准备一个数据库以供使用。6 t) q& J1 U, v- \3 L. v( o7 T$ [
下面的代码展示了如何创建一个数据源。
1 E) ~7 t0 T9 D5 @' t: t<sql:setDataSource
* l9 V+ f2 Y5 W9 c: _. T) i var="example") u- s: i C. a6 B) @
driver="oracle.jdbc.driver.OracleDriver"( j) A' y1 v) {1 m5 B& y
url="jdbc racle:thin localhost:1521:ORCL"7 z6 h; m2 Z* e
user="scott"
: a& S6 }" V4 }: u password="tiger"/ _2 @2 p( g5 _0 N& Q4 Z
/> |
| <sql:setDataSource> 标签有如下属性:
, d6 n; [8 T- N9 @! m0 ]属性 | 说明 | 是否需要 | 默认 | driver | 需要注册的 JDBC 驱动程序类的名称 | 不 | 无 | url | 用于数据库连接的 JDBC URL | 不 | 无 | user | 数据库用户名 | 不 | 无 | password | 数据库密码 | 不 | 无 | dataSource | 预先准备的数据库(字符串或7 I1 Y1 r- R* C7 t
javax.sql.DataSource) | 不 | 无 | var | 代表数据库的变量名 | 不 | 设置为默认 | scope | 代表数据库的变量的作用域 | 不 | 页面 | 查询与更新JSTL 可以使用 <sql:query> 从数据库读取数据并使用 <sql:update> 向数据库写入数据。这些标记可以通过 ? 占位符支持 SQL 命令,<sql:param> 和 <sql:dateParam> 可以填充到这些占位符中。
/ x1 Y! D- F6 T9 r
' H2 O" Z+ T$ Z2 a' @. _从数据库查询 <sql:query var="deejays"> C8 V& l0 v5 l, j" s" P' j
SELECT * FROM mytable2 d- U. w/ X1 i! U" f* z N
</sql:query><%-- Get the column names for the header of the table --%><c:forEach var="columnName" items="${deejays.columnNames}">
5 s$ P/ n& v, H2 Q. i <th><c ut value="${columnName}"/></th>0 P% l0 N$ `7 C" ^7 [2 ^6 o* F6 ]
</c:forEach><%-- Get the value of each column while iterating over rows --%><c:forEach var="row" items="${deejays.rows}"># F4 ^+ |& s* M3 G7 b/ W
<tr>/ ?0 K# N) `4 M" g$ I; r+ ]
<c:forEach var="column" items="${row}">
: I( p( b+ v9 J* z- @! f3 Z' | <td><c ut value="${column.value}"/></td>' v6 N: Q7 c& ~( S2 C& A. k
</c:forEach>
! v; g$ n7 S& `7 Q" G/ K </tr>/ b0 G# c8 |+ G @4 \7 X
</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
1 U6 G j# x+ J5 ~# c</sql:update> |
| <sql:update> 标记用于 DML 操作。在更新查询中可以有 '?'。然后您可以使用 <sql:parm> 把一个值与 ? 相关联。<sql:parm> 的值可以从一个变量中获取(如 HTTP 参数)。8 t& j/ f) ^! K( r6 [
您可以查看完整的源代码以了解如何创建一个表以及其撤消方法。
9 K" j* S6 Y! Z$ g y* l安装为了运行此代码,您需要配置 OC4J 以使用 JSTL。0 ^ n1 l: t7 o. g
- 把从 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 运行它
|