DB2 Everyplace 对 JSP 开发的支持
DB2 Everyplace 解决方案由下列组件构成:
数据库引擎:为移动设备设计的占用资源较少的关系数据库系统。
同步服务器:在移动设备上的 DB2 Everyplace 数据库和企业数据库之间移动数据的双向同步服务器。
移动应用程序构建器:一个用于创建在移动设备上运行的 DB2 Everyplace 应用程序的快速应用程序开发工具。
有关这些组件的更多信息,请参阅文章 使用 DB2 Everyplace 为 Palm 设备创建移动应用程序。
这个关系数据库引擎为关系数据提供持久存储并且提供使用 SQL 提供修改和检索记录的能力。可以用几种不同的方法访问 DB2 Everyplace 数据库中的数据,包括使用命令行处理器(Command Line Processor,CLP)发出 SQL 语句和使用将 ODBC 或 JDBC? 用作调用级接口的应用程序。
此外,DB2 Everyplace 还提供了用于数据库访问的 JSP 支持,可以将这种支持部署在提供了 Java? 运行时环境的移动设备上。
JSP 支持可用于下列操作系统:
Win32(Windows NT? 和 Windows 2000)
Windows CE/Pocket PC
使用 Java 创建 DB2 Everyplace 数据库表
为了演示 DB2 Everyplace 对 JSP 应用程序开发的支持,我在本文中包括了一个样本应用程序。
首先,我们将创建一个稍后将由 JSP 应用程序访问的 ITEM 表。ITEM 表包含每项物品的标识、描述、价格和可用性。
要创建 ITEM 表,将 sample-db2JSP.zip 文件解压缩到 c:directory,directory 代表您选择的任何目录。这将创建一个名为 sample 的文件夹。sample 目录中包含 BuildDB.java 和名为 SetupDB.bat 的批处理文件。
要创建数据库,修改 SetupDB.bat 以使 DB2Everyplace_LOCATION 变量指向安装 DB2 Everyplace 的位置。当运行 SetupDB.bat 时,它会编译并运行 BuildDB.java 文件。
BuildDB 类将在目录 C:/sample/Data/ 中创建 ITEM 表。如果在运行该文件时发生错误,请确保为 DB2Everyplace_LOCATION 设置的路径是正确的。
运行 SetupDB.bat 之后,会收到下列消息:
Table: ITEM created
Results from table ITEM :
ITEM_ID: A1001
ITEM_NAME: Think Pad
ITEM_DESC : Configuration P4,256 SDRAM.
ITEM_PRICE : 000.
ITEM_AVAILABLE: Y
DB2 Everyplace 定制标记以及 JSP 支持的概述
DB2 Everyplace 中对 JSP 的支持由两个组件构成:
微型 HTTP Web 服务器
JSP 处理器
微型 HTTP Web 服务器使用 HTTP 1.1 协议接收来自 Web 浏览器的请求,并将响应发送回 Web 浏览器。JSP 处理器解析 JSP 文件,生成相应的 Java 源代码,然后编译该源代码。Java 源代码可能包含在 JSP 页面受到请求时生成动态内容的 Java Bean。当 JSP 页面受到请求时,微型 HTTP Web 服务器执行相应的 Java 代码,然后将输出作为对请求的响应发送回 Web 浏览器。
JSP 应用程序开发是在 Windows 工作站上完成的,然后移植到移动设备上。
DB2 Everyplace JSP 支持中提供的 JSP 标记
DB2 Everyplace 中的 JSP 标记是 JSP 1.1 规范的子集。可用于 JSP 开发的标记如下:
page 伪指令:
page 伪指令定义了依赖于页面的属性。语法如下:
<%@
page page_directive_attr_list %>
page_directive_attr_list ::=
{extends="className" }
{import="importList" }
{contentType="ctinfo" }
这条伪指令的四个有效属性是:
language — 必须是“java”。
extends — 如果被指定,必须出现在 JSP 文件的开始处。缺省情况下,导入 com.ibm.db2e.JSP.server、java.io、java.sql 和 java.util 包。
import — 如果被指定,必须出现在 JSP 文件的开始处。
contentType — 可以是任何值(如 text/HTML、text/XML 等)。
include 伪指令
include 伪指令用来包含来自于 JSP/HTML 的数据。语法如下:
<%@ include file="relativeURLspec" %>
脚本元素
脚本编制元素用来声明 JSP 页面中使用的 Java 变量和方法。语法如下:
<%! declaration(s) %>
所支持的脚本编制元素如下:
scriptlet
scriptlet 可以包含任何有效(Java)代码段。这些代码段将被放到用于 JSP 页面的 Java 类的服务函数中。语法如下:
<% scriptlet %>
表达式(expression)
表达式是数据类型的字符串表示。JSP 处理器在运行时对表达式求值,并将表达式转换成字符串。语法如下:
<%= expression %>
隐式对象
当创建 JSP 页面时,我们具有对某些隐式对象的访问权。可以在 scriptlet 和表达式中使用这些对象,而不必首先声明它们。每个隐式对象都具有一个在核心 Java 技术或 com.ibm.db2e.JSP.server 包中定义的类。隐式对象的声明如表 1 所示。
表 1. 隐式对象
用于数据库访问的定制标记
可以在 JSP 应用程序中使用以下定制标记来访问 DB2 Everyplace 数据库:
<tsx:dbconnect>
该标记使用 DB2 Everyplace JDBC 驱动程序建立与指定的 DB2 Everyplace 数据库的连接。语法如下:
<tsx:dbconnect
id="connection_id"
driver="com.ibm.db2e.jdbc.DB2eDriver"
url="jdbc:db2e:database">
</tsx:dbconnect>
其中
id — 指定此连接的标识符。不要在 JSP 页面中重用此名称。该属性是必需的。
driver — 指定 DB2 Everyplace JDBC 驱动程序。该属性是必需的。
url — 指定 DB2 Everyplace 数据库。jdbc:db2e:database 变量中的项 database 表示 DB2 Everyplace 数据库的路径。该属性是必需的。
<tsx:dbquery>
此标记使用通过 <tsx:dbconnect> 标记指定的连接将查询提交给数据库,并生成一个 java.sql.ResultSet 对象,在该对象中游标指向结果集的第一行。可以使用此查询的标识符和 java.sql.ResultSet 的 DB2 Everyplace JDBC 接口引用此结果集。语法如下:
<tsx:dbquery id="query_id" connection="connection_id" limit="value">
select_SQL_statement
</tsx:dbquery>
其中
id — 指定此查询的标识符。不要在 JSP 页面中重用此查询标识符。该属性是必需的。
connection — 指定此 JSP 文件中 <tsx:dbconnect> 标记的标识符。该属性是必需的。
limit — 指定查询可以返回的最大行数。该属性是可选的。
select_SQL_statement — 指定想要提交给数据库的 SQL 查询。此 SQL 查询语句可以包含动态数据。
<tsx:dbmodify>
此标记使用通过 <tsx:dbconnect> 标记指定的连接来提交命令,以修改数据库内的数据。语法如下:
<tsx:dbmodify connection="connection_id">
modify_command
</tsx:dbmodify>
其中
connection — 指定此 JSP 文件中 <tsx:dbconnect> 标记的标识符。该属性是必需的。
modify_command — 指定要提交到数据库以修改数据的 SQL 命令。此修改命令可以包含动态数据。
<tsx:repeat>
此标记用来循环遍历查询结果中的每一行。start 和 stop 属性控制循环过程。如果未指定 start 和 stop 属性,当结果集的游标(通过 <tsx:getProperty> 标记引用)到达结果集的末尾时循环终止。可以嵌套此标记。语法如下:
<tsx:repeat index="name" start="starting_index" stop="ending_index">
repeat_block
</tsx:repeat>
其中
index — 指定此标记的循环变量的标识符。该属性是可选的。
start — 指定处理重复块之前要跳过的行数。缺省值为 0,该属性是可选的。
stop — 指定此重复块的结束循环变量值。缺省值是 2,147,483,647。该属性是可选的。
repeat_block — 指定 HTML 标记块,其中包含 <tsx:getProperty> 标记语法和用于格式化内容的 HTML 标记。如果将 <tsx:getProperty> 标记放置在重复块中,游标在每次处理重复块时都会进到下一行。
<tsx:getProperty>
此标记获取要在 JSP 页(HTML 结果页)中显示的 ResultSet bean 的值。如果将此标记放置在 <tsx:repeat> 重复块内,ResultSet bean 的游标在每次处理重复块时会进到下一行。语法如下:
<tsx:getProperty name="bean_name"
property="property_name" />
其中
name(必需)— 指定先前在该 JSP 文件的 <tsx:dbquery> 标记中声明的 ResultSet bean 的名称。
property(必需)— 指定要访问的 ResultSet bean 的列。
有了这些信息,我们就可以着手构建 JSP 应用程序了,它将访问我们先前创建的 DB2 Everyplace 表。
构建 JSP 应用程序
先前解压缩得到的文件夹 c:sampleJSP 包含 ITEMSelectView.j