您的位置:首页 > 其它

ssh2整合的一个小Demo

2014-01-15 02:13 381 查看
随意写的一个ssh2整合的一个小Demo,代码较简单,当做是打发下时间。

项目源码: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,大家有空的话可以下载下来练下手,这些等以后有时间再加上去玩玩。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐