spring3.1.1与hibernate4.1.5与struts2 2.3.4集成
1. 使用myeclipse新建一个web工程。
2. 然后把spring3.1.1 , hibernate4.1.5 , struts2.3.4的jar包放到web工程的WEB-INF/lib目录下。
jar包如下:
spring3.1.1
org.springframework.aop-3.1.1.RELEASE.jar
org.springframework.asm-3.1.1.RELEASE.jar
org.springframework.aspects-3.1.1.RELEASE.jar
org.springframework.beans-3.1.1.RELEASE.jar
org.springframework.context-3.1.1.RELEASE.jar
org.springframework.context.support-3.1.1.RELEASE.jar
org.springframework.core-3.1.1.RELEASE.jar
org.springframework.expression-3.1.1.RELEASE.jar
org.springframework.instrument-3.1.1.RELEASE.jar
org.springframework.jdbc-3.1.1.RELEASE.jar
org.springframework.orm-3.1.1.RELEASE.jar
org.springframework.oxm-3.1.1.RELEASE.jar
org.springframework.test-3.1.1.RELEASE.jar
org.springframework.transaction-3.1.1.RELEASE.jar
org.springframework.web-3.1.1.RELEASE.jar
org.springframework.web.portlet-3.1.1.RELEASE.jar
org.springframework.web.servlet-3.1.1.RELEASE.jar
org.springframework.web.struts-3.1.1.RELEASE.jar
还需要第三方的信依懒包(需要自己手动下载),主要有下列jar包:
aopalliance.jar
aspectjweaver.jar
commons-dbcp-1.4.jar
commons-pool-1.6.jar
cglib-nodep-2.1_3.jar
commons-logging-1.1.1.jar
asm-3.3.1.jar
asm-commons-3.3.1.jar
asm-util-3.3.1.jar
hibernate4.1.5
antlr-2.7.7.jar dom4j-1.6.1.jar
hibernate-commons-annotations-4.0.1.Final.jar
hibernate-core-4.1.5.Final.jar
hibernate-jpa-2.0-api-1.0.1.
Final.jar javassist-3.15.0-GA.jar
jboss-logging-3.1.0.GA.jar
jboss-transaction-api_1.1_spec-1.0.0.Final.jar
struts2.3.4
xwork-core-2.3.4.jar
commons-fileupload-1.2.2.jar
freemarker-2.3.19.jar
ognl-3.0.5.jar
struts2-core-2.3.4.jar
commons-io-2.0.1.jar
commons-lang3-3.1.jar
struts2-spring-plugin-2.3.4.jar
3. 设置web.xml , beans.xml , struts.xml文件
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>
- <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>
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:/beans.xml</param-value>
- </context-param>
- </web-app>
beans.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:tx="http://www.springframework.org/schema/tx"
- xmlns:aop="http://www.springframework.org/schema/aop"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-3.0.xsd
- http://www.springframework.org/schema/tx
- http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
- http://www.springframework.org/schema/aop
- http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
- ">
- <context:annotation-config />
- <context:component-scan base-package="com.buy" />
- <bean id="userDaoImpl" class="com.buy.user.UserDAOImpl">
- <!-- <property name="dataSource" ref="dataSource"></property> -->
- </bean>
- <bean id="useService" class="com.buy.user.UserServiceImpl">
- <property name="userDAO" ref="userDaoImpl" />
- </bean>
- <bean id="userAction" class="com.buy.user.UserAction" scope="singleton" autowire="byName">
- <property name="userService" ref="useService"></property>
- </bean>
- <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
- destroy-method="close">
- <property name="driverClassName" value="com.mysql.jdbc.Driver">
- </property>
- <property name="url" value="jdbc:mysql://localhost:3306/buy360">
- </property>
- <property name="username" value="root"></property>
- <property name="password" value="root"></property>
- </bean>
- <bean id="sessionFactory"
- class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
- <property name="dataSource" ref="dataSource"></property>
- <property name="annotatedClasses">
- <list>
- <value>com.buy.user.Event</value>
- </list>
- </property>
- <property name="hibernateProperties">
- <value>
- hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
- hibernate.show_sql=true
- hibernate.current_session_context_class=thread
- </value>
- </property>
- </bean>
- <bean id="transactionManager"
- class="org.springframework.orm.hibernate4.HibernateTransactionManager">
- <property name="sessionFactory" ref="sessionFactory"></property>
- </bean>
- <tx:advice id="txAdvice" transaction-manager="transactionManager">
- <tx:attributes>
- <tx:method name="ad*" propagation="REQUIRED"/>
- </tx:attributes>
- </tx:advice>
- <!--
- <aop:config expose-proxy="true">
- <aop:pointcut id="txPointcut" expression="execution(* com.buy.user..*.*(..))" />
- <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut" />
- </aop:config>
- -->
- </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.devMode" value="true" /> <!-- 设置开发模式 -->
- <constant name="struts.action.extension" value="action,do"></constant>
- <!-- <constant name="struts.objectFactory" value="spring" /> -->
- <package name="default" namespace="/" extends="struts-default">
- <action name="test" class="<strong>userAction</strong>" method="validate">
- <result>test.jsp</result>
- </action>
- </package>
- </struts>
其中struts.xml黑体部分的 "userAction" 一定要是beans.xml文件中对应的bean 的id名字,如:
- <bean id="<strong>userAction</strong>" class="com.buy.user.UserAction" scope="singleton" autowire="byName">
- <property name="userService" ref="useService"></property>
- </bean>
要不然会出现下列错误:
- Struts Problem Report
- Struts has detected an unhandled exception:
- Messages:
- File: com/buy/user/UserAction.java
- Line number: 127
- Stacktraces
- java.lang.NullPointerException
- com.buy.user.UserAction.validate(UserAction.java:127)
- sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
- sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
- sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
- java.lang.reflect.Method.invoke(Method.java:597)
- com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:453)
- com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:292)
- com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:255)
- org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
- com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
- com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
- com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
- com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
- com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
- org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
- com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
- com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
- com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
- com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
- com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:211)
- com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
- com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
- com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:211)
- com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
- com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
- com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
- com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
- org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
- com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
- org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:90)
- com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
- org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
- com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
- com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
- com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
- com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
- com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
- com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
- com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
- com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
- com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
- com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
- com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
- com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
- org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
- com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
- com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:192)
- com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
- com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
- com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
- org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
- org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:511)
- org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
- org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
- org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
- org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
- org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
- org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
- org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
- org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
- org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
- org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
- org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
- org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
- org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
- java.lang.Thread.run(Thread.java:662)
- You are seeing this page because development mode is enabled. Development mode, or devMode, enables extra debugging behaviors and reports to assist developers. To disable this mode, set:
- struts.devMode=false
- in your WEB-INF/classes/struts.properties file.
经测试可以通过运行,在集成中的过程中遇到了不少错误 , 欢迎大家一起来讨论学习。实现代码就没有贴出来,主要是配置文件。