欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

(入门SpringBoot)SpringBoot结合拦截器(七)

程序员文章站 2022-06-24 11:12:39
SpringBoot拦截器: @Componentpublic class MyInterceptor implements HandlerInterceptor { /** * preHandle:在业务处理器处理请求之前被调用。预处理,可以进行编码、安全控制、权限校验等处理; * @param ......

springboot拦截器:

  1. 拦截器还是照旧和springmvc一样:

@component
public class myinterceptor implements handlerinterceptor {
    /**
     * prehandle:在业务处理器处理请求之前被调用。预处理,可以进行编码、安全控制、权限校验等处理;
     * @param request
     * @param response
     * @param handler
     * @return
     * @throws exception
     */
    @override
    public boolean prehandle(httpservletrequest request, httpservletresponse response, object handler)
            throws exception {
        system.out.println("prehandle");
        //进行逻辑判断,如果ok就返回true,不行就返回false,返回false就不会处理改请求
        return true;
    }

    /**
     * posthandle:在业务处理器处理请求执行完成后,生成视图之前执行。后处理(调用了service并返回modelandview,但未进行页面渲染),有机会修改modelandview;
     * @param request
     * @param response
     * @param handler
     * @param modelandview
     * @throws exception
     */
    @override
    public void posthandle(httpservletrequest request, httpservletresponse response, object handler, modelandview modelandview) throws exception {
        system.out.println("posthandle...");
    }

    /**
     * aftercompletion:在dispatcherservlet完全处理完请求后被调用,可用于清理资源等。返回处理(已经渲染了页面);
     * @param request
     * @param response
     * @param handler
     * @param ex
     * @throws exception
     */
    @override
    public void aftercompletion(httpservletrequest request, httpservletresponse response, object handler, exception ex) throws exception {
        system.out.println("aftercompletion...");
    }
}

  1. 把拦截器放在实现了webmvcconfigurer java类中:


/**
 * 使用webmvcconfigurer可以来扩展springmvc的功能
 *
 * 在spring5.0之前可以继承webmvcconfigureradapter此适配器进行配置,但spring5.0以后此适配器就被废弃(已被标注为@deprecated),
 * 目前有两种解决方案,一种是直接实现webmvcconfigurer,另一种是直接继承webmvcconfigurationsupport,官方推荐第一种方案。
 */
@configuration
public class webmvcconfig implements webmvcconfigurer {

    /**
     * 自定义拦截规则
     *
     * @param registry
     */
    @override
    public void addinterceptors(interceptorregistry registry) {
        // addpathpatterns - 用于添加拦截规则
        // excludepathpatterns - 用户排除拦截
        registry.addinterceptor(new myinterceptor())
                .addpathpatterns("/**")
                .excludepathpatterns("/");
    }
}