自己做的spring+hibernate+dwr+js+html小例子

很有段时间没有研究代码了,这几天自己动手写了一个小练习,主要用到的技术有
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 " οnclick="addUser()">
<input type="reset" value="cancel" οnclick="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' οnclick='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 οnlοad="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 οnlοad="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均用的最新版本的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值