`

spring aop对Struts2的action拦截时出现异常

    博客分类:
  • java
阅读更多

     方法一:引用http://sulong.me/archives/51:不要让Action继承ActionSupport。

     用spring做为struts2的ObjectFactory,用spring来生成action,并对action的方法加上aop时,不要使Action继承于ActionSupport,否则会出现类似于以下的异常:

 java.lang.NoSuchMethodException: $Proxy84.executeList()
at java.lang.Class.getMethod(Class.java:1581)
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.getActionMethod(AnnotationValidationInterceptor.java:55)
 
     方法二:引用http://xuxingyin.iteye.com/blog/600091:

struts.xml文件:
   <action name="login" class="memberAction" method="login">
    <result name="loginSuc">${nextPage}</result>
    <result name="loginFail">login.jsp</result>
   </action>
spring的applicationcontext.xml配置文件:
//action
<bean id="memberAction"
   class="com.edgar.s2shlogin.web.action.MemberAction" scope="prototype">
   <property name="memberService">
    <ref bean="memberService" />
   </property>
</bean>
<!-- 自动代理对象 -->
<bean id="autoProxy"
   class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
   <property name="proxyTargetClass" value="true"/> //注意这里!
   <property name="beanNames">
    <list>
     <value>*Action</value>
    </list>
   </property>
   <property name="interceptorNames">
    <list>
     <value>checkArgumentsAdvice</value>
     <value>exceptionLogger</value>
    </list>
   </property>
</bean>
 

 

当struts2的action没有配置动态方法调用的时候,运行正常。当使用动态方法调用的时候,运行时报

类似: NoSuchMethodException:$Proxy6.login() 的错误,解决办法是使用CGLib实现aop,加上

<property name="proxyTargetClass" value="true"/>

如果使用 aop:方式的话,加上<aop:aspectj-autoproxy proxy-target-class="true"/>

 

分享到:
评论

相关推荐

    struts2+spring aop demo

    4. **连接Struts2和Spring**:在Struts2的配置文件(如`struts.xml`)中,我们需要配置Action类以使用Spring的依赖注入,这样Spring才能识别并应用AOP代理。 在实际的项目中,我们还需要考虑如何处理自定义参数。...

    struts2整合spring实现拦截器

    通过以上步骤,我们就完成了Struts2和Spring的整合,Action实例由Spring管理,并且能够使用自定义的拦截器。这种整合方式让开发者能够充分利用两者的优点,提高代码的可维护性和可扩展性。 值得注意的是,Struts2_...

    struts2+spring4+mybatis3,登录jquery ajax,struts拦截器,springAOP的例子

    本项目示例涵盖了这些框架的整合使用,以及jQuery AJAX登录、Struts拦截器和Spring AOP(面向切面编程)的应用。 1. **Struts2**:Struts2是一个基于MVC(Model-View-Controller)设计模式的Web应用框架,它简化了...

    struts2+spring集成bug——使用AOP时可能遇到的问题分析

    6. **异常处理**:Spring AOP在处理异常时可能与Struts2的异常处理机制冲突。如果一个方法抛出异常,而AOP配置没有正确处理,可能会导致应用程序崩溃。确保你已经为可能出现的异常定义了合适的处理策略。 解决这些...

    struts2+hirbenate+SpringAOP

    Struts2、Hibernate和Spring AOP是Java Web开发中三个重要的框架,它们分别负责不同的职责。Struts2作为MVC(Model-View-Controller)框架,主要处理HTTP请求,实现业务逻辑与视图的解耦;Hibernate是一个持久化框架...

    spring3+struts2+ibatis

    同时,Struts2可以与Spring无缝集成,实现Action类的依赖注入,便于管理和测试。 三、Ibatis:持久层的优雅解决方案 Ibatis与传统的ORM框架不同,它并不完全取代SQL,而是将SQL语句与Java代码解耦,提供动态SQL...

    Spring+struts2

    Spring 提供了全面的依赖注入(DI)和面向切面编程(AOP)功能,而 Struts2 则是用于构建 MVC(Model-View-Controller)架构的优秀框架。将两者结合使用,可以构建出高效、可维护性高的 web 应用程序。 首先,让...

    spring+struts2整合源码

    测试时,可以使用Spring Test框架对Service层进行单元测试,而Struts2 Action可以通过MockMVC模拟HTTP请求进行集成测试。部署时,将项目打包成WAR文件,部署到Servlet容器如Tomcat。 通过以上步骤,我们可以成功地...

    spring与struts2整合

    4. **Action 类**:Action 类通常作为 Struts2 处理请求的入口,它可以从 Spring 容器中注入所需的依赖。通过在 Action 类上使用 `@Component` 注解并配置在 Spring 配置文件中,可以确保 Spring 能够创建和管理这些...

    Spring与Struts 2整合.zip

    整合Spring和Struts 2的主要目的是将Spring的依赖注入和管理能力引入到Struts 2的Action中,以及利用Spring的AOP进行事务管理。整合步骤通常包括以下几个部分: 1. **添加依赖**:在项目中引入Spring和Struts 2的库...

    hibernate4.3.5+spring4.0.6+struts2的全部jar包

    3. **AOP整合**:Spring的AOP可与Struts2的拦截器协同工作,如添加统一的异常处理。 4. **数据源配置**:Spring管理数据源,Hibernate通过Spring获取DataSource,实现数据访问。 5. **ModelDriven或FormDriven模式**...

    struts2 spring hibernate integration

    在实际项目中,通常使用Spring来管理Struts2的Action实例,通过Spring的DI实现Action类的依赖注入。同时,Spring负责管理Hibernate SessionFactory,提供透明的事务管理。在Struts2的Action执行完毕后,可以通过...

    Spring之Spring2.5集成Struts2.2

    8. **全局异常处理**:可以利用Spring的AOP来实现全局的异常处理,捕获并统一处理Struts2中抛出的异常。 9. **测试与调试**:集成后的应用可以通过单元测试和集成测试来验证各个组件的正确性。使用如JUnit和Mockito...

    CXF2.1.3+spring3.0+struts2.3.4

    Spring3.0引入了许多增强功能,如AOP(面向切面编程)改进、支持JSR-303 Bean Validation、对RESTful服务的支持以及更强大的数据访问层。通过Spring,可以将CXF和Struts2整合起来,使得各个组件之间的协作变得更加...

    aven2+spring(ioc aop)+struts+mybatis

    4. **整合配置**:在Struts2的配置文件中指定Spring为Action的工厂,让Struts2在创建Action实例时使用Spring容器。 5. **事务管理**:配置Spring的PlatformTransactionManager,设置全局事务策略,确保数据一致性。 ...

    Mybatis3+Spring4 +Struts2整合源码

    2. **Struts2的Action配置**:在Struts2的配置文件中定义Action,这些Action会调用Spring管理的Service层方法,从而实现业务逻辑。 3. **Mybatis的动态SQL**:Mybatis允许在映射文件中编写动态SQL,使得SQL查询更加...

    整合struts2和spring

    这样,每次请求时,Struts2会从Spring容器中获取Action实例,而不是使用默认的实例化方式。 4. **Action类的配置**:Action类需要实现Spring的`org.springframework.stereotype.Component`注解,以便Spring能识别并...

    spring-mybatis-struts2-master ——demo

    3. 配置Struts2:配置struts.xml,定义Action及其结果,设置拦截器栈。 4. 配置MyBatis:创建mybatis-config.xml,定义数据源、事务工厂,以及Mapper接口和XML映射文件的路径。 5. 创建实体类、Mapper接口和XML映射...

    struts2+spring+mybatis框架

    4. **整合Spring和Struts2**:使用Spring的Struts2插件,使Spring管理的Bean可以直接在Struts2 Action中注入使用。 5. **整合Spring和MyBatis**:通过Spring的SqlSessionFactoryBean,将MyBatis的SqlSessionTemplate...

    struts2和spring和Hibernate整合的jar包

    在整合Struts2、Spring和Hibernate时,我们通常会遇到一些包冲突的问题,尤其是在使用IDE如MyEclipse时。这可能是由于不同库版本之间的不兼容性,或者是重复引入了相同的类导致的。解决这些问题通常需要仔细检查项目...

Global site tag (gtag.js) - Google Analytics