您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Spring MVC中的拦截器

Spring MVC中的拦截器

首先看一下HandlerInterceptor它的接口文档!(HandlerInterceptorAdapter仅是一个子类,如果您不想实现所有3个方法,则只能为您提供帮助)。

然后,您会注意到有3种方法,每种方法都属于“处理”链中的一个步骤。

然后您会注意到您使用了错误方法:use postHandle代替preHandle

然后,您会注意到在过滤器中创建的模型图ModelAndView mv = new ModelAndView();未连接到某物,因此无法使用!但是幸运的是postHandle一个ModelAndView modelAndView参数。而且,您必须使用它而不是创建未连接的模型图。

也许以后您会注意到您两次创建了过滤器。一次通过组件扫描,一次通过xml声明。(在这种情况下,我建议删除@Compnent注释)

因此,最后您的课程如下所示:

public class testInterceptor extends HandlerInterceptorAdapter {      
   @Override
   public boolean postHandle(HttpServletRequest request,
            HttpServletResponse response,
             Object handler,
            ModelAndView modelAndView){
       modelAndView.addObject("name", "test name");
   }
 }

最后,您会注意到(我不是100%确信)未针对Spring安全性登录请求(j_spring_security_check)或注销调用拦截器。因为这是在调用任何HandlerInterceptor之前应用的spring安全过滤器中处理的。

评论)现在,当我调用登录页面时,我可以看到我的sysout评论,但它显示了16次,为什么呢?

可能是因为您正在通过控制器加载一些资源(图像,css,js)。

Java 2022/1/1 18:14:23 有435人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶