AJAX for Java简单表数据查询实例
AJAX WebShop 3对Java开发具有良好的支持,同时也提供了各种层次的后台服务开发接口,本系列文章对AJAX for Java的数据库应用编程方式进行全面介绍。
一.数据表说明
例子采用了Access数据库,当然你也可以使用mysql 或其他类型数据库,数据库名称为:demo.mdb,表名为product,创建字段分别是PRODUCT_ID, PRODUCT_NAME, PRODUCT_PRICE, PRODUCT_AREA。
二.实现数据查询
首先启动AJAX WebShop 3,在File中选择“New Project”建立新工程。
在弹出的New Project对话框中设置projectname 和web server本例中设置projectname为:java_example和设置web server为:Java。如果要修改工程路径,请在Directory中设置要存放的路径。
首先我们要实现后台的数据库访问服务类,实现Java后台服务类的方法有几种,但都是使用XmlDataSet类,在3.0版本之前是使用XmlRequest和XmlPost类,而XmlDataSet是这两个功能的集成,并提供了更简单易用的方法:
方法A:通过WebShop的向导产生基于BusinessObjectBean的类代码框架,然后在此基础上修改query_XML和update_XML方法
设置好New Project后,再打开“File”选择“New .Java Service”,在弹出的对话框内目录输入包名:demo,设置”Class Name”为:Simple,点击“OK“后,向导将按默认模板生成Java单表数据读取和数据提交的代码,修改代码中的数据库连接串、表名就可以了。
方法B: 使用其他Java开发工具,建立基于BusinessObjectBean的类并覆盖query_XML和update_XML方法。
方法A和B需要使用两个Servlet:Query.class和Update.class,这两个Servlet在web.xml中有配置。
方法C: 使用其他Java开发工具,分别建立数据读取和数据提交的servlet或jsp,当然也可以建立您自己的框架与控制机制,比如用您的servlet控制调用相关的JavaBean,在JavaBean中实现数据读取和数据提交。此种方法也可以与现有的流行框架很好地融合。
不管采用以上何种方法主要涉及XmlDataSet类,常用的属性:maxRows、recNo,常用的方法:open、getParam、fillFields、fillData、fillRow、addField、append、setValue、setRecordCount、getXml、setError,详细请参考帮助文档。
简单读取数据的几种实现方法:
JavaBean数据读取方法
import joyistar.eip.bs.*; import joyistar.eip.vo.*; import java.sql.*;
public class Simple extends BusinessObjectBean { String drivers = "sun.jdbc.odbc.JdbcOdbcDriver"; String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=database/demo.mdb"; String tablename = "product"; String username = ""; String password = "";
public Simple() { }
public joyistar.eip.vo.XmlDataSet query_XML(joyistar.eip.vo.XmlDataSet xmlDataSet) throws Exception { Connection conn = null; String sql = ""; ResultSet rs = null; Statement stmt = null; try{ System.setProperty("jdbc.drivers", drivers); conn = DriverManager.getConnection(url, username, password); sql = "select * from " + tablename; stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); rs = stmt.executeQuery(sql); rs.last(); xmlDataSet.setRecordCount(rs.getRow()); xmlDataSet.fillFields(rs); xmlDataSet.fillData(rs); } catch(Exception e) { xmlDataSet.error = e.getMessage(); e.printStackTrace(); } finally { if(rs != null) rs.close(); if(stmt != null) stmt.close(); if(conn != null) conn.close(); } return xmlDataSet; } |
JSP数据读取使用方法 <%@ page contentType="text/xml; charset=utf-8" %> <%@ page import="joyistar.eip.vo.*" %> <%@ page import="java.sql.*" %> <% String drivers = "sun.jdbc.odbc.JdbcOdbcDriver"; String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=database/demo.mdb"; String tablename = "product"; String username = ""; String password = ""; Connection conn = null; String sql = ""; ResultSet rs = null; Statement stmt = null; XmlDataSet xmlDataSet = new XmlRequest(); try{ xmlDataSet.open(request); System.setProperty("jdbc.drivers", drivers); conn = DriverManager.getConnection(url, username, password); sql = "select * from " + tablename; stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); rs = stmt.executeQuery(sql); rs.last(); xmlDataSet.setRecordCount(rs.getRow()); xmlDataSet.fillFields(rs); xmlDataSet.fillData(rs); out.println(xmlDataSet.getXml()); out.flush(); } catch(Exception e) { xmlDataSet.error = e.getMessage(); out.println(xmlDataSet.getXml()); out.flush(); e.printStackTrace(); } finally { if(rs != null) rs.close(); if(stmt != null) stmt.close(); if(conn != null) conn.close(); } %> |
在这里需要说明的是,如果带有参数的查询,需要加入类似以下取参数的代码:
Param param1 = xmlDataSet.getParam("SALE_ID"); if(param1!=null) { sql += " where SALE_ID="+param1.value; } |
如果是JavaBean,需要使用Run->Build编译生成类文件(相关的路径在工程属性中可以查看),后台数据访问类建立好后,在“File”中选择“New Page”打开“New Page”对话框在“File Name”中设置页面名称,如本例“simple.htm”点击ok完成设置。
在webshop的元件选项板“Data Access ”,“DBControl”中,拖拉向表单加入DataSet和数据感应控件DBNavigator、DBEdit、DBGrid等,简单地可视化拖拉建立界面,点击组件,会在右侧出现相应属性。
注意:AJAX for Java开发中DataSet的服务路径设置有几种方法,分别对应以上几种后台的开发方式,一种是设置DataSource的类名,另一种是设置OpenURL和UpdateURL。如果设置了DataSource将系统优先采用这种方式。DataSource是用于JavaBean的方式,而 OpenURL和UpdateURL适用于您的JSP、Servlet或框架。
选择DataSet1,在“DataSource”属性中添加Java Service类路径或在“OpenURL”属性中添加Service的JSP(Servlet),这里设置DataSource为“demo/Simple”,如果是使用JSP(Servlet),这里可能是demo/simple_query.jsp。
打开WebShop中的“Run”启动”Start WebServer”服务,内嵌的Tomcat将启动。
成功启动 “WebServer”服务后,在DataSet1的“Fields”属性中添加数据字段,方法为点击右侧“…”弹出Fields对话框,在页面单击右键,在弹出选项中选择“Add Field”在弹出的“Field List”中点击 “Refresh”会在列表中显示数据表 “Product ”的字段名,全部选中后,点击“ok”完成设置(操作见下图)。
设置好数据连接后,“DataSet1的“Active”属性设置为“true”如图;
同时选择DBGrid1、DBNavigator、DBEdit等界面对象,在DataSet属性中选择数据源 “DataSet1”。完成数据库连接;另外,DBEdit需要选择设置DataField属性,指定要绑定的字段,点击“Run”查看运行效果。
这里实现的是一个简单的表数据读取,后续的文章中我将介绍表数据提交、主从表及更高级的AJAX数据库应用编程。