`
lanhuidong
  • 浏览: 223570 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Spring MVC的拦截器

阅读更多

1.定义自己的spring mvc拦截器需要实现HandlerInterceptor 接口或者继承HandlerInterceptorAdapter

2.boolean preHandle()方法在controller被调用之前调用;

3.void postHandle()方法在controller被调用之后调用,可在modelandview中加入数据,比如当前时间;

4.void afterCompletion()在呈现视图之后调用,可用于清理资源等;

5.当设置多个拦截器时,先按顺序调用preHandle方法,然后逆序调用每个拦截器的postHandle和afterCompletion方法


6.拦截器代码

public class MyInterceptor1 extends HandlerInterceptorAdapter {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("-------preHandle1-------");
        return true;//如果返回false,则不再调用之后的方法
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("-------postHandle1-------");
        if(modelAndView != null){  //加入当前时间
            modelAndView.addObject("now", new Date());
        }
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("-------afterCompletion1-------");
    }
    

}
public class MyInterceptor2 extends HandlerInterceptorAdapter {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("-------preHandle2-------");
        return true;//如果返回false,则不再调用之后的方法
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("-------postHandle2-------");
        if(modelAndView != null){  //加入当前时间
            modelAndView.addObject("now", new Date());
        }
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("-------afterCompletion2-------");
    }
    

}

 7.配置

<mvc:interceptors>
    <mvc:interceptor>
        <mvc:mapping path="/**"/>
        <bean class="com.nexusy.web.interceptor.MyInterceptor1" />
    </mvc:interceptor>
    <mvc:interceptor>
        <mvc:mapping path="/**"/>
        <bean class="com.nexusy.web.interceptor.MyInterceptor2" />
    </mvc:interceptor>
</mvc:interceptors>

8.输出

-------preHandle1-------
-------preHandle2-------
-------controller-------
-------postHandle2-------
-------postHandle1-------
-------afterCompletion2-------
-------afterCompletion1-------

 

 

 

 

  • 大小: 14 KB
分享到:
评论
1 楼 daydayupzzc 2016-12-27  
好,不错,清楚

相关推荐

Global site tag (gtag.js) - Google Analytics