使用拦截器实现登录检查

1、Spring的HandlerMapping处理器支持拦截器应用。

  当需要为某些请求提供特殊功能时,例如对用户进行身份认证,就非常适合。

2、拦截器必须实现HandlerInterceptor接口,这个接口有以下3个方法

  preHandle(...)

    处理器执行前被调用。方法返回true表示会继续调用其他拦截器和处理器;返回false表示i中断流程,不会执行后续拦截器和处理器

  postHandle(...)

    处理器执行后、视图处理前调用。此时可以通过modelAndView对象对模型数据进行处理或对视图进行处理

  afterCompletion(...)

    整个请求处理完毕后调用,如性能监控中我们可以在此记录结束时间并输出消耗时间,还可以进行一些资源清理。只有preHandle返回true时才会执行afterCompletion方法

3、自定义拦截器的实例代码如下

public class SomeInterceptor implements HandlerInterceptor {
    public boolean preHandle(HttpServletRequest req,HttpServletResponse res,
            Object handler)throws Exception{
        //TODO 处理器执行前调用
        return true;
    }
    
    public void postHandle(HttpServletRequest req,HttpServletResponse res,
            Object handler,ModelAndView mv)throws Exception{
        //TODO 处理器执行后调用
    }
    
    public void afterCompletion(HttpServletRequest req,HttpServletResponse res,
            Object handler,Exception e)throws Exception{
        //TODO 请求完成处理后调用
    }
}

  提示:

    自定义拦截器时,实现HandlerInterceptor接口需要实现接口定义的所有方法,如果只需要某一个方法可以继承HandlerInterceptorAdapter

4、自定义拦截器的配置如下

    <!--自定义拦截器-->
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/day04/*"/>
            <mvc:exclude-mapping path="/login/*"/>
            <bean class="com.tarena.interceptor.SomeInterceptor" />
        </mvc:interceptor>
    </mvc:interceptors>

 

你可能感兴趣的:(拦截器)