java类如何配置java 拦截器器

spring 拦截器 MethodInterceptor 配置 config aop
最近项目里加上了用户权限,有些操作需要登录,有些操作不需要,之前做项目做权限,喜欢使用过滤器,但在此使用过滤器比较死板,如果用的话,就必须在配置文件里加上所有方法,而且 不好使用通配符。所以想了想,之前在人人用过的一种比较简单灵活的权限判断,是采用Spring 的 methhodInterceptor拦截器完成的,并且是基于注解的。
现在自己写了一套。大概是用法是这样的:
&&& @LoginRequired
&&& @RequestMapping(value = &/comment&)
&&& public void comment(HttpServletRequest req, HttpServletResponse res) {
&&&&&&& doSomething,,,,,,,,
我是在Spring m 的controller层的方法上拦截的,注意上面的@LoginRequired 是我自定义的注解。这样的话,该方法被拦截后,如果有该 注解,则表明该 方法需要用户登录后才能执行某种操作,于是乎,我们可以判断request里的session或者Cookie是否包含用户已经登录的身份,然后判断是否执行该方法;如果没有,则执行另一种操作。
-------------------------------------------------------------------------
下面是自定义注解的代码:
package com.qunar.wireless.ugc.controllor.
import java.lang.annotation.ElementT
import java.lang.annotation.R
import java.lang.annotation.RetentionP
import java.lang.annotation.T
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface LoginRequired& {
-----------------------------------------------------------------------------
下面是自定义的方法拦截器,继续自aop的MethodInterceptor
import javax.servlet.http.HttpServletR
import org.aopalliance.intercept.MethodI
import org.aopalliance.intercept.MethodI
import com.qunar.wireless.ugc.controllor.web.LoginR
&* @author tao.zhang
&* @create-time
public class LoginRequiredInterceptor1 implements MethodInterceptor {
&&& @Override
&&& public Object invoke(MethodInvocation mi) throws Throwable {
&&&&&&&&&&&&
&&&&&&& Object[] ars = mi.getArguments();
&&&&&&&&&&&&&&&&&
&&&&&&& for(Object o :ars){
&&&&&&&&&&& if(o instanceof HttpServletRequest){
&&&&&&&&&&&&&& System.out.println(&------------this is a HttpServletRequest Parameter------------ &);
&&&&&&&&&&& }
&&&&&&& // 判断该方法是否加了@LoginRequired 注解
&&&&&&& if(mi.getMethod().isAnnotationPresent(LoginRequired.class)){
&&&&&&&&&&&& System.out.println(&----------this method is added @LoginRequired-------------------------&);
&&&&&& //执行被拦截的方法,切记,如果此方法不调用,则被拦截的方法不会被执行。
&&&&&&& return mi.proceed();
------------------------------------------------------------------------
配置文件:
&bean id=&springMethodInterceptor& class=&com.qunar.wireless.ugc.interceptor.LoginRequiredInterceptor1& &&/bean&
&&& &aop:config&
&&&&&&&&&&&&&&&& &!--切入点--&
&&&&&&&&&&&&&&&& &aop:pointcut id=&loginPoint&
&&&&&&&&&&&&&&&& expression=&execution(public * com.qunar.wireless.ugc.controllor.web.*.*(..)) &/&&
&&&&&&&&&&&&&&&& &!--在该切入点使用自定义拦截器--&
&&&&&&&&&&&&&&&& &aop:advisor pointcut-ref=&loginPoint& advice-ref=&springMethodInterceptor&/&
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&
&&&&& &/aop:config&
作者:gameover8080spring mvc中的登录拦截器java类中,重写的三个方法是什么意思_百度知道
spring mvc中的登录拦截器java类中,重写的三个方法是什么意思
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
preHandle在业务处理器处理请求之前被调用,postHandle在业务处理器处理请求执行完成后,生成视图之前执行,afterCompletion在DispatcherServlet完全处理完请求后被调用,可用于清理资源等 。所以要想实现自己的拦截管理逻辑,需要继承HandlerInterceptorAdapter并重写其三个方法。原文地址:
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。博客分类:
spring配置JSON拦截器VIEW
一、在中servlet-context.xml添加如下代码:
&!-- 使用BeanNameViewResolver 和 MappingJacksonJsonView 解析返回JSON数据 --&
&beans:bean id="jacksonJsonView" class="org.springframework.web.servlet.view.json.MappingJacksonJsonView"&
&/beans:bean&
&!--@start 自定义 JOSN VIEW
使用方法:在Controller中 ModelAndView mv = new ModelAndView("jsonView");具体见TestJsonController--&
&beans:bean id="beanNameViewResolver"
class="org.springframework.web.servlet.view.BeanNameViewResolver" &
&beans:property name="order" value="1" /&
&/beans:bean&
&beans:bean id="gsonView" class="com.gmobi.handler.GsonView" /&
&!--@end 自定义 JOSN VIEW --&
二、加入两个class:
com.gmobi.handler.GsonView.java 自定义JSON VIEW 拦截器,使用谷歌的 GSON转换数据(特性:为空的属性自动屏蔽)
com.gmobi.controller.TestJosnController.java,测试JOSN view,展示了两个拦截器的使用方法
备注:所需文件已经上传至QQ共享
&!--EndFragment--&
下载次数: 104
浏览: 86872 次
来自: 南京
如何不需要账户就能登陆啊?我这边有这个需求,不需要输入用户名和 ...
教训,我也犯了这个错
请问楼主,你的数据库连接是在业务层取得的吗?
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'Struts2拦截器Interceptor的原理与配置实例详解
转载 &更新时间:日 15:14:53 & 作者:kingmax
拦截器是一种AOP(面向切面编程)思想的编程方式.它提供一种机制是开发者能够把相对独立的代码抽离出来,配置到Action前后执行。下面这篇文章主要给大家介绍了关于Struts2拦截器Interceptor的原理与配置的相关资料,需要的朋友可以参考下。
一、Struts2拦截器原理:
Struts2拦截器的实现原理相对简单,当请求struts2的action时,Struts 2会查找配置文件,并根据其配置实例化相对的&&& 拦截器对象,然后串成一个列表,最后一个一个地调用列表中的拦截器。
比如:应用要求用户登陆,且必须为指定用户名才可以查看系统中某个视图资源;否则,系统直接转入登陆页面。对于上面的需求,可以在每个Action的执行实际处理逻辑之前,先执行权限检查逻辑,但这种做法不利于代码复用。因为大部分Action里的权限检查代码都大同小异,故将这些权限检查的逻辑放在拦截器中进行将会更加优雅。
1. Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现.
2. 拦截器栈(Interceptor Stack)。Struts2拦截器栈就是将拦截器按一定的顺序联结成一条链。在访问被拦截的方法或字段时,Struts2拦截器链中的拦截器就会按其之前定义的顺序被调用。
二、Struts2 拦截器接口实现:
Struts2规定用户自定义拦截器必须实现com.opensymphony.xwork2.interceptor.Interceptor接口。该接口声明了3个方法,其中,init和destroy方法会在程序开始和结束时各执行一遍,不管使用了该拦截器与否,只要在struts.xml中声明了该Struts2拦截器就会被执行。intercept方法就是拦截的主体了,每次拦截器生效时都会执行其中的逻辑。
void init();
void destroy();
String intercept(ActionInvocation invocation) throws E
1:所有拦截器都使用接口Interceptor ,Action去实现这个接口;
Init()方法:在服务器起动的时候加载一次,并且只加载一次;
Destroy()方法:当拦截器销毁时执行的方法;
Interceptor()方法:其中里边有一个参数invocation;
public String intercept(ActionInvocation invocation) throws xception {
System.out.println("interceptor!!");
String result=invocation.invoke();
其中intercept方法是拦截器的核心方法,所有安装的拦截器都会调用之个方法。在Struts2中已经在struts-default.xml中预定义了一些自带的拦截器,如timer、params等。如果在&package&标签中继承struts-default,则当前package就会自动拥有struts-default.xml中的所有配置。
Invocation.invoke()是如果只有一个拦截器执行完这个方法后,会返回给视图,如果有多个拦截器,它顺序的执行完所有的拦截器,才返回给视图,也就是调用后面的action继续执行。
二、Struts2 拦截器详细配置:
默认拦截器是在不设置任何拦截器的时候,给予默认设置的,当只要设置任何一个拦截器就会覆盖掉默认拦截器, 故此,我们需要手动设置
一旦实现了检查拦截器,就可以在所有需要实现权限控制的Action中复用上面的拦截器。
为了使用该拦截器,首先在struts.xml文件中定义拦截器,定义拦截器的配置片段如下:
&!-- 用户拦截器定义在该元素下 --&
&interceptors&
&!-- 定义了一个名为authority的拦截器 --&
&interceptor name="authority" class="lee.AuthorityInterceptor"/&
&/interceptors&
定义了该拦截器之后,可以在Action中应用该拦截器,应用该拦截器的配置片段如下:
&!-- 定义一个名为viewBook的Action,其实现类为ActionSupport --&
&action name="viewBook"&
&!-- 返回success视图名时,转入/WEB-INF/jsp/viewBook.jsp页面 --&
&result&/WEB-INF/jsp/viewBook.jsp&/result&
&!-- 拦截器一般配置在result元素之后! --&
&interceptor-ref name="defaultStack"/&
&!-- 应用自定义拦截器 --&
&interceptor-ref name="authority"/&
上面名为viewBook的Action,没有指定class属性,默认使用ActionSupport类,配置该Action时,只是指定了一个Result,指定返回success字符串时,系统将转入/WEBINF/jsp/viewBook.jsp页面。但并为未配置login视图对应的JSP页面。
考虑到这个拦截器的重复使用,可能在多个Action都需要跳转到login逻辑试图,故将login Result定义成一个全局Result。
下面是配置login Result的配置片段:
&!-- 定义全局Result --&
&global-results&
&!-- 当返回login视图名时,转入/login.jsp页面 --&
&result name="login"&/login.jsp&/result&
&/global-results&
经过上面的配置,如果浏览者在浏览器中直接发送viewBook请求,将会转入如图所示的页面。
这种通过拦截器进行权限控制的方式,显然具有更好的代码复用。
如果为了简化struts.xml文件的配置,避免在每个Action中重复配置该拦截器,可以将该拦截器配置成一个默认拦截器栈(这个默认拦截器栈应该包括default-stack拦截器栈和权限检查拦截器)。
定义自己的默认拦截器栈的配置片段如下:
&interceptors&
&!-- 定义权限检查拦截器 --&
&interceptor name="authority" class="lee.AuthorityInterceptor"/&
&!-- 定义一个包含权限检查的拦截器栈 --&
&interceptor-stack name="mydefault"&
&!-- 定义拦截器栈包含default-stack拦截器栈 --&
&interceptor-ref name="default-stack"/&
&!-- 定义拦截器栈包含authority拦截器 --&
&interceptor-ref name=" authority"/&
&/interceptor- stack &
&/interceptors&
一旦定义了上面的mydefault拦截器栈,这个拦截器栈包含了权限检查拦截器和系统默认的拦截器栈。如果将这个拦截器栈定义成默认拦截器,则可以避免在每个Action需要重复定义权限检查拦截器。
下面是定义默认拦截器的配置片段:
&default-interceptor-ref name="mydefault"/&
一旦在某个包下定义了上面的默认拦截器栈,在该包下的所有Action都会自动增加权限检查功能。对于那些不需要使用权限控制的Action,将它们定义在另外的包中——这个包中依然使用系统原来的默认拦截器栈,将不会有权限控制功能。
PS:拦截器,拦截器栈和默认的拦截器之间的关系
1:拦截器和拦截器栈是一个级别的,也就是说一个拦截器栈中包括许多拦截器, 一个拦截器栈中还可以包括许多拦截器栈,配置如下方式:
&interceptors&
&!-- 先定义拦截器 --&
&interceptor name="myInterceptor" class="com.struts2.interceptor.MyInterceptor"&
&!-- 指定系统初始化给拦截器的参数 --&
&param name="hello"&张--&/param&
&/interceptor&
&!-- 加到自己设置的拦截器栈里边去 --&
&interceptor-stack name="myStack"&
&interceptor-ref name="myInterceptor"&
&/interceptor-ref&
&interceptor-ref name="defaultStack"&&/interceptor-ref&
&/interceptor-stack&
&/interceptors&
拦截器的使用:
2.在引用使用;
&interceptor name="myInterceptor" class="com.struts2.interceptor.MyInterceptor"&
&interceptor-ref name="myInterceptor"&
&/interceptor-ref&
2:struts2中有一个系统默认的拦截器栈是 defaultStack,如果你手动引用自己的拦截器,系统默认的拦截器栈将不起作用;这样必需手动引入系统的拦截器栈
&interceptor-ref name="defaultStack"&
&/interceptor-ref&
如果想改变系统默认的拦截器栈,可以这样配置:
&default-interceptor-ref name="myStack"&
&/default-interceptor-ref&
其中myStack是自己定义的拦截器栈名字;
如果拦截器栈中有多个拦截器,在执行action之前的顺序跟配置拦截器的顺序一致,而在action之后执行的顺序是相反的;
PS:最后还附加一点过滤器的东西
过滤器,是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的 action进行业务逻辑,比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入servlet或者 struts的action前统一设置字符集,或者去除掉一些非法字符
拦截器,是在面向切面编程的就是在你的service或者一个方法,前调用一个方法,或者在方法后调用一个方法比如动态代理就是拦截器的简单实现,在你调用方法前打印出字符串(或者做其它业务逻辑的操作),也可以在你调用方法后打印出字符串,甚至在你抛出异常的时候做业务逻辑的操作。
拦截器与过滤器的区别 :
&&&&& 1、拦截器是基于java的反射机制的,而过滤器是基于函数回调。
&&&&& 2、拦截器不依赖与servlet容器,过滤器依赖与servlet容器。
&&&&& 3、拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。
&&&&& 4、拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。
&&&&& 5、在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次
&&&&& 6、执行顺序 :过滤前 - 拦截前 - Action处理 - 拦截后 - 过滤后。
过滤是一个横向的过程,首先把客户端提交的内容进行过滤(例如未登录用户不能访问内部页面的处理);过滤通过后,拦截器将检查用户提交数据的验证,做一些前期的数据处理,接着把处理后的数据发给对应的Action;Action处理完成返回后,拦截器还可以做其他过程(还没想到要做啥),再向上返回到过滤器的后续操作。
一个Filter 可负责拦截多个请求或响应:一个请求或响应也可被多个请求拦截。
创建一个Filter 只需两个步骤:
(1)创建Filter 处理类:
(2)在web.xml 文件中配置Filter 。
创建Filter 必须实现javax.servlet.Filter 接口,在该接口中定义了三个方法。
&&&&& • void init(FilterConfig config) : 用于完成Filter 的初始化。
&&&&& • void destroy() : 用于Filter 销毁前,完成某些资源的回收。
&&&&& • void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) : 实现过滤功能,该方法就是对每个请求及响应增加的额外处理。
过滤器Filter也具有生命周期:init()-&doFilter()-&destroy(),由部署文件中的filter元素驱动。在servlet2.4中,过滤器同样可以用于请求分派器,但须在web.xml中声明,&dispatcher&INCLUDE或FORWARD或REQUEST或ERROR&/dispatcher&该元素位于filter-mapping中。
下面写一个自定义拦截器的例子,判断用户是否登录,就是检查当前用户的session中的user属性是否为空,如果为空,就跳到登录页面,否则,继续执行.
1.编写拦截器,在interceptor包下常见一个java类,名为LoginInterceptor,继承AbstractInterceptor:
public class LoginInterceptor extends AbstractInterceptor{
public String intercept(ActionInvocation invocation) throws Exception {
//得到拦截到的action的名称,看是否是login,当是login的时候,不用进行下面的检测了,直接执行下一个拦截器
String actionName=invocation.getProxy().getActionName();
if("login".equals(actionName)){
return invocation.invoke();
//如果不是login.则判断是否已登录,及检测session中key为user的值是否存在,如果不存在,跳回到登录页面
String user=(String)invocation.getInvocationContext().getSession().get("user");
if(user==null){
System.out.println("未登录");
return "login";
//进行到这里.说明用户已登录,则跳转到下一个拦截器
return invocation.invoke();
2,在struts.xml中配置interceptor,主要特别注意的是,当使用了自定义的拦截器后,默认拦截器将不起作用,默认拦截器实在struts-default.xml中配置的,当引用了自定义拦截器,又想使用struts2提供的默认拦截器功能,需要手动配置:这里我将默认拦截器和我写的进行登录权限验证的拦截器,写到一个拦截器栈里,然后调用这个默认拦截器栈:
&package name="default" namespace="/" extends="struts-default"&
&interceptors&
    &!-- 配置自定义的拦截器--&
&interceptor name="checkLogin" class="com.wang.interceptor.LoginInterceptor"/&
    &!--配置一个拦截器栈,里面包含自己定义的拦截器和defaultStack默认拦截器--&
      &interceptor-stack name="myStack"&
&interceptor-ref name="defaultStack"&&/interceptor-ref&
&interceptor-ref name="checkLogin"&&/interceptor-ref&
&/interceptor-stack&
&/interceptors&
    &!--引用默认的拦截器(栈)--&
&default-interceptor-ref name="myStack"&&/default-interceptor-ref&
    &!--配置一个全局结果集--&
     &global-results&
&result name="login"&/login.jsp&/result&
&/global-results&
&action name="login" class="com.wang.action.LoginAction" &
&result&/succ.jsp&/result&
&result name="error"&/login.jsp&/result&
&/package&
这里我使用了默认拦截器标签,即相当于在每个action标签下,使用了 &interceptor-ref name="myStack"&&/interceptor-ref&.jsp页面和LoginAction类这里就省略了.
再来介绍一下方法拦截器,方法拦截器比action拦截器控制的更加精细,大体实现方式和action拦截器相同,不同的是它继承的是MethodFilterInterceptor类,重写的是doInterceptor()方法,在struts.xml的配置上也有些不同,大体是这样:
&interceptor-ref name="methodInterceptor"&
&!--配置被拦截的方法--&
&param name="includeMethods"&methodA,methodsB&/param&
&!--配置不被拦截的方法--&
&param name="excludeMethods"&methodsC,methodsD&/param&
&/interceptor-ref&
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具struts2拦截器配置 - struts2 - ITeye群组
自定义了一个struts2拦截器,然后配置在SSH2中,报错如下:
严重: Exception starting filter struts2.2.1
Unable to load configuration. - interceptor-ref - file:/D:/software/apache-tomcat-6.0.20-t/apache-tomcat-6.0.20/webapps/recommend/WEB-INF/classes/struts.xml:36:48
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:428)
at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:69)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:51)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:397)
at org.apache.catalina.core.ApplicationFilterConfig.&init&(ApplicationFilterConfig.java:108)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3800)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4450)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:722)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:583)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: Unable to load configuration. - interceptor-ref - file:/D:/software/apache-tomcat-6.0.20-t/apache-tomcat-6.0.20/webapps/recommend/WEB-INF/classes/struts.xml:36:48
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:69)
at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:371)
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:415)
... 20 more
Caused by: Unable to find interceptor class referenced by ref-name myInterceptor - interceptor-ref - file:/D:/software/apache-tomcat-6.0.20-t/apache-tomcat-6.0.20/webapps/recommend/WEB-INF/classes/struts.xml:36:48
at com.opensymphony.xwork2.config.providers.InterceptorBuilder.constructInterceptorReference(InterceptorBuilder.java:63)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.lookupInterceptorReference(XmlConfigurationProvider.java:998)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.buildInterceptorList(XmlConfigurationProvider.java:550)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addAction(XmlConfigurationProvider.java:381)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addPackage(XmlConfigurationProvider.java:479)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadPackages(XmlConfigurationProvider.java:275)
at org.apache.struts2.config.StrutsXmlConfigurationProvider.loadPackages(StrutsXmlConfigurationProvider.java:111)
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:204)
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:66)
... 22 more
11:24:13 org.apache.catalina.core.StandardContext start
严重: Error filterStart
11:24:13 org.apache.catalina.core.StandardContext start
严重: Context [/recommend] startup failed due to previous errors
11:24:13 org.apache.catalina.core.ApplicationContext log
信息: Closing Spring root WebApplicationContext
哪位大侠请给指点一下,到底是什么错误...
补充拦截器类和配置文件如下:
(1)拦截器类:
package com.test.recommend.
import java.util.M
import com.test.recommend.domain.U
import com.opensymphony.xwork2.ActionI
import com.opensymphony.xwork2.interceptor.AbstractI
public class AuthenticationInterceptor extends AbstractInterceptor {
private static final long serialVersionUID = 1L;
public String intercept(ActionInvocation invocation) throws Exception {
Map&String,Object& sessionValues=invocation.getInvocationContext().getSession();
//从session获取user
User user=(User)sessionValues.get("user");
//如果user为空,跳转到登录页面
if(user==null){
return "login";
//否则,正常运行
return invocation.invoke();
(2)拦截器在spring中的配置:
&?xml version="1.0" encoding="UTF-8"?&
&beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"&
&bean id="authenticationInterceptor" class="com.test.recommend.interceptor.AuthenticationInterceptor"&&/bean&
&/beans&
(3)拦截器在struts2配置文件struts.xml中配置:
&!DOCTYPE struts PUBLIC
&&&&&&& "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
&&&&&&& "http://struts.apache.org/dtds/struts-2.0.dtd"&
&struts&
&constant name="struts.objectFactory" value="spring" /&
&include file="struts-default.xml"&&/include&
&&&&&&& &package name="struts2" extends="struts-default"&&
&interceptors&
&interceptor name="myInterceptor" class="com.test.recommend.interceptor.AuthenticationInterceptor"&
&/interceptor&
&/interceptors&
&global-results&
&result name="login" type="redirect"&/WEB-INF/jsp/login.jsp&/result&
&/global-results&
&&&&&&& &/package&
&/struts&
配置大体上就是这样,但是启动服务器时总是报上面的错误
问题已解决:出现该错误的原因是拦截器的声明和引用没有在同一个package下,所以使用拦截器的时候一定要注意拦截器的声明和引用在同一个package下。
相关资源推荐

我要回帖

更多关于 java 拦截器 的文章

 

随机推荐