ssh2整合的一个小Demo
2014-01-15 02:13
381 查看
随意写的一个ssh2整合的一个小Demo,代码较简单,当做是打发下时间。
项目源码:http://download.csdn.net/detail/huangzebiao007/6847759
项目截图:
一、applicationContext.xml文件
二、struts.xml文件
三、在web.xml中配置框架
四、在mysql数据库中建立一个ssh2数据库,建好一张表,然后使用myeclipse生成po类和hbm.xml文件
五、编写DAO层:先建好一个BaseDAO类,里面包含一些基本的DAO方法,然后所有的DAO类都继承该类
六、编写business层
七、编写action层
八、编写页面
index.jsp
add.jsp
update.jsp
success.jsp
九、部署到tomcat后输入http://localhost:8080/ssh2/getUsers.action测试下效果
由于是练下手,所以很多东西都不完善,spring事务处理,hibernate缓存、分页等也没弄,前台可以集成extjs,大家有空的话可以下载下来练下手,这些等以后有时间再加上去玩玩。
项目源码:http://download.csdn.net/detail/huangzebiao007/6847759
项目截图:
一、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:util="http://www.springframework.org/schema/util" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"> <!-- 数据源配置,这里使用dbcp数据源 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/ssh2?useUnicode=true&characterEncoding=UTF-8" /> <property name="username" value="root" /> <property name="password" value="root" /> <!-- 连接池启动时的初始值 --> <property name="initialSize" value="1" /> <!-- 连接池的最大值 --> <property name="maxActive" value="20" /> <!-- 最大空闲值。当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 --> <property name="minIdle" value="3" /> <property name="maxIdle" value="20" /> <!-- 最小空闲值。当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 --> <property name="maxWait" value="60000" /> <property name="defaultAutoCommit" value="true" /> <!--#在取出连接时进行有效验证--> <property name="removeAbandoned" value="true" /> <property name="removeAbandonedTimeout" value="180" /> </bean> <!-- sessionFactory配置 --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSource" /> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> <prop key="hibernate.show_sql">false</prop> <prop key="hibernate.format_sql">false</prop> <prop key="hibernate.hbm2ddl.auto">update</prop> </props> </property> <!-- Mapping 到对应的Bo文件 --> <property name="mappingResources"> <list> <value>com/hzb/xml/TUser.hbm.xml</value> </list> </property> </bean> <!-- DAO的声明配置 --> <bean id="UserDAO" class="com.hzb.dao.UserDAO"> <property name="sessionFactory"> <ref local="sessionFactory" /> </property> </bean> <!-- business的声明配置 --> <bean id="UserBusiness" class="com.hzb.business.UserBusiness"> <property name="userDAO"> <ref bean="UserDAO"/> </property> </bean> <!-- action的声明配置 --> <bean id="UserAction" class="com.hzb.action.UserAction"> <property name="userBusiness"> <ref bean="UserBusiness"/> </property> </bean> </beans>
二、struts.xml文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="hzb" extends="struts-default"> <action name="*" class="UserAction" method="{1}"> <result name="saveUser">/success.jsp</result> <result name="deleteUser">/success.jsp</result> <result name="updateUser">/success.jsp</result> <result name="getUser">/update.jsp</result> <result name="getUsers">/index.jsp</result> <result name="input">/input.jsp</result> </action> </package> </struts>
三、在web.xml中配置框架
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <!-- 集成struts2框架 --> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 集成spring框架 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:/applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> </web-app>
四、在mysql数据库中建立一个ssh2数据库,建好一张表,然后使用myeclipse生成po类和hbm.xml文件
package com.hzb.po; // default package /** * TUser entity. @author MyEclipse Persistence Tools */ public class TUser implements java.io.Serializable { private static final long serialVersionUID = 1268989912439906808L; private Long id; private String name; private Integer age; // Constructors /** default constructor */ public TUser() { } /** full constructor */ public TUser(String name, Integer age) { this.name = name; this.age = age; } // Property accessors public Long getId() { return this.id; } public void setId(Long id) { this.id = id; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } public Integer getAge() { return this.age; } public void setAge(Integer age) { this.age = age; } }
<?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 Persistence Tools --> <hibernate-mapping> <class name="com.hzb.po.TUser" table="t_user" catalog="ssh2"> <id name="id" type="java.lang.Long"> <column name="id" /> <generator class="identity" /> </id> <property name="name" type="java.lang.String"> <column name="name" length="50" /> </property> <property name="age" type="java.lang.Integer"> <column name="age" /> </property> </class> </hibernate-mapping>
五、编写DAO层:先建好一个BaseDAO类,里面包含一些基本的DAO方法,然后所有的DAO类都继承该类
package com.hzb.dao; import java.util.List; import org.hibernate.Session; import org.springframework.orm.hibernate3.SessionFactoryUtils; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; /** * 所实现的DAO类必须继承BaseDAO, BaseDAO提供了一组常用的持久方法. 在使用时只需要直接调用即可. */ public abstract class BaseDAO extends HibernateDaoSupport { /** * 将对象持久化到数据库中. * * @param transientInstance * - 持久化对象. */ public void save(Object transientInstance) { getHibernateTemplate().save(transientInstance); } /** * 更新方法. * * @param detachedInstance * - 持久化对象. */ public void update(Object detachedInstance) { getHibernateTemplate().update(detachedInstance); } /** * 更新方法. * * @param detachedInstance * - 持久化对象. * @return - Object 更新后的持久化对象. */ public Object merge(Object detachedInstance) { return getHibernateTemplate().merge(detachedInstance); } /** * 新增或更新方法. * * @param transientInstance * - 持久化对象. */ public void saveOrUpdate(Object transientInstance) { getHibernateTemplate().saveOrUpdate(transientInstance); } /** * 删除方法. * * @param persistentInstance * - 持久化对象. */ public void delete(Object persistentInstance) { getHibernateTemplate().delete(persistentInstance); } /** * 根据主键(id)进行查找一条数据. * * @param id * - 要查找的主键(id). * @return - 返回一个Object对象, 在使用方需要转型. */ public Object get(Class<?> clazz, long id) { return getHibernateTemplate().get(clazz, id); } /** * 根据主键(id)进行查找一条数据. * * @param id * - 要查找的主键(id). * @return - 返回一个Object对象, 在使用方需要转型. */ public Object get(Class<?> clazz, String id) { return getHibernateTemplate().get(clazz, id); } /** * 根据传入ID查找数据 * * @param id * @return */ public Object load(Class<?> clazz, long id) { return getHibernateTemplate().load(clazz, id); } /** * 根据传入ID查找数据 * * @param id * @return */ public Object load(Class<?> clazz, String id) { return getHibernateTemplate().load(clazz, id); } /** * 根据传入hql查找数据 * * @param hql * @return */ public List<?> find(String hql) { return getHibernateTemplate().find(hql); } /** * 根据传入hql查找数据 * * @param hql * ,attrs,values * @return */ public List<?> findByNamedParam(String hql, String[] attrs, Object[] values) { if (null != attrs && null != values && attrs.length == values.length) { return getHibernateTemplate().findByNamedParam(hql, attrs, values); } else { return null; } } /** * 在SessionFactory中获取Session对象. * * @return - Hibernate Session对象. */ public Session getCurrentSession() { return SessionFactoryUtils.getSession(getSessionFactory(), true); } /** * 在SessionFactory中关闭Session对象. */ public void closeSession(Session session) { SessionFactoryUtils.releaseSession(session, getSessionFactory()); } }
package com.hzb.dao; public class UserDAO extends BaseDAO { }
六、编写business层
package com.hzb.business; import java.util.List; import com.hzb.dao.UserDAO; import com.hzb.po.TUser; public class UserBusiness { private UserDAO userDAO; public void setUserDAO(UserDAO userDAO) { this.userDAO = userDAO; } public void saveUser(String name,int age){ TUser user = new TUser(); user.setName(name); user.setAge(age); userDAO.save(user); } public void deleteUser(long id){ userDAO.delete(getUser(id)); } public void updateUser(long id,String name,int age){ TUser user = getUser(id); if(null != user){ if(null != name){ user.setName(name); } if(age > 0){ user.setAge(age); } userDAO.update(user); } } public TUser getUser(long id){ return (TUser)userDAO.get(TUser.class, id); } public List<TUser> getUsers(){ String hql = "from TUser order by id desc"; return (List<TUser>) userDAO.find(hql); } }
七、编写action层
package com.hzb.action; import java.util.List; import com.hzb.business.UserBusiness; import com.hzb.po.TUser; import com.opensymphony.xwork2.ActionSupport; public class UserAction extends ActionSupport{ private static final long serialVersionUID = -747838315425274747L; private UserBusiness userBusiness; private long id; private String name; private int age; private TUser tuser; private List<TUser> userlist; public void setUserBusiness(UserBusiness userBusiness) { this.userBusiness = userBusiness; } public String saveUser(){ if(null != name && !"".equals(name) && age > 0){ userBusiness.saveUser(name, age); return "saveUser"; }else{ return INPUT; } } public String deleteUser(){ if(id != 0){ userBusiness.deleteUser(id); return "deleteUser"; }else{ return INPUT; } } public String updateUser(){ if(id != 0){ userBusiness.updateUser(id, name, age); return "updateUser"; }else{ return INPUT; } } public String getUser(){ if(id != 0){ tuser = userBusiness.getUser(id); return "getUser"; }else{ return INPUT; } } public String getUsers(){ userlist = userBusiness.getUsers(); return "getUsers"; } public String execute() { return "success"; } public long getId() { return id; } public void setId(long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public TUser getTuser() { return tuser; } public void setTuser(TUser tuser) { this.tuser = tuser; } public List<TUser> getUserlist() { return userlist; } public void setUserlist(List<TUser> userlist) { this.userlist = userlist; } }
八、编写页面
index.jsp
<table border = "1"> <tr><td width=100>id编号</td><td width=100>姓名</td><td width=100>年龄</td><td width=200>删除</td><td width=100>更新</td></tr> <s:iterator value="userlist"> <tr> <td><s:property value="id"/></td> <td><s:property value="name"/></td> <td><s:property value="age"/></td> <td><a href="deleteUser.action?id=<s:property value='id'/>">删除</a></td> <td><a href="getUser.action?id=<s:property value='id'/>">更新</a></td> </tr> </s:iterator> </table> <a href="add.jsp">添加数据</a>
add.jsp
<script type="text/javascript"> function check() { if (myForm.name.value==""){ alert("姓名不能为空!");myForm.name.focus();return; } if (myForm.age.value==""){ alert("年龄不能为空!");myForm.age.focus();return; } myForm.submit(); } </script> <form action="saveUser" id="myForm"> <table border = "1"> <tr><td width=100>姓名:</td><td width=400><input name="name" id="name" type="text" style="width:300px"/></td></tr> <tr><td width=100>年龄:</td><td width=400><input name="age" id="age" type="text" style="width:300px"/></td></tr> <tr><td colspan="2"><input type="button" onclick="check();" value="保存" class="button"/></td></tr> </table> </form>
update.jsp
<script type="text/javascript"> function check() { if (myForm.name.value==""){ alert("姓名不能为空!");myForm.name.focus();return; } if (myForm.age.value==""){ alert("年龄不能为空!");myForm.age.focus();return; } myForm.submit(); } </script> <form action="updateUser" id="myForm"> <s:hidden name="id" value="%{tuser.id}"></s:hidden> <table border = "1"> <tr><td width=100>姓名:</td><td width=400><input name="name" id="name" value="<s:property value='tuser.name'/>" type="text" style="width:300px"/></td></tr> <tr><td width=100>年龄:</td><td width=400><input name="age" id="age" value="<s:property value='tuser.age'/>" type="text" style="width:300px"/></td></tr> <tr><td colspan="2"><input type="button" onclick="check();" value="保存" class="button"/></td></tr> </table> </form>
success.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% out.println("<script language='javascript'>alert('操作成功');window.location.href='getUsers.action';</script>"); %>
九、部署到tomcat后输入http://localhost:8080/ssh2/getUsers.action测试下效果
由于是练下手,所以很多东西都不完善,spring事务处理,hibernate缓存、分页等也没弄,前台可以集成extjs,大家有空的话可以下载下来练下手,这些等以后有时间再加上去玩玩。
相关文章推荐
- Android 通知栏Notification的整合 全面学习 (一个DEMO让你完全了解它)
- Android 通知栏Notification的整合 全面学习 (一个DEMO让你完全了解它)
- Android 通知栏Notification的整合 全面学习 (一个DEMO让你完全了解它)
- Android 通知栏Notification的整合 全面学习 (一个DEMO让你完全了解它)
- Android 通知栏Notification的整合 全面学习 (一个DEMO让你完全了解它) 分类: Android 2015-07-04 21:40 17人阅读 评论(0) 收藏
- Android 通知栏Notification的整合 全面学习 (一个DEMO让你完全了解它)
- Android 通知栏Notification的整合 全面学习 (一个DEMO让你完全了解它)
- Android 通知栏Notification的整合 全面学习 (一个DEMO让你完全了解它)
- Android 通知栏Notification的整合 全面学习 (一个DEMO让你完全了解它)
- Android 通知栏Notification的整合 全面学习 (一个DEMO让你完全了解它)
- Android 通知栏Notification的整合 全面学习 (一个DEMO让你完全了解它)
- Android 通知栏Notification的整合 全面学习 (一个DEMO让你完全了解它)
- Android 通知栏Notification的整合 全面学习 (一个DEMO让你完全了解它)
- Android 通知栏Notification的整合 全面学习 (一个DEMO让你完全了解它)
- Android 通知栏Notification的整合 全面学习 (一个DEMO让你完全了解它)
- Android 通知栏Notification的整合 全面学习 (一个DEMO让你完全了解它)
- Android 通知栏Notification的整合 全面学习 (一个DEMO让你完全了解它)
- Android 通知栏Notification的整合 全面学习 (一个DEMO让你完全了解它)
- Android 通知栏Notification的整合 全面学习 (一个DEMO让你完全了解它)
- Android 通知栏Notification的整合 全面学习 (一个DEMO让你完全了解它)