`
hbldw521
  • 浏览: 29615 次
  • 性别: Icon_minigender_1
  • 来自: 宜昌
社区版块
存档分类
最新评论

自己做的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 " 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均用的最新版本的
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics