最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解SpringMVC的攔截器參數(shù)及攔截器鏈配置

 更新時間:2022年07月05日 10:16:46   作者:夏志121  
攔截器(Interceptor)是一種動態(tài)攔截方法調(diào)用的機(jī)制,在SpringMVC中動態(tài)攔截控制器方法的執(zhí)行。本文將詳細(xì)講講SpringMVC中攔截器參數(shù)及攔截器鏈配置,感興趣的可以嘗試一下

一、攔截器參數(shù)

前置處理

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("preHandle...");
        return true;
    }

參數(shù):

■ request:請求對象

■ response:響應(yīng)對象

■ handler:被調(diào)用的處理器對象,本質(zhì)上是一個方法對象,對反射技術(shù)中的Method對象進(jìn)行再包裝

返回值:

■ 返回值為false,被攔截的處理器將不執(zhí)行

后置處理

public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("postHandle...");
    }

參數(shù):

modeAanView:如果處理器執(zhí)行完成具有返回結(jié)果,可以讀取到對應(yīng)數(shù)據(jù)與頁面信息,并進(jìn)行調(diào)整

完成后處理

public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("afterCompletion...");
    }

參數(shù):

ex:如果處理器執(zhí)行過程中出現(xiàn)異常對象,可以針對異常情況進(jìn)行單獨(dú)處理

二、攔截器鏈配置

配置第一個攔截器

@Component
//定義攔截器類,實(shí)現(xiàn)HandlerInterceptor接口
//注意當(dāng)前類必須受Spring容器控制
public class ProjectInterceptor implements HandlerInterceptor {
    @Override
    //原始方法調(diào)用前執(zhí)行的內(nèi)容
    //返回值類型可以攔截控制的執(zhí)行,true放行,false終止
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        String contentType = request.getHeader("Content-Type");
        HandlerMethod hm = (HandlerMethod)handler;
        System.out.println("preHandle..."+contentType);
        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...");
    }
 
    @Override
    //原始方法調(diào)用完成后執(zhí)行的內(nèi)容
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("afterCompletion...");
    }
}

 配置第二個攔截器

@Component
public class ProjectInterceptor2 implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("preHandle...222");
        return true;
    }
 
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("postHandle...222");
    }
 
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("afterCompletion...222");
    }
}

當(dāng)配置多個攔截器時,形成攔截器鏈

@Configuration
@ComponentScan({"com.itheima.controller"})
@EnableWebMvc
//實(shí)現(xiàn)WebMvcConfigurer接口可以簡化開發(fā),但具有一定的侵入性
public class SpringMvcConfig implements WebMvcConfigurer {
    @Autowired
    private ProjectInterceptor projectInterceptor;
    @Autowired
    private ProjectInterceptor2 projectInterceptor2;
 
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //配置多攔截器
        registry.addInterceptor(projectInterceptor).addPathPatterns("/books","/books/*");
        registry.addInterceptor(projectInterceptor2).addPathPatterns("/books","/books/*");
    }
}

 三個攔截器構(gòu)成的攔截器鏈圖例

攔截器鏈的運(yùn)行規(guī)律參照攔截器添加順序?yàn)闇?zhǔn)

當(dāng)攔截器中出現(xiàn)對原始處理器的攔截,后面的攔截器均終止運(yùn)行

當(dāng)攔截器運(yùn)行中斷,僅運(yùn)行配置在前面的攔截器的afterCompletion操作

以上就是詳解SpringMVC的攔截器參數(shù)及攔截器鏈配置的詳細(xì)內(nèi)容,更多關(guān)于SpringMVC攔截器配置的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

乐昌市| 泸溪县| 峡江县| 南漳县| 惠东县| 安泽县| 成都市| 巴彦县| 武穴市| 佛冈县| 师宗县| 镇康县| 荃湾区| 吉木萨尔县| 奉新县| 平阳县| 海盐县| 海兴县| 金昌市| 德庆县| 英德市| 洛阳市| 牙克石市| 海盐县| 延庆县| 梓潼县| 崇仁县| 高平市| 汉寿县| 迁安市| 萍乡市| 延边| 屯昌县| 金门县| 河北省| 安达市| 平南县| 兴海县| 滨海县| 肇东市| 乌拉特前旗|