收藏 分销(赏)

Struts2spring2hibernate3整合方案1.doc

上传人:快乐****生活 文档编号:4136365 上传时间:2024-07-31 格式:DOC 页数:33 大小:757.50KB 下载积分:12 金币
下载 相关 举报
Struts2spring2hibernate3整合方案1.doc_第1页
第1页 / 共33页
Struts2spring2hibernate3整合方案1.doc_第2页
第2页 / 共33页


点击查看更多>>
资源描述
Struts2+spring2+hibernate3整合方案 最近闲来无事可做,于是开始学习struts2。Struts2和struts1、webwork2有什么区别我也不说了,网上有很多这方面的资料。以前在项目中从未使用过struts,一直使用spring+hibernate,现在既然学习了Struts,也不能浪费,于是乎开始琢磨着怎么整合这3个框架。整合原理以spring为容器,管理hibernate的DAO和Struts2的Action。 一、 准备工作 Struts2.06+spring2.5+hibernate3.2+jdk6.0+myeclipse6.0+tomcat5.5+mysql5.0 以上是整合的原料。下面以一个注册登陆的例子来开始我们的整合过程。 这个例子很简单,下面是它的sql脚本内容: CREATE TABLE `user` (   `userid` int(11) NOT NULL AUTO_INCREMENT,   `username` varchar(20) NOT NULL,   `password` varchar(16) NOT NULL,   `email` varchar(30) NOT NULL,   PRIMARY KEY (`userid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf-8; 二、 开始行动 包结构可以参考下图 1) Struts部分:建立struts.xml和struts.properties 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="user_curd" extends="struts-default" >         <global-results>             <!-- 下面定义的结果对所有的Action都有效 -->             <result name="exception">/error.jsp</result>         </global-results>         <global-exception-mappings>             <!-- 指Action抛出Exception异常时,转入名为exception的结果。 -->             <exception-mapping exception="java.lang.Exception" result="exception"/>         </global-exception-mappings>         <action name="Login" class="LoginAction">             <result name="success">/success.jsp</result>                 <result name="input">/login.jsp</result>         </action>         <action name="Regist" class="RegistAction">             <result name="success">/success.jsp</result>                 <result name="input">/regist.jsp</result>         </action>     </package>               </struts> Struts.properties内容如下:   struts.devMode=false struts.enable.DynamicMethodInvocation=true struts.i18n.reload=true struts.ui.theme=simple struts.locale=zh_CN struts.i18n.encoding=UTF-8 struts.objectFactory=spring struts.objectFactory.spring.autoWire=name struts.serve.static.browserCache=false struts.url.includeParams=none 2) 建立User.java和User.hbm.xml、jdbc.properties: User.java内容如下:   /** *//**   *   * @author <a href="mailto:flustar2008@">flustar</a>  * @version 1.0   * Creation date: Dec 23, 2007 1:55:28 PM  */ package com.firstssh.model; import java.io.Serializable; public class User implements Serializable {     private int id;     private String username;     private String password;     private String email;     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 getPassword() {         return password;     }     public void setPassword(String password) {         this.password = password;     }     public String getEmail() {         return email;     }     public void setEmail(String email) {         this.email = email;     } } User.hbm.xml内容:   <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC      "-//Hibernate/Hibernate Mapping DTD 3.0//EN"     " <hibernate-mapping      package="com.firstssh.model">     <class name="User" table="User">         <id name="id" column="userid">             <generator class="identity" />         </id>             <property name="username"                   column="username"                   not-null="true"                   length="20"         />         <property name="password"                   column="password"                   not-null="true"                   length="16" />         <property name="email"                   column="email"                   not-null="true"                   length="30"/>     </class>      </hibernate-mapping> jdbc.properties内容如下:   datasource.type=mysql datasource.driverClassName=com.mysql.jdbc.Driver datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8 datasource.username=root datasource.password=123456 datasource.maxActive=10 datasource.maxIdle=2 datasource.maxWait=120000 datasource.whenExhaustedAction=1 datasource.validationQuery=select 1 from dual datasource.testOnBorrow=true datasource.testOnReturn=false c3p0.acquireIncrement=3 c3p0.initialPoolSize=3 c3p0.idleConnectionTestPeriod=900 c3p0.minPoolSize=2 c3p0.maxPoolSize=50 c3p0.maxStatements=100 c3p0.numHelperThreads=10 c3p0.maxIdleTime=600 hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect #hibernate.dialect=org.hibernate.dialect.MySQLMyISAMDialect hibernate.jdbc.batch_size=25 hibernate.jdbc.fetch_size=50 hibernate.show_sql=true hibernate.connection.release_mode=after_transaction 3) Spirng部分:为了清晰把Spring的配置文件拆分成以下几部分applicationContext-dao.xml、 appliationContext-service.xml、applicationContext-hibernate.xml、action- servlet.xml。 applicationContext-hibernate.xml内容:   <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"> <beans> <bean id="propertyConfigurer"     class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">     <property name="locations">         <list>             <!--  <value>WEB-INF/mail.properties</value>-->             <value>WEB-INF/jdbc.properties</value>             <!--  <value>WEB-INF/oscache.properties</value>-->         </list>     </property> </bean> <!-- MailSender used by EmailAdvice --> <!--     <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">     <property name="host" value="${mail.host}"/>     </bean> --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"     destroy-method="close" dependency-check="none">     <property name="driverClass">         <value>${datasource.driverClassName}</value>     </property>     <property name="jdbcUrl">         <value>${datasource.url}</value>     </property>     <property name="user">         <value>${datasource.username}</value>     </property>     <property name="password">         <value>${datasource.password}</value>     </property>     <property name="acquireIncrement">         <value>${c3p0.acquireIncrement}</value>     </property>     <property name="initialPoolSize">         <value>${c3p0.initialPoolSize}</value>     </property>     <property name="minPoolSize">         <value>${c3p0.minPoolSize}</value>     </property>     <property name="maxPoolSize">         <value>${c3p0.maxPoolSize}</value>     </property>     <property name="maxIdleTime">         <value>${c3p0.maxIdleTime}</value>     </property>     <property name="idleConnectionTestPeriod">         <value>${c3p0.idleConnectionTestPeriod}</value>     </property>     <property name="maxStatements">         <value>${c3p0.maxStatements}</value>     </property>     <property name="numHelperThreads">         <value>${c3p0.numHelperThreads}</value>     </property> </bean> <bean id="sessionFactory"     class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">     <property name="dataSource">         <ref local="dataSource" />     </property>     <property name="mappingResources">         <list>             <value>com/firstssh/model/User.hbm.xml</value>         </list>     </property>     <property name="hibernateProperties">         <props>             <prop key="hibernate.dialect">${hibernate.dialect}</prop>             <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>             <prop key="hibernate.jdbc.fetch_size">                 ${hibernate.jdbc.fetch_size}             </prop>             <prop key="hibernate.jdbc.batch_size">                 ${hibernate.jdbc.batch_size}             </prop>         </props>     </property> </bean> <!-- 配置事务管理器bean,使用HibernateTransactionManager事务管理器 --> <bean id="transactionManager"     class="org.springframework.orm.hibernate3.HibernateTransactionManager">         <!-- 为事务管理器注入sessionFactory" -->         <property name="sessionFactory" ref="sessionFactory"/> </bean> <!-- 配置事务拦截器Bean --> <bean id="transactionInterceptor"     class="org.springframework.transaction.interceptor.TransactionInterceptor">     <!-- 为事务拦截器bean注入一个事物管理器 -->     <property name="transactionManager" ref="transactionManager"></property>     <property name="transactionAttributes">     <!-- 定义事务传播属性 -->         <props>                 <prop key="insert*">PROPAGATION_REQUIRED</prop>                 <prop key="update*">PROPAGATION_REQUIRED</prop>                 <prop key="save*">PROPAGATION_REQUIRED</prop>                 <prop key="add*">PROPAGATION_REQUIRED</prop>                 <prop key="update*">PROPAGATION_REQUIRED</prop>                 <prop key="remove*">PROPAGATION_REQUIRED</prop>                 <prop key="delete*">PROPAGATION_REQUIRED</prop>                 <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>                 <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>                 <prop key="load*">PROPAGATION_REQUIRED,readOnly</prop>                 <prop key="change*">PROPAGATION_REQUIRED</prop>                 <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>         </props>     </property> </bean> <!-- 定义BeanNameAutoProxyCreator --> <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">     <!-- 指定满足哪些bean自动生成业务代理 -->     <property name="beanNames">     <!-- 需要自动创建事务代理的bean -->         <list>             <value>userService</value>         </list>         <!-- 其它需要自动创建事务代理的bean -->     </property>     <property name="interceptorNames">         <list>             <value>transactionInterceptor</value>             <!-- 可增加其它的interceptor -->         </list>     </property> </bean> </beans> applicationContext-dao.xml内容:   <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"> <beans> <!-- 根DAO --> <bean id="genericDao" class="mon.dao.GenericDao">     <property name="sessionFactory">         <ref bean="sessionFactory" />     </property> </bean> <bean id="userDao" class="com.firstssh.dao.impl.UserDao" parent="genericDao" /> </beans> applicationContext-service.xml内容:   <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"> <beans> <bean id="userService" class="com.firstssh.service.impl.UserService">     <property name="userDao">         <ref bean="userDao"/>     </property> </bean> <bean id="validateName" class="mon.Bean.ValidateName">     <property name="userService">         <ref local="userService"/>     </property> </bean> </beans> action-servlet.xml内容:   <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"> <beans>     <bean id="LoginAction" class="com.firstssh.action.LoginAction"         scope="prototype">         <property name="userService" ref="userService" />     </bean>     <bean id="RegistAction" class="com.firstssh.action.RegistAction"         scope="prototype">         <property name="userService" ref="userService" />     </bean> </beans> 以上几个xml文件的内容暂且不要理会,继续往下看,你就自动明白的,不用我解释。 4)日志部分:log4j.properties 、commons-logging.properties log4j.properties内容:   # For JBoss: Avoid to setup Log4J outside $JBOSS_HOME/server/default/deploy/log4j.xml! # For all other servers: Comment out the Log4J listener in web.xml to activate Log4J. log4j.rootLogger=INFO, stdout, logfile log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n log4j.appender.logfile=org.apache.log4j.RollingFileAppender log4j.appender.logfile.File=${firstssh.root}/WEB-INF/logs/firstssh.log log4j.appender.logfile.MaxFileSize=512KB # Keep three backup files. log4j.appender.logfile.MaxBackupIndex=3 # Pattern to output: date priority [category] - message log4j.appender.logfile.layout=org.apache.log4j.PatternLayout log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n # OpenSymphony Stuff .opensymphony=INFO log4j.logger.org.apache.struts2=INFO # Spring Stuff log4j.logger.org.springframework=INFO # Hibernate Stuff log4j.logger.org.hiberante=INFO commons-logging.properties 内容: mons.logging.Log=mons.logging.impl.Log4JLogger 5)web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xsi:schemaLocation="    version="2.4">  <display-name>firstssh</display-name>  <description>this is a simple example</description>  <context-param>   <param-name>webAppRootKey</param-name>   <param-value>firstssh.root</param-value>  </context-param>    <context-param>   <param-name>contextConfigLocation</param-name>   <param-value>/WEB-INF/applicationContext-*.xml,/WEB-INF/action-servlet.xml</param-value>  </context-param>  <context-param>   <param-name>log4jConfigLocation</param-name>   <param-value>/WEB-INF/log4j.properties</param-value>  </context-param>  <listener>   <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>  </listener>  <!-- 用于初始化Spring容器的Listener -->     <listener>         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>     </listener>      <!-- 定义整合SiteMesh必须的ActionContextCleanUp Filter   <filter>   <filter-name>struts-cleanup</filter-name>   <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>  </filter>-->  <!-- 定义Struts2的FilterDispathcer的Filter -->     <filter>         <filter-name>struts2</filter-name>         <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>     </filter>    <!--   <filter-mapping>         <filter-name>struts-cleanup</filter-name>         <url-pattern>/*</url-pattern>     </filter-mapping>-->  <!-- FilterDispatcher用来初始化struts2并且处理所有的WEB请求。 -->     <filter-mapping>         <filter-name>struts2</filter-name>         <url-pattern>/*</url-pattern>     </filter-mapping>         <!-- 这是一个产生验证码的servlet -->     <servlet>         <servlet-name>img</servlet-name>         <servlet-class>com.firstssh.servlet.AuthImg</servlet-class>     </servlet>        <servlet-mapping>         <servlet-name>img</servlet-name>      <url-pattern>/authImg</url-pattern>     </servlet-mapping>     <filter>            <fi
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服