版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34173549/article/details/81635034
1、spring1.x配置方式
在spring boot1.x中,使用拦截器,一般进行如下配置:
@Configuration
public class AppConfig extends WebMvcConfigurerAdapter {
@Resource
private FRInterceptor fRInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
//自定义拦截器,添加拦截路径和排除拦截路径
registry.addInterceptor(fRInterceptor).addPathPatterns("api/**").excludePathPatterns("api/login");
}
}
但是在spring boot2.x中,WebMvcConfigurerAdapter被deprecated,虽然继承WebMvcConfigurerAdapter这个类虽然有此便利,但在Spring5.0里面已经deprecated了。
官方文档也说了,WebMvcConfigurer接口现在已经有了默认的空白方法,所以在Springboot2.0(Spring5.0)下更好的做法还是implements WebMvcConfigurer。
2、spring2.x配置方式
2.1拦截器统一管理
import javax.annotation.Resource;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import com.spring.pro.interceptor.FileUploadInterceptor;
/**
* @ClassName: WebConfig
* @Description:
* @author weiyb
* @date 2018年5月7日 上午11:30:58
*/
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Resource
private FileUploadInterceptor fileUploadInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 自定义拦截器,添加拦截路径和排除拦截路径
registry.addInterceptor(fileUploadInterceptor).addPathPatterns("/**");
}
}
2.2自定义拦截器
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
/**
* 文件上传拦截器
* @ClassName: FileUploadInterceptor
* @Description:
* @author weiyb
* @date 2018年5月7日 上午11:51:53
*/
@Component
public class FileUploadInterceptor implements HandlerInterceptor {
/*
* 视图渲染之后的操作
*/
@Override
public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
}
/*
* 处理请求完成后视图渲染之前的处理操作
*/
@Override
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
throws Exception {
}
/*
* 进入controller层之前拦截请求
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object obj) throws Exception {
System.out.println("getContextPath:" + request.getContextPath());
System.out.println("getServletPath:" + request.getServletPath());
System.out.println("getRequestURI:" + request.getRequestURI());
System.out.println("getRequestURL:" + request.getRequestURL());
System.out.println("getRealPath:" + request.getSession().getServletContext().getRealPath("image"));
return true;
}
}