十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
目錄

概述
攔截器和過濾器的區(qū)別
實(shí)現(xiàn)
攔截器流程圖
攔截器(Interceptor)是一種動態(tài)攔截方法調(diào)用的機(jī)制,在SpringMVC中動態(tài)攔截控制器方法的執(zhí)行。
攔截器和過濾器的區(qū)別1)歸屬不同:Filter屬于Servlet技術(shù),Interceptor屬于SpringMVC技術(shù) 。
2)攔截內(nèi)容不同:Filter對所有訪問進(jìn)行增強(qiáng),Interceptor僅針對SpringMVC的訪問進(jìn)行增強(qiáng)。
實(shí)現(xiàn)1)定義攔截器類,實(shí)現(xiàn)HandlerInterceptor接口,接口中有三個重要的方法
preHandle:原始方法調(diào)用前執(zhí)行的內(nèi)容,返回值類型可以攔截控制的執(zhí)行,true放行,false終止
postHandle:原始方法調(diào)用后執(zhí)行的內(nèi)容
afterCompletion:原始方法調(diào)用完成后執(zhí)行的內(nèi)容
@Component
public class ProjectInterceptor implements HandlerInterceptor {
//原始方法調(diào)用前執(zhí)行的內(nèi)容
//返回值可以定義攔截控制的執(zhí)行,true放行,false終止
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("preHandle.....");
return true;
}
@Override
//原始方法調(diào)用后執(zhí)行的內(nèi)容
public void postHandle(HttpServletRequest request, HttpServletResponse
response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("postHandle...");
}
//原始方法調(diào)用完成后執(zhí)行的方法
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("afterCompletion.....");
}
//aop通知類型 環(huán)繞通知
}2)配置加載攔截器
@Configuration
@ComponentScan({"com.ucloud.controller"})
@EnableWebMvc
//也可以繼承WebMvcConfigurationSupport類
//WebMvcConfigurer接口可以簡化開發(fā),但是有一定的侵入性
public class SpringMvcSupport implements WebMvcConfigurer {
@Autowired
private ProjectInterceptor projectInterceptor;
//添加攔截器
public void addInterceptors(InterceptorRegistry registry){
registry.addInterceptor(projectInterceptor).addPathPatterns("/books","/books/*");
}
}攔截器流程圖
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧