Struts2+Spring+Hibernate+Maven框架整合

来源:互联网 发布:魔盒cms微信营销平台 编辑:程序博客网 时间:2024/05/20 17:07

Struts2+Spring+Hibernate+Maven框架整合

点击这里下载框架整合后的代码:点我下载,不要你的积分哦!!!
本文主要讲述如何通过Maven整合Struts2、Spring、Hibernate。在整合的过程中偏重于使用注解和自动装配的方式。Struts2采用的是配置文件xml的方式进行配置,Spring和Hibernate采用注解的方式进行配置。下面开始:
1、新建一个maven空程序。archetype-maven-webapp。命令:mvn archetype:generate -DarchetypeCatalog=internal
2、利用eclipse打开新建的maven程序。在pom.xml中加入需要依赖的包。
<dependencies>    <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-entitymanager</artifactId><version>4.3.5.Final</version></dependency><!-- mysql connector --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.38</version></dependency><!-- hibernate-c3p0 --><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-c3p0</artifactId><version>4.3.5.Final</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.0.5.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>4.0.5.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>4.0.5.RELEASE</version></dependency><!-- https://mvnrepository.com/artifact/org.springframework/spring-web --><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>4.0.5.RELEASE</version></dependency><!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>4.0.5.RELEASE</version></dependency><!-- https://mvnrepository.com/artifact/org.springframework/spring-orm --><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>4.0.5.RELEASE</version></dependency><!-- https://mvnrepository.com/artifact/org.springframework/spring-context-support --><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId><version>4.0.5.RELEASE</version></dependency><!-- https://mvnrepository.com/artifact/org.springframework/spring-aspects --><dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId><version>4.0.5.RELEASE</version></dependency><!-- https://mvnrepository.com/artifact/org.springframework/spring-jms --><dependency><groupId>org.springframework</groupId><artifactId>spring-jms</artifactId><version>4.0.5.RELEASE</version></dependency><!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc-portlet --><!-- <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc-portlet</artifactId> <version>4.0.5.RELEASE</version> </dependency> --><!-- https://mvnrepository.com/artifact/org.springframework/spring-messaging --><dependency><groupId>org.springframework</groupId><artifactId>spring-messaging</artifactId><version>4.0.5.RELEASE</version></dependency><!-- https://mvnrepository.com/artifact/org.springframework/spring-instrument --><dependency><groupId>org.springframework</groupId><artifactId>spring-instrument</artifactId><version>4.0.5.RELEASE</version></dependency><!-- https://mvnrepository.com/artifact/org.springframework/spring-framework-bom --><dependency><groupId>org.springframework</groupId><artifactId>spring-framework-bom</artifactId><version>4.0.5.RELEASE</version><type>pom</type></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>4.0.5.RELEASE</version></dependency><!-- struts2核心依赖 --><dependency><groupId>org.apache.struts</groupId><artifactId>struts2-core</artifactId><version>2.3.4</version><type>jar</type><scope>compile</scope></dependency><!-- struts2零配置依赖 --><dependency><groupId>org.apache.struts</groupId><artifactId>struts2-convention-plugin</artifactId><version>2.3.4</version><type>jar</type><scope>compile</scope></dependency><!-- struts2的json依赖 --><dependency><groupId>org.apache.struts</groupId><artifactId>struts2-json-plugin</artifactId><version>2.3.4</version><type>jar</type><scope>compile</scope></dependency><!-- 查看部署的aciton信息 --><dependency><groupId>org.apache.struts</groupId><artifactId>struts2-config-browser-plugin</artifactId><version>2.3.20</version></dependency><dependency><groupId>org.apache.struts</groupId><artifactId>struts2-spring-plugin</artifactId><version>2.3.4</version></dependency>  </dependencies>

2、看一下程序中文件夹的布局



3、主要配置文件中的内容
web.xml
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" ><web-app><display-name>Archetype Created Web Application</display-name><context-param><param-name>contextConfigLocation</param-name><!-- <param-value>/WEB-INF/applicationContext-*.xml,classpath*:applicationContext-*.xml</param-value> --><param-value>/WEB-INF/classes/beans.xml</param-value></context-param><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><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener></web-app>

beans.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.xsd          http://www.springframework.org/schema/context          http://www.springframework.org/schema/context/spring-context.xsd          http://www.springframework.org/schema/tx          http://www.springframework.org/schema/tx/spring-tx.xsd">        <context:component-scan base-package="com.xueyoucto.xueyou" />        <bean id="myDataSource" name="dataSource"          class="com.mchange.v2.c3p0.ComboPooledDataSource">          <!-- 指定连接数据库的驱动 -->          <property name="driverClass" value="com.mysql.jdbc.Driver" />          <!-- 指定连接数据库的URL -->          <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/ssh" />          <!-- 指定连接数据库的用户名 -->          <property name="user" value="root" />          <!-- 指定连接数据库的密码 -->          <property name="password" value="123456" />          <!-- 指定连接池中保留的最大连接数. Default:15 -->          <property name="maxPoolSize" value="100" />          <!-- 指定连接池中保留的最小连接数 -->          <property name="minPoolSize" value="10" />          <!-- 指定连接池的初始化连接数 取值应在minPoolSize 与 maxPoolSize 之间.Default:3 -->          <property name="initialPoolSize" value="20" />          <!-- 最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。 Default:0 -->          <property name="maxIdleTime" value="600" />          <!-- 当连接池中的连接耗尽的时候c3p0一次同时获取的连接数. Default:3 -->          <property name="acquireIncrement" value="5" />          <!-- JDBC的标准,用以控制数据源内加载的PreparedStatements数量。 但由于预缓存的statements属于单个connection而不是整个连接池所以设置这个参数需要考虑到多方面的因数.如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default:0 -->          <property name="maxStatements" value="5" />          <!-- 每60秒检查所有连接池中的空闲连接.Default:0 -->          <property name="idleConnectionTestPeriod" value="60" />      </bean>        <bean id="sessionFactory"          class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">          <property name="dataSource" ref="myDataSource" />          <property name="packagesToScan">              <list>                  <value>com.xueyoucto.xueyou.model</value>                  <!-- 加载hibernate的jpa注解形式的实体类 -->              </list>          </property>          <property name="hibernateProperties">              <props>                  <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>                  <prop key="hibernate.show_sql">true</prop>                  <prop key="hibernate.format_sql">true</prop>                  <prop key="hbm2ddl.auto">update</prop>                </props>          </property>      </bean>            <tx:annotation-driven transaction-manager="transactionManager"/>      <bean id="transactionManager"          class="org.springframework.orm.hibernate4.HibernateTransactionManager">          <property name="sessionFactory" ref="sessionFactory" />      </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.objectFactory" value="spring" />    <constant name="struts.enable.DynamicMethodInvocation" value="false" />      <constant name="struts.devMode" value="true" />        <package name="xueyoupackage" namespace="/test" extends="struts-default">          <action name="*">              <result>/WEB-INF/content/{1}.jsp</result>          </action>             </package>     <package name="userandlog" namespace="/userandlog" extends="struts-default">          <action name="add" class="userandlogaction" method="add">              <result name="success">/WEB-INF/content/Success.jsp</result>              <result name="error">/WEB-INF/content/Error.jsp</result>          </action>             </package> </struts>  

4、各个类及接口的代码:
UserandLogAction.java
package com.xueyoucto.xueyou.action;import javax.annotation.Resource;import org.springframework.stereotype.Component;import com.opensymphony.xwork2.ActionSupport;import com.xueyoucto.xueyou.model.Log;import com.xueyoucto.xueyou.model.User;import com.xueyoucto.xueyou.service.UserService;@Component("userandlogaction")public class UserandLogAction extends ActionSupport {/** *  */private static final long serialVersionUID = 7824944119334301832L;private String name;private String msg;@Resource(name = "uesrserviceimpl")private UserService userservice;public UserService getUserservice() {return userservice;}public void setUserservice(UserService userservice) {this.userservice = userservice;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}public String add() {User u = new User();Log log = new Log();u.setName(name);log.setMsg(msg);userservice.addUserWithLog(u, log);return ActionSupport.SUCCESS;}}

LogDao.java
package com.xueyoucto.xueyou.dao;import com.xueyoucto.xueyou.model.Log;public interface LogDao {public void save(Log log);}

UserDao.java
package com.xueyoucto.xueyou.dao;import com.xueyoucto.xueyou.model.User;public interface UserDao {public void save(User u);}

LogDaoImpl.java
package com.xueyoucto.xueyou.daoImpl;import javax.annotation.Resource;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.springframework.stereotype.Component;import com.xueyoucto.xueyou.dao.LogDao;import com.xueyoucto.xueyou.model.Log;@Component("logdaoimpl")public class LogDaoImpl implements LogDao {@Resourceprivate SessionFactory sessionFactory;public SessionFactory getSessionFactory() {return sessionFactory;}public void setSessionFactory(SessionFactory sessionFactory) {this.sessionFactory = sessionFactory;}public void save(Log log) {// TODO Auto-generated method stubSession s = sessionFactory.getCurrentSession();s.save(log);}}

UserDaoImpl.java
package com.xueyoucto.xueyou.daoImpl;import javax.annotation.Resource;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.springframework.stereotype.Component;import com.xueyoucto.xueyou.dao.UserDao;import com.xueyoucto.xueyou.model.User;@Component("userdaoimpl")public class UserDaoImpl implements UserDao{@Resourceprivate SessionFactory sessionFactory;public SessionFactory getSessionFactory() {return sessionFactory;}public void setSessionFactory(SessionFactory sessionFactory) {this.sessionFactory = sessionFactory;}public void save(User u) {// TODO Auto-generated method stubSession s  = sessionFactory.getCurrentSession();s.save(u);}}

Log.java
package com.xueyoucto.xueyou.model;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.Table;@Entity@Table(name = "t_log")public class Log {@Id@GeneratedValueprivate int id;private String msg;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}}

User.java
package com.xueyoucto.xueyou.model;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.Table;@Entity@Table(name="user")public class User {@Id@GeneratedValueprivate int id;private String name;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}}

UserService.java
package com.xueyoucto.xueyou.service;import com.xueyoucto.xueyou.model.Log;import com.xueyoucto.xueyou.model.User;public interface UserService {public void addUserWithLog(User u,Log log);}

UserServiceImpl.java
package com.xueyoucto.xueyou.serviceImpl;import javax.annotation.Resource;import javax.transaction.Transactional;import org.springframework.stereotype.Component;import com.xueyoucto.xueyou.dao.LogDao;import com.xueyoucto.xueyou.dao.UserDao;import com.xueyoucto.xueyou.model.Log;import com.xueyoucto.xueyou.model.User;import com.xueyoucto.xueyou.service.UserService;@Component("uesrserviceimpl")public class UserServiceImpl implements UserService{@Resource(name="userdaoimpl")private UserDao userdao;@Resource(name="logdaoimpl")private LogDao logdao;@Transactionalpublic void addUserWithLog(User u, Log log) {// TODO Auto-generated method stubuserdao.save(u);logdao.save(log);}}

UserServiceTest.java
package com.xueyoucto.xueyou.Test;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.xueyoucto.xueyou.model.Log;import com.xueyoucto.xueyou.model.User;import com.xueyoucto.xueyou.service.UserService;public class UserServiceTest {@Testpublic void testAddUserWithLog() {ApplicationContext ctx = new ClassPathXmlApplicationContext("file:D:\\Workspaces\\ssh_2\\src\\main\\webapp\\WEB-INF\\classes\\beans.xml");UserService us = (UserService) ctx.getBean("uesrserviceimpl");User u = new User();u.setName("xxxx");Log log = new Log();log.setMsg("xxxx has added!");us.addUserWithLog(u, log);}}

5、jsp代码
add.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>add.jsp</title></head><body><form method="post" action="userandlog/add">姓名:<input type="text" name="name"/><br/>日志:<input type="text" name="msg"/><br/><input type="submit" value="提交"/></form></body></html>

Error.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><h1>error.jsp</h1></body></html>

Success.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><h1>success.jsp</h1></body></html>

first.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><h1>first.jsp</h1></body></html>

6、数据库表结构
user表:
-- ------------------------------ Table structure for user-- ----------------------------DROP TABLE IF EXISTS `user`;CREATE TABLE `user` (  `id` int(11) NOT NULL auto_increment,  `name` varchar(255) default NULL,  PRIMARY KEY  (`id`)) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;

t_log表:
-- ------------------------------ Table structure for t_log-- ----------------------------DROP TABLE IF EXISTS `t_log`;CREATE TABLE `t_log` (  `id` int(11) NOT NULL auto_increment,  `msg` varchar(255) default NULL,  PRIMARY KEY  (`id`)) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;

7、运行结果:



8、查看数据库中两个表的情况


1 0
原创粉丝点击