Chinaunix首页 | 论坛 | 博客
  • 博客访问: 92027
  • 博文数量: 81
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1007
  • 用 户 组: 普通用户
  • 注册时间: 2013-11-20 14:50
文章分类

全部博文(81)

文章存档

2014年(21)

2013年(60)

我的朋友

分类: Java

2013-12-21 14:31:19

  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(sdudd1221);

  }

  %>

  在这里需要说明的是,如果带有参数的查询,需要加入类似以下取参数的代码:

  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数据库应用编程。

阅读(347) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~