spring boot 2.x 拦截器

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;
	}

}

猜你喜欢

转载自my.oschina.net/u/182501/blog/1808140