1、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.
2、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和
3、struts.propertiesStruts.xml内容如下:/error.jsp/success.jsp/login.jsp/success.jsp/regist.jspStruts.properties内容如下:struts.devMode=falsestruts.enable.DynamicMethodInvocation=truestruts.i18n.reload=truestruts.ui.theme=simplestruts.locale=zh_CNstruts.i18n.encoding=UTF-8struts.objectFactory=springstruts.objec
4、tFactory.spring.autoWire=namestruts.serve.static.browserCache=falsestruts.url.includeParams=none2)建立User.java和User.hbm.xml、jdbc.properties:User.java内容如下:/*/*authorflustar*version1.0*Creationdate:Dec23,20071:55:28PM*/packagecom.firstssh.model;importjava.io.Serializable;publicclassUserimplementsSerial
5、izableprivateintid;privateStringusername;privateStringpassword;privateStringemail;publicintgetId()returnid;publicvoidsetId(intid)this.id=id;publicStringgetUsername()returnusername;publicvoidsetUsername(Stringusername)this.username=username;publicStringgetPassword()returnpassword;publicvoidsetPasswor
6、d(Stringpassword)this.password=password;publicStringgetEmail()returnemail;publicvoidsetEmail(Stringemail)this.email=email;User.hbm.xml内容:!DOCTYPEhibernate-mappingPUBLIC-/Hibernate/HibernateMappingDTD3.0/ENjdbc.properties内容如下:datasource.type=mysqldatasource.driverClassName=com.mysql.jdbc.Driverdataso
7、urce.url=jdbc:mysql:/localhost:3306/test?useUnicode=true&characterEncoding=UTF-8datasource.username=rootdatasource.password=123456datasource.maxActive=10datasource.maxIdle=2datasource.maxWait=120000datasource.whenExhaustedAction=1datasource.validationQuery=select1fromdualdatasource.testOnBorrow=true
8、datasource.testOnReturn=falsec3p0.acquireIncrement=3c3p0.initialPoolSize=3c3p0.idleConnectionTestPeriod=900c3p0.minPoolSize=2c3p0.maxPoolSize=50c3p0.maxStatements=100c3p0.numHelperThreads=10c3p0.maxIdleTime=600hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect#hibernate.dialect=org.hibernate
9、.dialect.MySQLMyISAMDialecthibernate.jdbc.batch_size=25hibernate.jdbc.fetch_size=50hibernate.show_sql=truehibernate.connection.release_mode=after_transaction3)Spirng部分:为了清晰把Spring的配置文件拆分成以下几部分applicationContext-dao.xml、 appliationContext-service.xml、applicationContext-hibernate.xml、action- servlet.x
10、ml。applicationContext-hibernate.xml内容:!-WEB-INF/mail.properties-WEB-INF/jdbc.properties!-WEB-INF/oscache.properties-!-$datasource.driverClassName$datasource.url$datasource.username$datasource.password$c3p0.acquireIncrement$c3p0.initialPoolSize$c3p0.minPoolSize$c3p0.maxPoolSize$c3p0.maxIdleTime$c3p0.
11、idleConnectionTestPeriod$c3p0.maxStatements$c3p0.numHelperThreadscom/firstssh/model/User.hbm.xml$hibernate.dialect$hibernate.show_sql$hibernate.jdbc.fetch_size$hibernate.jdbc.batch_sizePROPAGATION_REQUIREDPROPAGATION_REQUIREDPROPAGATION_REQUIREDPROPAGATION_REQUIREDPROPAGATION_REQUIREDPROPAGATION_REQ
12、UIREDPROPAGATION_REQUIREDPROPAGATION_REQUIRED,readOnlyPROPAGATION_REQUIRED,readOnlyPROPAGATION_REQUIRED,readOnlyPROPAGATION_REQUIREDPROPAGATION_REQUIRED,readOnlyuserServicetransactionInterceptorapplicationContext-dao.xml内容:applicationContext-service.xml内容:action-servlet.xml内容:以上几个xml文件的内容暂且不要理会,继续往下
13、看,你就自动明白的,不用我解释。4)日志部分:log4j.properties 、commons-logging.propertieslog4j.properties内容:#ForJBoss:AvoidtosetupLog4Joutside$JBOSS_HOME/server/default/deploy/log4j.xml!#Forallotherservers:CommentouttheLog4Jlistenerinweb.xmltoactivateLog4J.log4j.rootLogger=INFO,stdout,logfilelog4j.appender.stdout=org.apa
14、che.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%d%p%c-%m%nlog4j.appender.logfile=org.apache.log4j.RollingFileAppenderlog4j.appender.logfile.File=$firstssh.root/WEB-INF/logs/firstssh.loglog4j.appender.logfile.MaxFileS
15、ize=512KB#Keepthreebackupfiles.log4j.appender.logfile.MaxBackupIndex=3#Patterntooutput:dateprioritycategory-messagelog4j.appender.logfile.layout=org.apache.log4j.PatternLayoutlog4j.appender.logfile.layout.ConversionPattern=%d%p%c-%m%n#OpenSymphonyStuff.opensymphony=INFOlog4j.logger.org.apache.struts
16、2=INFO#SpringStufflog4j.logger.org.springframework=INFO#HibernateStufflog4j.logger.org.hiberante=INFOcommons-logging.properties内容:mons.logging.Log=mons.logging.impl.Log4JLogger5)web.xmlfirstsshthisisasimpleexamplewebAppRootKeyfirstssh.rootcontextConfigLocation/WEB-INF/applicationContext-*.xml,/WEB-I
17、NF/action-servlet.xmllog4jConfigLocation/WEB-INF/log4j.propertiesorg.springframework.web.util.Log4jConfigListenerorg.springframework.web.context.ContextLoaderListener!-定义整合SiteMesh必须的ActionContextCleanUpFilterstruts-cleanuporg.apache.struts2.dispatcher.ActionContextCleanUp-struts2org.apache.struts2.dispatcher.FilterDispatcher!-struts-cleanup/*-struts2/*imgcom.firstssh.servlet.AuthImgimg/authImgfi
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100