技术开发 频道

为DB2编写基于Web的表编辑器 GUI

    应用程序概述

    就像基于 Swing 的 同类应用程序 一样,DB2 webSQL 允许通过一个 Web 浏览器完成四件与 IBM DB2 数据库相关的事情:

    查看一个表。
    添加一行到一个表中。
    从一个表中删除一行。
    更新一个表。

    进一步研究应用程序

    webSQL 应用程序允许查看和更改数据库中的表。为了防止对数据库的未授权访问,您必须通过登录来使自己可以合法地访问数据库。 图 2是登录屏幕,当用户首次访问应用程序时就会看到这个屏幕。登录页面的代码是静态的 HTML,存放在 login.html 中。

    图 2. 登录进入 WebSQL

    该页面要求用户在登录表单中输入每一个域,但不需要输入模式。如果您是在自己的机器上使用该应用程序,机器上也有 DB2、Web 应用程序服务器和客户机,那么这里服务器应填“localhost”。而且,如果您使用了缺省的安装选项,那么端口就是 50000。

    当您在登录屏幕上输入了所需的信息并单击 Submit 时,该请求就被发送到 AuthenticateServlet。这个 servlet 接收在登录时输入的信息并验证您是否具有访问数据库的许可。查看一下 AuthenticationServlet.java 的代码。在代码中您将注意到,这里实例化了一个“DBInfo”对象。正是通过这个对象我们才得以建立自己的数据库,才能够收集关于数据库数据的信息(例如,表名、列名,等等)。如果您得到了授权,就会进入下一个屏幕(见 图 3),这个屏幕是由 choosetable.jsp 呈现的,通过这个屏幕可以从一个列表中选择要访问的表。如果您在登录时未得到授权,那么将看到 error.jsp 页面。

    图 3. 选择要编辑的表

    为了收集表名列表,应用程序调用 DBInfo 的 getTables 方法。getTables 方法通过查询 DB2 编目表 sysibm.tables 来收集这些表名。

    登录成功之后,您就可以查看和更改 DB2 数据库的内容了。所有这些请求都由 DBManipulateServlet.java 这个 servlet 来处理。

    DBManipuateServlet servlet 是一个控制器 servlet,负责处理对在一个表中插入一行、删除一行和更新一行这些操作的请求。它使用一个助手类 DBHandler 来做一些低级的工作。DBHandler 类最重要的部分是 executeSQL() 方法,该方法将执行请求来修改 DB2 数据。

    通过查看 executeSQL() 方法的代码我们可以发现,这里使用了一个可滚动的(scrollable) ResultSet 对象。通过使用 JDBC 2.0 API 函数,我们可以在需要的时候将游标移到一个特定的行。我们也可以使 ResultSet 对象成为可更新的,以便于更改我们的行数据。

    查看表数据

    为了查看特定表的内容,从 Table Chooser 下拉列表中选择一个特定的表,然后单击 Change Table(见 图 3),这将显示出一个如 图 4所示的屏幕。

    该屏幕显示表的内容,同时还包括一个名为 Current Function 的下拉列表,通过这个下拉列表您可以更改表中的数据。这个页面是由 manipulatetable.jsp 呈现的。在查看这个 JSP 的代码时请注意,它包含了大量嵌入在 Java Server Page scriptlet 中的 JavaScript。代码中有很多换码符(escape character),这是为了便于容纳 JSP 中嵌入的 JavaScript,即 scriptlet 代码。这里嵌入 JavaScript 是有必要的,因为这样可以呈现用于控制 Add 和 Update 功能的弹出窗口。

    关于该代码的一个重要方面是,我们如何确立要传递给 DBManipulateServlet 的参数。实际上,我们无法预先知道一个未确定的表中有些什么样的列。因此,我们要动态地创建这些表单变量。通过使用 DBInfo 的 getColumns 方法,我们可以根据计划使用请求变量的方式而在列名中缀上 “pre” 或 “post”。为了更好地理解 manipulatetable.jsp 的工作,我们建议您查看一下由该 JSP 为一个给定的表生成的 HTML 代码,并将其与 manipulatetable.jsp 的代码相比较。这样您将更加了解在页面装载时,该页面是如何动态地生成用于显示不同表和列的代码的。

    图 4. 选择一个功能

    添加一行

    为了添加一行,需从 Current Function 下拉列表中选择 Add Row。这时将显示一个新的 JavaScript 弹出窗口,通过这个窗口可以插入一个新行( 图 5)。

    图 5. 将一个新行插入到表中

    您可以在第二列中输入新行所需的一些值,然后单击 Add Row 以便将更改应用到数据库中。刚才添加的那一行将在 GUI 中反映出来( 图 6)。

    图 6. 新插入的行显示在屏幕上

0
相关文章