springMVC 拦截器Interceptors

SpringMVC中的拦截器类似于Servlet中的过滤器Filter,用于对处理器(自己编写的Controller类)进行预处理和后处理。拦截器和过滤器一样也有拦截器链。

拦截器和过滤器的区别:

1,拦截器是SpringMVC框架中的,只支持在SpringMVC项目中使用,只会拦截请求的方法。

2,过滤器可以在任何web项目中使用,可以拦截任何资源,例如:servlet,控制器,jsp,html等等

我们想要实现拦截器必须实现HandlerInterceptor 接口

参考文档Spring Framework 中文文档 - 22. Web MVC 框架 | Docs4dev

applicationContext.xml

<mvc:interceptors>
       <!-- <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"/>-->
        <mvc:interceptor>
            <!--用于执行指定拦截的路径-->
            <mvc:mapping path="/**"/>
            <!--不拦截的路径-->
            <mvc:exclude-mapping path="/admin/**"/>
            <bean id="permissionInterceptor" class="com.test.interceptors.PermissionInterceptor"/>
        </mvc:interceptor>
    </mvc:interceptors>
/*
* preHandle在执行处理器方法之前执行
* postHandle在执行处理器方法之后执行
* afterCompletion在这次请求完成后执行
* */
public class PermissionInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("执行了preHandle");


        //返回true放行,返回false不放行
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("执行了postHandle");
        HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("执行了afterCompletion");
        HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值