1 介紹
Spring Web MVC是基于Servlet API構(gòu)建的原始Web框架共螺。
2 攔截器
2.1 定義
springmvc框架的一種攔截機(jī)制
2.2 使用
2.2.1 兩步走
- 實現(xiàn)HandlerInterceptor接口
- 注冊(xml或者注解 )
2.2.2 HandlerInterceptor接口
uWlpI1.png
- 實現(xiàn)HandlerInterceptor接口
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class InterceptorTest implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("preHandle");
return true; // 只有返回true才會繼續(xù)向下執(zhí)行梅惯,返回false取消當(dāng)前請求
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("postHandle");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("afterCompletion");
}
}
- 注冊
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
/**
* 注冊攔截器(掃描到攔截器)
*/
@Configuration
public class MyWebAppConfigurer extends WebMvcConfigurerAdapter {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new InterceptorTest()).addPathPatterns("/**");
super.addInterceptors(registry);
}
}
- 使用場景
攔截器可以在請求前后進(jìn)行數(shù)據(jù)攔截灌曙,類似門崗,門崗一般都有檢查身份功能,對于攔截器來說,攔截器有權(quán)限校驗功能暂论,把握請求是否可以通過,可以在里面進(jìn)行token檢驗或者其他拌禾。
性能檢測取胎。可以在請求前后進(jìn)行時間計算湃窍,檢測接口性能闻蛀。
日記記錄。攔截請求數(shù)據(jù)您市,記錄請求參數(shù)觉痛。