juno搭建Struts2+Hibernate4+Spring3项目

3 篇文章 0 订阅
3 篇文章 0 订阅

2010年项目前端转为Flex后,已经2年没搞过SSH框架开发了,闲来没事,觉得还是熟悉熟悉下才行,所今天就抽了点时间搭建了改项目。
各框架版本号:
Struts:struts-2.3.4
Hibernate:hibernate-release-4.1.0.Final
Spring:spring-framework-3.1.1.RELEASE
平台:eclipse_juno(4.2)
结构如下:


web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>SSH</display-name>
  
  <context-param>
  	<param-name>log4jConfigLocation</param-name>
  	<param-value>/WEB-INF/log4j.properties</param-value>
  </context-param>
  
  <context-param>
  	<param-name>contextConfigLocation</param-name>
  	<param-value>
  		/WEB-INF/applicatonContext.xml 
  	</param-value>
  </context-param>
  
  <listener>
  	<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
  </listener>
  
  <listener>
  	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  
  <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>
  
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
		
	xsi:schemaLocation="http://www.springframework.org/schema/beans   
        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd  
        http://www.springframework.org/schema/context   
        http://www.springframework.org/schema/context/spring-context-3.1.xsd  
       http://www.springframework.org/schema/tx   
       http://www.springframework.org/schema/tx/spring-tx-3.1.xsd  
       http://www.springframework.org/schema/aop   
       http://www.springframework.org/schema/aop/spring-aop-3.1.xsd 
      ">     	
      
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
		<property name="driverClass" value="com.mysql.jdbc.Driver"/>
		<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test"/>
		<property name="user" value="root"/>
		<property name="password" value="mysql"/>
		<property name="maxPoolSize" value="40"/>
		<property name="minPoolSize" value="1"/>
		<property name="initialPoolSize" value="1"/>
		<property name="maxIdleTime" value="20"/>
	</bean>
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
		<property name="dataSource" ref="dataSource">
	
		</property>
		
		<property name="mappingResources">
			<list>
				<value>Entity/User.hbm.xml</value>
			</list>
		</property>
		
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
				<prop key="hibernate.show_sql">true</prop>
			</props>
		</property>
		<property name="packagesToScan" value="Entity" />
	</bean>




	<bean id="transactionManager"
		class="org.springframework.orm.hibernate4.HibernateTransactionManager">
		<property name="sessionFactory">
			<ref local="sessionFactory" />
		</property>
	</bean>
	
	<tx:advice id="txAdvice" transaction-manager="transactionManager">
		<tx:attributes>
			<tx:method name="update*" propagation="REQUIRED" read-only="false" />
			<tx:method name="delete*" propagation="REQUIRED" read-only="false" />
			<tx:method name="save*" propagation="REQUIRED" read-only="false" />
			<tx:method name="*" propagation="SUPPORTS" read-only="true" />
		</tx:attributes>
	</tx:advice>

	<aop:config>
		<aop:pointcut id="ServiceMethods" expression="execution(* Service..*.*(..))"/>
		<aop:advisor advice-ref="txAdvice" pointcut-ref="ServiceMethods" />
	</aop:config>
    
    <bean id="userDao" class="Dao.UserDaoImpl">
    	<property name="sessionFactory" ref="sessionFactory"/>
    </bean>
    
    <bean id="userService" class="Service.UserServiceImpl">
    	<property name="userDao" ref="userDao"/>
    </bean>
    
    <bean id="userAction" class="Action.UserAction" scope="prototype">
    	<property name="userService" ref="userService"/>
    </bean>
	

</beans>

struts.xml


<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
<!-- 
	<constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="false" />
 -->	
	
    <package name="default" namespace="/" extends="struts-default">
    	 <global-results>
            <result name="error">/error.jsp</result>
        </global-results>

        <global-exception-mappings>
            <exception-mapping exception="java.lang.Exception" result="error"/>
        </global-exception-mappings>   
        
        <action name="login" class="userAction">
			<result name="input">/index.jsp</result>
			<result name="error">/index.jsp</result>
			<result name="success">/welcome.jsp</result>
		</action>        
    </package>
    <!-- 
    <package name="action" namespace="/Action" extends="struts-default">
		   
    </package>
     -->
</struts>

UserAction.java


 

package Action;

import Service.UserService;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	private UserService userService;
	
	

	public UserService getUserService() {
		return userService;
	}



	public void setUserService(UserService userService) {
		this.userService = userService;
	}

	private String userName;
	private String userPass;
	private String userSex;
   
	


	public String getUserName() {
		return userName;
	}



	public void setUserName(String userName) {
		this.userName = userName;
	}



	public String getUserPass() {
		return userPass;
	}



	public void setUserPass(String userPass) {
		this.userPass = userPass;
	}



	public String getUserSex() {
		return userSex;
	}



	public void setUserSex(String userSex) {
		this.userSex = userSex;
	}



	@Override
	public String execute() throws Exception {
		if(!getUserName().equals("") && !getUserPass().equals("") && !getUserSex().equals("")){
			ActionContext.getContext().getSession().put("user", getUserName());
			userService.saveUser(getUserName(), getUserPass(), getUserSex(), 20);
			return SUCCESS;
		}else{
			return ERROR;
		}
	}
	
	

	
}

UserService.java


package Service;

public interface UserService {

	void saveUser(String userName, String userPass, String userSex, int userAge);

}

UserServiceImpl.java

package Service;

import Dao.UserDao;
import Entity.User;

public class UserServiceImpl implements UserService {
	private UserDao userDao;

	public UserDao getUserDao() {
		return userDao;
	}

	public void setUserDao(UserDao userDao) {
		this.userDao = userDao;
	}

	@Override
	public void saveUser(String userName,String userPass,String userSex,int userAge){
		 User u = new User();
         u.setUserName(userName);
         u.setUserPass(userPass);
         u.setUserSex(userSex);
         u.setUserAge(userAge);       
         userDao.saveUser(u);
         u.setUserName(userName+"s");
         u.setUserSex(null);
         userDao.saveUser(u);
	}
	
}

UserDao.java

package Dao;

import Entity.User;

public interface UserDao {

	void saveUser(User u);

}

 

UserDaoImpl.java

package Dao;

import org.hibernate.Session;
import org.hibernate.SessionFactory;

import Entity.User;

public class UserDaoImpl implements UserDao {
	
	private SessionFactory sessionFactory;
	
	

	public SessionFactory getSessionFactory() {
		return sessionFactory;
	}



	public void setSessionFactory(SessionFactory sessionFactory) {
		this.sessionFactory = sessionFactory;
	}

	public Session getSession() {
	        return sessionFactory.getCurrentSession();
	}
	
	@Override
	public void saveUser(User u){ 
		getSession().save(u);
	}

}

User.java


package Entity;

import java.io.Serializable;

public class User implements Serializable {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	private int id;
	private String userName;
	private String userPass;
	private String userSex;
	private int userAge;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getUserPass() {
		return userPass;
	}
	public void setUserPass(String userPass) {
		this.userPass = userPass;
	}
	public String getUserSex() {
		return userSex;
	}
	public void setUserSex(String userSex) {
		this.userSex = userSex;
	}
	public int getUserAge() {
		return userAge;
	}
	public void setUserAge(int userAge) {
		this.userAge = userAge;
	}
	public User(int id, String userName, String userPass, String userSex,
			int userAge) {
		super();
		this.id = id;
		this.userName = userName;
		this.userPass = userPass;
		this.userSex = userSex;
		this.userAge = userAge;
	}
	public User() {
		super();
	}

}


 User.hbm.xml

<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE hibernate-mapping
	PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	"http://www.jboss.org/dtd/hibernate/hibernate-mapping-3.0.dtd">
<!-- Hibernate映射文件的根元素 -->
<hibernate-mapping package="Entity">
	<class	name="User"	table="User">
		<!-- 映射标识属性 -->
		<id	name="id" type="integer" column="id">
			<!-- 指定使用identity主键生成策略 -->
			<generator class="identity"/>
		</id>
		<!-- 映射普通属性 -->
		<property name="userName" />
		<property name="userPass" />
		<property name="userSex" />
		<property name="userAge" />		
	</class>
</hibernate-mapping>

MySql

/*
Navicat MySQL Data Transfer

Source Server         : MySql
Source Server Version : 50522
Source Host           : localhost:3306
Source Database       : test

Target Server Type    : MYSQL
Target Server Version : 50522
File Encoding         : 65001

Date: 2012-07-30 21:24:07
*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for `user`
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `userName` varchar(50) NOT NULL DEFAULT '',
  `userPass` varchar(50) DEFAULT NULL,
  `userAge` int(11) DEFAULT NULL,
  `userSex` bit(1) DEFAULT NULL,
  `userAddress` varchar(50) DEFAULT NULL,
  `userPhone` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`userName`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('Luck', 'Luck', '23', ' ', 'chengdu', '13683903943');
INSERT INTO `user` VALUES ('Neal', 'Neal', '32', '', '32', '15080348032');
INSERT INTO `user` VALUES ('Tom', 'Tom', '27', '', 'chengdu', '13509873421');
运行测试通过。

如需要源码的请下载。


 


 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值