通知类中主要是想判断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>