- 浏览: 29615 次
- 性别:
- 来自: 宜昌
最新评论
很有段时间没有研究代码了,这几天自己动手写了一个小练习,主要用到的技术有
spring
hibernate
dwr
js
html
现将代码共享出来,希望对研究以上技术的朋友们有点帮助,互相学习!!!
下面进行下分解介绍
数据访问层
UserDao.java:
package com.testproject.dao;
import java.util.List;
import com.testproject.model.User;
/**
*
* @author davy liu
* Apr 4, 2010 9:51:40 PM
*/
public interface UserDao {
void save(User user);
void delete(Integer userid);
void update(User user);
List<User> findUsers();
User getUser(Integer userid);
}
UserDaoImpl.java:
package com.testproject.dao.impl;
import java.util.List;
import javax.annotation.Resource;
import org.hibernate.SessionFactory;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import com.testproject.dao.UserDao;
import com.testproject.model.User;
/**
*
* @author davy liu
* Apr 4, 2010 9:51:40 PM
*/
@Transactional
public class UserDaoImpl implements UserDao {
@Resource
private SessionFactory sessionFactory;
public void delete(Integer userid) {
sessionFactory.getCurrentSession().delete(
sessionFactory.getCurrentSession().load(User.class, userid));
}
public void save(User user) {
sessionFactory.getCurrentSession().persist(user);
}
public void update(User user) {
sessionFactory.getCurrentSession().merge(user);
}
@Transactional(propagation = Propagation.NOT_SUPPORTED, readOnly = true)
@SuppressWarnings("unchecked")
public List<User> findUsers() {
return sessionFactory.getCurrentSession().createQuery("from User")
.list();
}
@Transactional(propagation = Propagation.NOT_SUPPORTED, readOnly = true)
public User getUser(Integer userid) {
return (User) sessionFactory.getCurrentSession()
.get(User.class, userid);
}
}
//*********************************
数据实体
package com.testproject.model;
/**
*
* @author davy liu
* Apr 4, 2010 9:51:40 PM
*/
public class User {
/** id */
private Integer id;
/** uname */
private String uname;
/** uaddress */
private String uaddress;
public User(String uname, String uaddress) {
this.uname = uname;
this.uaddress = uaddress;
}
public User() {
}
public User(Integer uid, String uname, String uaddress) {
this.id = uid;
this.uname = uname;
this.uaddress = uaddress;
}
public String getUaddress() {
return uaddress;
}
public void setUaddress(String uaddress) {
this.uaddress = uaddress;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
}
//*********************************8
业务处理层
UserService.java:
package com.testproject.service;
import java.util.List;
import com.testproject.model.User;
/**
*
* @author davy liu
* Apr 4, 2010 9:51:40 PM
*/
public interface UserService {
int addUser(String name,String address);
int deleteUser(Integer userid);
int updateUser(Integer id,String name,String address);
List<User> findUsers();
User getUser(Integer userid);
}
UserServiceImpl.java:
package com.testproject.service.impl;
import java.util.ArrayList;
import java.util.List;
import com.testproject.dao.UserDao;
import com.testproject.model.User;
import com.testproject.service.UserService;
/**
*
* @author davy liu
* Apr 4, 2010 9:51:40 PM
*/
public class UserServiceImpl implements UserService {
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public int deleteUser(Integer userid) {
int result=0;
try {
userDao.delete(userid);
result=1;
} catch (RuntimeException e) {
e.printStackTrace();
}
return result;
}
@SuppressWarnings("unchecked")
public List<User> findUsers() {
List<User> result = new ArrayList<User>();
try {
List<User> users = userDao.findUsers();
for (Object o : users) {
User u = (User) o;
result.add(new User(u.getId(),u.getUname(),u.getUaddress()));
}
} catch (Exception e) {
}
return result;
}
public int updateUser(Integer id,String name,String address) {
int result=0;
try {
User user=userDao.getUser(id);
user.setUname(name);
user.setUaddress(address);
userDao.update(user);
result=user.getId();
} catch (RuntimeException e) {
e.printStackTrace();
}
return result;
}
public User getUser(Integer userid) {
User user = null;
try {
user =userDao.getUser(userid);
} catch (RuntimeException e) {
e.printStackTrace();
}
return user;
}
public int addUser(String name, String address) {
int result=0;
try {
User user=new User();
user.setUname(name);
user.setUaddress(address);
userDao.save(user);
result=user.getId();
} catch (RuntimeException e) {
e.printStackTrace();
}
return result;
}
}
//***************************
spring配置文件
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<context:annotation-config />
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/test</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>master</value>
</property>
<!--连接池启动时的初始值-->
<property name="initialSize" value="1" />
<!--连接池的最大值-->
<property name="maxActive" value="500" />
<!--最大空闲值。当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放
一部分,一直减少到maxIdle为止-->
<property name="maxIdle" value="2" />
<!--最小空闲值当空闲的连接数少于阀值时,连接池就会预申请一些连接,以免洪峰来时
来不及申请-->
<property name="minIdle" value="1" />
</bean>
<!-- 配置sessionFactory, 注意这里引入的包的不同 -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref local="dataSource" />
</property>
<property name="mappingResources">
<list>
<value>User.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
hibernate.hbm2ddl.auto=update
hibernate.show_sql=false
hibernate.format_sql=false
</value>
</property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<bean id="userDao" class="com.testproject.dao.impl.UserDaoImpl"/>
<tx:annotation-driven transaction-manager="transactionManager" />
<bean id="userService"
class="com.testproject.service.impl.UserServiceImpl">
<property name="userDao" ref="userDao"></property>
</bean>
</beans>
dwr配置文件
dwr.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.ltd.uk/dwr/dwr20.dtd">
<dwr>
<allow>
<create javascript="us" creator="spring">
<param name="beanName" value="userService"/>
<include method="addUser"/>
<include method="updateUser"/>
<include method="deleteUser"/>
<include method="findUsers"/>
<include method="getUser"/>
</create>
<convert match="com.testproject.model.User" converter="bean"></convert>
</allow>
</dwr>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<servlet>
<servlet-name>dwr</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</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>/page/welcome.html</welcome-file>
</welcome-file-list>
</web-app>
//********************
hibernate配置文件
User.hbm.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse - Hibernate Tools
-->
<hibernate-mapping package="com.testproject.model" >
<class name="User" table="userinfo" >
<id name="id" >
<generator class="native" />
</id>
<property name="uname" type="java.lang.String">
<column name="uname" length="20" not-null="true" />
</property>
<property name="uaddress" type="java.lang.String">
<column name="uaddress" length="100" not-null="true" />
</property>
</class>
</hibernate-mapping>
//*****************
页面+js脚本文件
add.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<title>增加</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<head>
<script type='text/javascript' src='/TestProject/dwr/interface/us.js'></script>
<script type='text/javascript' src='/TestProject/dwr/engine.js'></script>
<script type='text/javascript' src='/TestProject/dwr/util.js'></script>
<script type='text/javascript' src='common.js'></script>
</head>
<body>
<center>
<table border="1" CellSpacing="0" cellpadding="0" width="400"
height="250">
<tr align="center">
<td colspan=2>
<b>add</b>
</td>
</tr>
<tr>
<td align="right">
name:
</td>
<td align="center">
<input id="name" type="text">
</td>
</tr>
<tr>
<td align="right">
address:
</td>
<td align="center">
<input id="address" type="text">
</td>
</tr>
<tr align="center">
<td colspan=2>
<input type="button" value=" add " onclick="addUser()">
<input type="reset" value="cancel" onclick="clearText()">
<a href="main.html">返回详细</a>
</td>
</tr>
</table>
</center>
</body>
</html>
common.js
//增加
function addUser(){
var name =$('name').value;
var address =$('address').value;
if(name==null||name==""||address==""||address==null)
{
alert("请先输入用户名和地址信息");
return false;
}
us.addUser(name,address,addUserCb);
}
function addUserCb(data)
{
if(data>0)
{
$('name').value="";
$('address').value="";
alert("添加用户成功");
history.back();
}
else
{
alert("添加用户失败");
}
}
function clearText()
{
$('name').value="";
$('address').value="";
}
//查询
function getUsers(){
us.findUsers(callBack);
}
function callBack(data){
var cell=[
function(data){
return data.id;
},
function(data){
return data.uname;
},
function(data){
return data.uaddress;
},
function(data){
var up=document.createElement("a");
//up.href="update.html?id="+data.id;
up.href="javascript:getInfoToPage("+data.id+")";
up.innerHTML="编辑";
return up;
}
,
function(data){
var del=document.createElement("a");
del.setAttribute("href","javascript:delUser("+data.id+")");
var txt=document.createTextNode("删除");
del.appendChild(txt);
return del;
}
];
if (typeof window['DWRUtil'] == 'undefined')
window.DWRUtil = dwr.util;
DWRUtil.addRows("tab",data,cell);
}
//删除
function delUser(userid)
{
us.deleteUser(userid,delUserCb)
}
function delUserCb(data)
{
if(data>0)
{
alert('删除用户成功');
window.location.reload();
}
}
//修改
//先获得信息赋值给页面控件
function getInfoToPage(userid)
{
us.getUser(userid,InfoCb);
}
function InfoCb(data)
{
if(data!=null)
{
window.showModalDialog("update.html",data);
}
}
function upOnLoad()
{
var table=document.createElement("updiv");
table.innerHTML ="<table border='1' CellSpacing='0' cellpadding='0' width='400'height='250'><tr align='center'><td colspan=2> <b>update</b></td></tr><tr><td align='right'>id:</td><td><input type='text' id='upid' name='upid' readonly='readonly' value='"+window.dialogArguments.id+"'></td></tr><tr><td align='right'>name:</td><td><input type='text' id='upname' name='upname'value='"+window.dialogArguments.uname+"'></td></tr><tr> <td align='right'>address:</td><td><input type='text' id='upaddress' name='upaddress'value='"+window.dialogArguments.uaddress+"'></td></tr><tr align='center'><td colspan=2><input type='button' value='update' onclick='updateUser()'><input type='reset' value='cancel'></td></tr></table>";
document.body.appendChild(table);
}
function updateUser()
{
var id =$('upid').value;
var upname =$('upname').value;
var upaddress =$('upaddress').value;
if(upname==null||upname==""||upaddress==""||upaddress==null)
{
alert("请先输入用户名和地址信息");
return false;
}
us.updateUser(id,upname,upaddress,upCb);
}
function upCb(data)
{
if(data>0)
{
alert("修改用户数据成功");
window.close();
}
}
main.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<title>详细</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<head>
<script type='text/javascript' src='/TestProject/dwr/interface/us.js'></script>
<script type='text/javascript' src='/TestProject/dwr/engine.js'></script>
<script type='text/javascript' src='/TestProject/dwr/util.js'></script>
<script type='text/javascript' src='common.js'></script>
</head>
<body onload="getUsers()">
<center>
<table border="1">
<tr>
<td width="30" align="center">
编号
</td>
<td width="30" align="center">
姓名
</td>
<td width="30" align="center">
地址
</td>
<td colspan="2" width="60" align="center">
操作
</td>
</tr>
<tbody id="tab">
</tbody>
</table>
<a href="add.html">添加用户</a>
<a href="javascript:window.location.reload()">数据刷新</a>
</center>
</body>
</html>
update.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<title>修改</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta http-equiv="Expires" CONTENT="0">
<meta http-equiv="Cache-Control" CONTENT="no-cache">
<meta http-equiv="Pragma" CONTENT="no-cache">
<head>
<script type='text/javascript' src='/TestProject/dwr/interface/us.js'></script>
<script type='text/javascript' src='/TestProject/dwr/engine.js'></script>
<script type='text/javascript' src='/TestProject/dwr/util.js'></script>
<script type='text/javascript' src='common.js'></script>
</head>
<body onload="upOnLoad()">
<center>
<div id="updiv"></div>
</center>
</body>
</html>
welcome.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>welcome.html</title>
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
</head>
<body>
<a href="./page/main.html">显示</a>
</body>
</html>
以上系统完整的文件内容,环境搭好即可运行
运行环境:mysql+tomcat6+jdk6
spring和hibernate均用的最新版本的
spring
hibernate
dwr
js
html
现将代码共享出来,希望对研究以上技术的朋友们有点帮助,互相学习!!!
下面进行下分解介绍
数据访问层
UserDao.java:
package com.testproject.dao;
import java.util.List;
import com.testproject.model.User;
/**
*
* @author davy liu
* Apr 4, 2010 9:51:40 PM
*/
public interface UserDao {
void save(User user);
void delete(Integer userid);
void update(User user);
List<User> findUsers();
User getUser(Integer userid);
}
UserDaoImpl.java:
package com.testproject.dao.impl;
import java.util.List;
import javax.annotation.Resource;
import org.hibernate.SessionFactory;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import com.testproject.dao.UserDao;
import com.testproject.model.User;
/**
*
* @author davy liu
* Apr 4, 2010 9:51:40 PM
*/
@Transactional
public class UserDaoImpl implements UserDao {
@Resource
private SessionFactory sessionFactory;
public void delete(Integer userid) {
sessionFactory.getCurrentSession().delete(
sessionFactory.getCurrentSession().load(User.class, userid));
}
public void save(User user) {
sessionFactory.getCurrentSession().persist(user);
}
public void update(User user) {
sessionFactory.getCurrentSession().merge(user);
}
@Transactional(propagation = Propagation.NOT_SUPPORTED, readOnly = true)
@SuppressWarnings("unchecked")
public List<User> findUsers() {
return sessionFactory.getCurrentSession().createQuery("from User")
.list();
}
@Transactional(propagation = Propagation.NOT_SUPPORTED, readOnly = true)
public User getUser(Integer userid) {
return (User) sessionFactory.getCurrentSession()
.get(User.class, userid);
}
}
//*********************************
数据实体
package com.testproject.model;
/**
*
* @author davy liu
* Apr 4, 2010 9:51:40 PM
*/
public class User {
/** id */
private Integer id;
/** uname */
private String uname;
/** uaddress */
private String uaddress;
public User(String uname, String uaddress) {
this.uname = uname;
this.uaddress = uaddress;
}
public User() {
}
public User(Integer uid, String uname, String uaddress) {
this.id = uid;
this.uname = uname;
this.uaddress = uaddress;
}
public String getUaddress() {
return uaddress;
}
public void setUaddress(String uaddress) {
this.uaddress = uaddress;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
}
//*********************************8
业务处理层
UserService.java:
package com.testproject.service;
import java.util.List;
import com.testproject.model.User;
/**
*
* @author davy liu
* Apr 4, 2010 9:51:40 PM
*/
public interface UserService {
int addUser(String name,String address);
int deleteUser(Integer userid);
int updateUser(Integer id,String name,String address);
List<User> findUsers();
User getUser(Integer userid);
}
UserServiceImpl.java:
package com.testproject.service.impl;
import java.util.ArrayList;
import java.util.List;
import com.testproject.dao.UserDao;
import com.testproject.model.User;
import com.testproject.service.UserService;
/**
*
* @author davy liu
* Apr 4, 2010 9:51:40 PM
*/
public class UserServiceImpl implements UserService {
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public int deleteUser(Integer userid) {
int result=0;
try {
userDao.delete(userid);
result=1;
} catch (RuntimeException e) {
e.printStackTrace();
}
return result;
}
@SuppressWarnings("unchecked")
public List<User> findUsers() {
List<User> result = new ArrayList<User>();
try {
List<User> users = userDao.findUsers();
for (Object o : users) {
User u = (User) o;
result.add(new User(u.getId(),u.getUname(),u.getUaddress()));
}
} catch (Exception e) {
}
return result;
}
public int updateUser(Integer id,String name,String address) {
int result=0;
try {
User user=userDao.getUser(id);
user.setUname(name);
user.setUaddress(address);
userDao.update(user);
result=user.getId();
} catch (RuntimeException e) {
e.printStackTrace();
}
return result;
}
public User getUser(Integer userid) {
User user = null;
try {
user =userDao.getUser(userid);
} catch (RuntimeException e) {
e.printStackTrace();
}
return user;
}
public int addUser(String name, String address) {
int result=0;
try {
User user=new User();
user.setUname(name);
user.setUaddress(address);
userDao.save(user);
result=user.getId();
} catch (RuntimeException e) {
e.printStackTrace();
}
return result;
}
}
//***************************
spring配置文件
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<context:annotation-config />
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/test</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>master</value>
</property>
<!--连接池启动时的初始值-->
<property name="initialSize" value="1" />
<!--连接池的最大值-->
<property name="maxActive" value="500" />
<!--最大空闲值。当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放
一部分,一直减少到maxIdle为止-->
<property name="maxIdle" value="2" />
<!--最小空闲值当空闲的连接数少于阀值时,连接池就会预申请一些连接,以免洪峰来时
来不及申请-->
<property name="minIdle" value="1" />
</bean>
<!-- 配置sessionFactory, 注意这里引入的包的不同 -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref local="dataSource" />
</property>
<property name="mappingResources">
<list>
<value>User.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
hibernate.hbm2ddl.auto=update
hibernate.show_sql=false
hibernate.format_sql=false
</value>
</property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<bean id="userDao" class="com.testproject.dao.impl.UserDaoImpl"/>
<tx:annotation-driven transaction-manager="transactionManager" />
<bean id="userService"
class="com.testproject.service.impl.UserServiceImpl">
<property name="userDao" ref="userDao"></property>
</bean>
</beans>
dwr配置文件
dwr.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.ltd.uk/dwr/dwr20.dtd">
<dwr>
<allow>
<create javascript="us" creator="spring">
<param name="beanName" value="userService"/>
<include method="addUser"/>
<include method="updateUser"/>
<include method="deleteUser"/>
<include method="findUsers"/>
<include method="getUser"/>
</create>
<convert match="com.testproject.model.User" converter="bean"></convert>
</allow>
</dwr>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<servlet>
<servlet-name>dwr</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</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>/page/welcome.html</welcome-file>
</welcome-file-list>
</web-app>
//********************
hibernate配置文件
User.hbm.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse - Hibernate Tools
-->
<hibernate-mapping package="com.testproject.model" >
<class name="User" table="userinfo" >
<id name="id" >
<generator class="native" />
</id>
<property name="uname" type="java.lang.String">
<column name="uname" length="20" not-null="true" />
</property>
<property name="uaddress" type="java.lang.String">
<column name="uaddress" length="100" not-null="true" />
</property>
</class>
</hibernate-mapping>
//*****************
页面+js脚本文件
add.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<title>增加</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<head>
<script type='text/javascript' src='/TestProject/dwr/interface/us.js'></script>
<script type='text/javascript' src='/TestProject/dwr/engine.js'></script>
<script type='text/javascript' src='/TestProject/dwr/util.js'></script>
<script type='text/javascript' src='common.js'></script>
</head>
<body>
<center>
<table border="1" CellSpacing="0" cellpadding="0" width="400"
height="250">
<tr align="center">
<td colspan=2>
<b>add</b>
</td>
</tr>
<tr>
<td align="right">
name:
</td>
<td align="center">
<input id="name" type="text">
</td>
</tr>
<tr>
<td align="right">
address:
</td>
<td align="center">
<input id="address" type="text">
</td>
</tr>
<tr align="center">
<td colspan=2>
<input type="button" value=" add " onclick="addUser()">
<input type="reset" value="cancel" onclick="clearText()">
<a href="main.html">返回详细</a>
</td>
</tr>
</table>
</center>
</body>
</html>
common.js
//增加
function addUser(){
var name =$('name').value;
var address =$('address').value;
if(name==null||name==""||address==""||address==null)
{
alert("请先输入用户名和地址信息");
return false;
}
us.addUser(name,address,addUserCb);
}
function addUserCb(data)
{
if(data>0)
{
$('name').value="";
$('address').value="";
alert("添加用户成功");
history.back();
}
else
{
alert("添加用户失败");
}
}
function clearText()
{
$('name').value="";
$('address').value="";
}
//查询
function getUsers(){
us.findUsers(callBack);
}
function callBack(data){
var cell=[
function(data){
return data.id;
},
function(data){
return data.uname;
},
function(data){
return data.uaddress;
},
function(data){
var up=document.createElement("a");
//up.href="update.html?id="+data.id;
up.href="javascript:getInfoToPage("+data.id+")";
up.innerHTML="编辑";
return up;
}
,
function(data){
var del=document.createElement("a");
del.setAttribute("href","javascript:delUser("+data.id+")");
var txt=document.createTextNode("删除");
del.appendChild(txt);
return del;
}
];
if (typeof window['DWRUtil'] == 'undefined')
window.DWRUtil = dwr.util;
DWRUtil.addRows("tab",data,cell);
}
//删除
function delUser(userid)
{
us.deleteUser(userid,delUserCb)
}
function delUserCb(data)
{
if(data>0)
{
alert('删除用户成功');
window.location.reload();
}
}
//修改
//先获得信息赋值给页面控件
function getInfoToPage(userid)
{
us.getUser(userid,InfoCb);
}
function InfoCb(data)
{
if(data!=null)
{
window.showModalDialog("update.html",data);
}
}
function upOnLoad()
{
var table=document.createElement("updiv");
table.innerHTML ="<table border='1' CellSpacing='0' cellpadding='0' width='400'height='250'><tr align='center'><td colspan=2> <b>update</b></td></tr><tr><td align='right'>id:</td><td><input type='text' id='upid' name='upid' readonly='readonly' value='"+window.dialogArguments.id+"'></td></tr><tr><td align='right'>name:</td><td><input type='text' id='upname' name='upname'value='"+window.dialogArguments.uname+"'></td></tr><tr> <td align='right'>address:</td><td><input type='text' id='upaddress' name='upaddress'value='"+window.dialogArguments.uaddress+"'></td></tr><tr align='center'><td colspan=2><input type='button' value='update' onclick='updateUser()'><input type='reset' value='cancel'></td></tr></table>";
document.body.appendChild(table);
}
function updateUser()
{
var id =$('upid').value;
var upname =$('upname').value;
var upaddress =$('upaddress').value;
if(upname==null||upname==""||upaddress==""||upaddress==null)
{
alert("请先输入用户名和地址信息");
return false;
}
us.updateUser(id,upname,upaddress,upCb);
}
function upCb(data)
{
if(data>0)
{
alert("修改用户数据成功");
window.close();
}
}
main.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<title>详细</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<head>
<script type='text/javascript' src='/TestProject/dwr/interface/us.js'></script>
<script type='text/javascript' src='/TestProject/dwr/engine.js'></script>
<script type='text/javascript' src='/TestProject/dwr/util.js'></script>
<script type='text/javascript' src='common.js'></script>
</head>
<body onload="getUsers()">
<center>
<table border="1">
<tr>
<td width="30" align="center">
编号
</td>
<td width="30" align="center">
姓名
</td>
<td width="30" align="center">
地址
</td>
<td colspan="2" width="60" align="center">
操作
</td>
</tr>
<tbody id="tab">
</tbody>
</table>
<a href="add.html">添加用户</a>
<a href="javascript:window.location.reload()">数据刷新</a>
</center>
</body>
</html>
update.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<title>修改</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta http-equiv="Expires" CONTENT="0">
<meta http-equiv="Cache-Control" CONTENT="no-cache">
<meta http-equiv="Pragma" CONTENT="no-cache">
<head>
<script type='text/javascript' src='/TestProject/dwr/interface/us.js'></script>
<script type='text/javascript' src='/TestProject/dwr/engine.js'></script>
<script type='text/javascript' src='/TestProject/dwr/util.js'></script>
<script type='text/javascript' src='common.js'></script>
</head>
<body onload="upOnLoad()">
<center>
<div id="updiv"></div>
</center>
</body>
</html>
welcome.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>welcome.html</title>
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
</head>
<body>
<a href="./page/main.html">显示</a>
</body>
</html>
以上系统完整的文件内容,环境搭好即可运行
运行环境:mysql+tomcat6+jdk6
spring和hibernate均用的最新版本的
相关推荐
Struts2 + spring + hibernate + dwr 完美整合代码 dwr 用户注册 多级下拉联动 刷新表格.. 全部代码
DWR+Struts+spring+hibernate的订货系统,自己添加的dwr功能
使用struts2、hibernate、spring、dwr整合的简单项目。包括级联等 注意:csdn上面显示为chm文件。该文件为.7z的压缩文件。用压缩软件可以打开的 csdn弄错了
struts1+spring+hibernate+dwr 项目 满意度调查struts1+spring+hibernate+dwr 项目 满意度调查struts1+spring+hibernate+dwr 项目 满意度调查struts1+spring+hibernate+dwr 项目 满意度调查
struts2+hibernate+spring+dwr(用户注册)struts2+hibernate+spring+dwr(用户注册)
spring+struts+hibernate+jbpm+dwr整合开发的OA办公系统源码
一个struts2+spring+hibernate+dwr的小实例,不过木有搭建说明,不过有dwr的使用说明,至于表结构可以看映射配置文件就知道创建什么表了
《疯狂Ajax讲义:Prototype/jQuery+DWR+Spring+Hibernate整合开发》是疯狂Java体系丛书之一,前8章基本以XHTML、JavaScript和DOM编程为主,无须任何基础即可阅读;第9章以后的内容则需要掌握Spring、Hibernate等Java ...
重磅推出 struts+spring+hibernate+dwr整合分页例子
NULL 博文链接:https://jsrookie.iteye.com/blog/294756
Struts+Hibernate+Spring+DWR实例
用户注册和登录是每个系统的必须存在的一部分,基于Dwr+Struts2+Spring+Hibernate写了一个用户登录注册系统。 其中用Dwr去进行用户注册的用户是否存在的验证。 全部业务控制交由Spring去进行处理。事务处理也...
适合初学者,快速了解struts+spring+hibernate开发 注册小程序 含有SSHjar包
Spring+Hibernate+Ext+dwr做的一个简单的grid的增删改查,面板布局, 通过autoload方式载入grid ,以及XML树的建立 ,连接MySql数据库 。JS文件代码在Demo文件夹下,JAVA代码在src下。适合新手
ext2+spring+hibernate+dwr做的小系统,很好的一个研究例子。
学习对象:熟悉JavaScript, 了解JSTL, servlet/JSP, Struts 1.2, Hibernate, Spring, Ajax技术。 该示例使用MyEclipse 5.5 IDE用来整合四个技术(Struts 1.2, Spring 2.0, Hibernate 3.2和Ajax技术)的轻量级的...
dwr+spring+hibernate模板
sturts2+spring+hibernate+dwr2例子
struts+hibernate+spring+dwr的案例,采用spring+dwr来实现的小案例
公文管理、申请审批、公告管理、会议管理、权限管理、个人办公、客户管理、人事等等。项目技术:Struts1.2 + Hibernate3.0 + Spring2 +DWR。java毕业设计 jsp毕业设计 ssh毕业设计