SpringBoot 拦截器配置

SpringBoot 拦截器配置

 

springboot继承springMvc拦截配置跟springmvc拦截器配置并没有什么大的区别

  1. 继承 HandlerInterceptorAdapter 类 定义一个拦截器
  2. 继承 WebMvcConfigurerAdapter 根据注册添加到
  3. 设置需要拦截的路径和名单即可

 

定义拦截器

public class IncepetTest  extends HandlerInterceptorAdapter {

    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

        System.out.println("进入拦截器。。。。");


        return true;
    }

    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {
    }

    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {
    }
}

继承 WebMvcConfigurerAdapter 类 (虽然已被springboot启用但是还能用

@Configuration
public class InteceptorWebConfig extends WebMvcConfigurerAdapter {


    @Override
    public void addInterceptors(InterceptorRegistry registry) {

          //拦截的路径
         String [] interceptor = {"/user/**"};

         //路径白名单
         String [] exInterceptor = {"/index","/test"};

         //注册拦截器  过个拦截器 下面多次添加即可
        registry.addInterceptor(new IncepetTest())
                //拦截路径
                .addPathPatterns(interceptor)
                //过滤路径
                .excludePathPatterns(exInterceptor);
    }
}

 

 

虽然被弃用了,但是还能,可以实现拦截器功能

 

springboot提供的新拦截器两种方式 官方推荐第二种

 

  • 继承 WebMvcConfigurationSupport
@Configuration
public class InteceptorWebConfig2 extends WebMvcConfigurationSupport {

    @Override
    protected void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new IncepetTest()).addPathPatterns("/**")
                .excludePathPatterns(  "/defer");
        super.addInterceptors(registry);
    }

    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
        super.addResourceHandlers(registry);
    }

    @Override
    public void addViewControllers(ViewControllerRegistry registry){
        registry.addViewController("/index").setViewName("forward:/index.jsp");
    }


}

但是运行的时候跳转页面时候会报错

javax.servlet.ServletException: Could not resolve view with name 'index' in servlet with name 'dispatcherServlet'
 

视图无法解析,明明配置了springboot web配置

不应该的,没配置拦截器之前页面都可以正常跳转。

解决办法是重新配置解析页面方法

 

private static final String VIEW_PREFIX = "/";// 视图前缀
private static final String VIEW_SUFFIX = ".jsp";// 视图后缀
private static final String VIEW_CONTENT_TYPE = "text/html;charset=UTF-8";//视图的内容类型。

/**
 * 配置 视图解析器
 * @return
 */

@Bean
public ViewResolver viewResolver(){

    InternalResourceViewResolver resolver = new InternalResourceViewResolver();
    resolver.setCache(true);
    resolver.setPrefix(VIEW_PREFIX);
    resolver.setSuffix(VIEW_SUFFIX);
    resolver.setExposeContextBeansAsAttributes(true);
    resolver.setContentType(VIEW_CONTENT_TYPE);
    return resolver;
}

 

 

  •  实现 接口  WebMvcConfigurer

 

实现接口即可定义路径即可

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TizzyGoodhealth

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值