当前位置: 代码迷 >> J2EE >> shh(struts2)中小弟我想用spring的AOP实现对每个action的每个方法的拦截,请教如何实现
  详细解决方案

shh(struts2)中小弟我想用spring的AOP实现对每个action的每个方法的拦截,请教如何实现

热度:75   发布时间:2016-04-22 02:55:40.0
shh(struts2)中我想用spring的AOP实现对每个action的每个方法的拦截,请问怎么实现?
通知类中主要是想判断session中是否有用户信息,以判断用户是否登录,如果大家有其它更好的办法也可以告诉我。
我现在主要问题是,如何让action走通知代理?在哪个配置文件中配置?


简单点说就是,用spring的aop拦截struts2的action如何做?
希望给个例子。

具体代码可以看这个帖子。
http://topic.csdn.net/u/20081230/09/bd65430f-5129-46d4-a2d0-9e8f15ea0ecc.html

无用的回答不给分,解决问题后,这两个帖子一起结,解决问题者至少100分。

------解决方案--------------------
下面是我写的简单例子,经测试可用!!
Java code
package test;public interface LoginAction {    public void execute();}
------解决方案--------------------
这个可以直接用struts2的拦截器,我是这么用的:
struts.xml
XML code
<struts>    <package name="authority-default" extends="struts-default">         <interceptors>             <interceptor  class="com.lan.baseproject.interceptor.AuthorityInterceptor" name="authority"/>             <interceptor-stack name="mydefault">                <interceptor-ref name="defaultStack"></interceptor-ref>                <interceptor-ref name="authority"></interceptor-ref>            </interceptor-stack>         </interceptors>         <default-interceptor-ref name="mydefault"/>         <global-results>            <result name="login" type="redirect">/login.jsp</result>        </global-results>    </package></struts>
------解决方案--------------------
我都是这么写:
Java code
<bean id="clientInter"        class="cn.qdrk.strive.crm.interceptor.ClientInterceptor"        abstract="false" lazy-init="default" autowire="default"        dependency-check="default">    </bean>        <bean id="clientInfor"        class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"        abstract="false" lazy-init="default" autowire="default"        dependency-check="default">        <property name="beanNames">        <list>             <value>/undoBusiness</value>             <value>/crminit</value>             <value>/businesslist</value>             <value>/cruxset</value>             <value>/messagelist</value>            </list>        </property>        <property name="interceptorNames">            <list>            <value>clientInter</value>            </list>                </property>    </bean>
------解决方案--------------------
用filter校验session
------解决方案--------------------
2楼的struts2拦截器都用上了~~楼主说spring,呵呵

如此配置:
Java code
<bean id="serv" class="acpectJ.ServiceImp" />    //老话题:实例的bean        <bean id="aop" class="acpectJ.AopTest2" />    //老话题:切面类        <aop:config proxy-target-class="true">        //与自动加载的<aop:aspectj-autoproxy />的proxy-target-class功能一样.,设置代理类型:jdk/GBlib                <aop:aspect ref="aop">            //很明显,aspect是切面的意思,你说人家要的的什么,这个也问,白痴啊~                        <aop:before pointcut="execution(* add())" method="testAfterReturning" />            //pointcut,切点的意思,人家要的当然是切点表达式,            //method,方法,要执行这个切点的方法,是哪个,记住我说的是切面类的方法;如果所有方法execution(* *());                    </aop:aspect>    </aop:config>
  相关解决方案