教面試官ReentrantLock源碼
963
2025-04-03
1 -的配置
SpringMVC中的-用于攔截控制器方法的執(zhí)行
SpringMVC中的-需要實現(xiàn)HandlerInterceptor
SpringMVC的-必須在SpringMVC的配置文件中進行配置
2 -的三個抽象方法
preHandle:控制器方法執(zhí)行之前執(zhí)行preHandle(),其boolean類型的返回值表示是否攔截或放行, 返回true為放行,即調(diào)用控制器方法;返回false表示攔截,即不調(diào)用控制器方法 postHandle:控制器方法執(zhí)行之后執(zhí)行postHandle() afterComplation:處理完視圖和模型數(shù)據(jù),渲染視圖完畢之后執(zhí)行afterComplation()
3 多個-的執(zhí)行順序
a>若每個-的preHandle()都返回true 此時多個-的執(zhí)行順序和-在SpringMVC的配置文件的配置順序有關(guān): preHandle()會按照配置的順序執(zhí)行,而postHandle()和afterComplation()會按照配置的反序執(zhí)行 b>若某個-的preHandle()返回了false preHandle()返回false和它之前的-的preHandle()都會執(zhí)行,postHandle()都不執(zhí)行,返回false的-之前的-的afterComplation()會執(zhí)行
@Component public class FirstInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("FirstInterceptor-->preHandle"); return true; // 是否進行放行,true 代表放行 } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println("FirstInterceptor-->postHandle"); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println("FirstInterceptor-->afterCompletion"); } }
異常處理器
1 基于配置的異常處理
SpringMVC提供了一個處理控制器方法執(zhí)行過程中所出現(xiàn)的異常的接口:HandlerExceptionResolver
HandlerExceptionResolver接口的實現(xiàn)類有:DefaultHandlerExceptionResolver和
SimpleMappingExceptionResolver
SpringMVC提供了自定義的異常處理器SimpleMappingExceptionResolver
2 基于注解的異常處理
SpringMVC提供了一個處理控制器方法執(zhí)行過程中所出現(xiàn)的異常的接口:HandlerExceptionResolver
HandlerExceptionResolver接口的實現(xiàn)類有:DefaultHandlerExceptionResolver和SimpleMappingExceptionResolver
2.1 SpringMVC提供了自定義的異常處理器SimpleMappingExceptionResolver
2.2 基于注解的異常處理
//@ControllerAdvice將當前類標識為異常處理的組件 @ControllerAdvice public class ExceptionController { //@ExceptionHandler用于設(shè)置所標識方法處理的異常 @ExceptionHandler(value = {ArithmeticException.class, NullPointerException.class}) //ex表示當前請求處理中出現(xiàn)的異常對象 public String testException(Exception ex, Model model){ model.addAttribute("ex", ex); // 默認放在請求域里面 return "error"; } }
index
success error
@Controller public class TestController { @RequestMapping("/**/testInterceptor") // ANT風(fēng)格,/**/多層 public String testInterceptor(){ return "success"; } @RequestMapping("/testExceptionHandler") public String testExceptionHandler(){ System.out.println(1/0); return "success"; } }
Java MVC Spring
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。