spring+hibernate+dwr集成步骤

此次完成一个省市级联的小例子来进行说明,本文如有错误请广大博友指出

一、首先集成spring+hibernate

1.这两个框架集成已经在我的另外一篇博文中写了~~在此就不重复叙述,详情请见:点击打开链接


2.创建数据库.....province  与  city两张表

/*
SQLyog Ultimate v8.32 
MySQL - 5.5.28 : Database - users
*********************************************************************
*/


/*!40101 SET NAMES utf8 */;

/*!40101 SET SQL_MODE=''*/;

/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`users` /*!40100 DEFAULT CHARACTER SET gbk */;

USE `users`;

/*Table structure for table `city` */

DROP TABLE IF EXISTS `city`;

CREATE TABLE `city` (
  `cid` int(11) NOT NULL AUTO_INCREMENT,
  `cname` varchar(20) NOT NULL,
  `pid` int(11) NOT NULL,
  PRIMARY KEY (`cid`),
  KEY `FK_city` (`pid`),
  CONSTRAINT `FK_city` FOREIGN KEY (`pid`) REFERENCES `province` (`pid`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;

/*Data for the table `city` */

/*Table structure for table `province` */

DROP TABLE IF EXISTS `province`;

CREATE TABLE `province` (
  `pid` int(11) NOT NULL AUTO_INCREMENT,
  `pname` varchar(20) NOT NULL,
  PRIMARY KEY (`pid`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;

/*Data for the table `province` */

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

3,根据数据库字段创建两张表的实体类与映射文件,两张表为多对一的关系

public class Province implements Serializable {
	private int pid;
	private String pname;
	private Set<City> cities = new HashSet<City>();
      //此处省略setter与getter方法
}
public class City implements Serializable {
	private int cid;
	private String cname;
	private Province province;
}

映射文件:Province.hbm.xml

<hibernate-mapping package="com.minty.entity">
	<class name="Province">
		<id name="pid">
			<generator class="native"></generator>
		</id>
		<property name="pname"></property>
		<set name="cities" inverse="true">
			<key column="pid"></key>
			<one-to-many class="City"/>
		</set>
	</class>
</hibernate-mapping>


City.hbm.xml

<hibernate-mapping package="com.minty.entity">
	<class name="City">
		<id name="cid">
			<generator class="native"></generator>
		</id>
		<property name="cname"></property>
		<many-to-one name="province" class="Province" column="pid" ></many-to-one>
	</class>
</hibernate-mapping>


不要忘记在applicationContext.xml中导入该配置文件
4.编写Dao,DaoImpl,Biz ,BizImpl
此处省略...............dao中为所要实现的方法,biz中调用dao的方法
不要忘记在applicationContext.xml中配置  dao  与biz  并 给  dao 中注入 hibernateTemplate 模板
5.到这里最好进行下测试,这里spring 与 hibernate 集成完成,下面是dwr配置


二、集成DWR
1.首先添加dwr的jar文件支持,请自己下载..................................
2.在web.xml配置dwr的核心Servlet

<servlet>
		<servlet-name>dwr-invoker</servlet-name>
		<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
		<init-param>
			<param-name>debug</param-name>
			<param-value>true</param-value>
		</init-param>
	</servlet>
	<servlet-mapping>
		<servlet-name>dwr-invoker</servlet-name>
		<url-pattern>/dwr/*</url-pattern>
	</servlet-mapping>

3.在WEB-INF目录下创建dwr.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC
    "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"
    "http://getahead.org/dwr/dwr20.dtd">
<dwr>
	<allow>
		<!-- 配置转换器 -->
		<convert match="com.minty.entity.Province" converter="bean"></convert>
		<convert match="com.minty.entity.City" converter="bean">
			<!-- 转换时不包含City类中的province属性,笔者因为dwr无法转换此对象,所以将其排除 -->
			<param name="exclude" value="province"></param>
		</convert>
		<!-- 配置创建器,此前用dwr时creator="new" 现在将其改为spring -->
		<create javascript="JProvince" creator="spring">
			<!-- name为固定写法 value为spring配置文件中创建biz的id-->
			<param name="beanName" value="provinceBiz"></param>
			<include method="getAllProvince" />
		</create>

		<create javascript="JCity" creator="spring">
			<param name="beanName" value="cityBiz"></param>
			<include method="getCityByProvinceId" />
		</create>
	</allow>
</dwr>

4.配置完成进入dwr调试界面进行调试,如果调试成功则说明集成成功


5.在界面中调用方法,不要忘记在dwr调试界面中将一下几个js导入
映射文件:

<script type='text/javascript' src='/SSHDemo2/dwr/interface/JCity.js'></script>	
<script type='text/javascript' src='/SSHDemo2/dwr/interface/JProvince.js'></script>
<script type='text/javascript' src='/SSHDemo2/dwr/engine.js'></script>
<script type='text/javascript' src='/SSHDemo2/dwr/util.js'></script>

页面:

<script type="text/javascript">
function loadProvince() {
	JProvince.getAllProvince(function(data) {
		for ( var i = 0; i < data.length; i++) {
			DWRUtil.removeAllOptions("province");
			DWRUtil.addOptions("province", data, "pid", "pname");
		}
	});
}
function loadCity(pid) {
	JCity.getCityByProvinceId(pid,function(data){
		for(var i=0;i<data.length;i++){
			DWRUtil.removeAllOptions("city");
			DWRUtil.addOptions("city",data,"cid","cname");
		}
	});
}
</script>

<body οnlοad="loadProvince()">
		省份:
		<select id="province" οnchange="loadCity(this.value)">
			<option value="0">
				请选择
			</option>
		</select>
		市:
		<select id="city">
			<option value="0">
				请选择
			</option>
		</select>

到此已经全部集成成功



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值