spring拦截器

spring拦截器实现HandlerInterceptor接口或者继承HandlerInterceptorAdapter类都可以实现,主要有三个方法,preHandle在调用具体的controller之前执行,postHandle在调用controller之后,但是页面渲染之前执行,afterCompletion在页面渲染之后执行,拦截器的功能类似与filter的功能,个人认为spring为什么搞一个拦截器,主要是因为拦截器属于spring管理的范畴类,方便资源的分配,也便于与其他的整合,不会像filter这样突兀,和filter类型,同事命中多个拦截器时,按顺序一个一个往后执行。拦截器中可以做一些权限校验,数据校验转换等事情。

编写拦截器

public class UserContextInterceptor extends HandlerInterceptorAdapter {
    //拦截器可以使用spring的依赖注入
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //可以在这里处理用户认证
        if (true) {
            response.setContentType("application/json");
            response.setCharacterEncoding("UTF-8");
            try (PrintWriter writer = response.getWriter()) {
                writer.write("{'message':'认证不通过'}");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return super.preHandle(request, response, handler);
    }
}

配置拦截器

    <mvc:interceptors>
        <!-- 权限校验拦截器 -->
        <mvc:interceptor>
            <!--匹配的路径-->
            <mvc:mapping path="/**/*.do"/>
            <!--不包含的路径-->
            <mvc:exclude-mapping path="/riskControl/**/*.do"/>
            <bean class="com.zhan.design.interceptor.UserContextInterceptor"/>
        </mvc:interceptor>
    </mvc:interceptors>

如何配置,比如访问/hello/word.do,就会返回认证不通过

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值