學(xué)習(xí)的最大理由是想擺脫平庸,早一天就多一份人生的精彩;遲一天就多一天平庸的困擾。各位小伙伴,如果您:
想系統(tǒng)/深入學(xué)習(xí)某技術(shù)知識(shí)點(diǎn)…
一個(gè)人摸索學(xué)習(xí)很難堅(jiān)持,想組團(tuán)高效學(xué)習(xí)…
想寫博客但無從下手,急需寫作干貨注入能量…
熱愛寫作,愿意讓自己成為更好的人…
前言
一、攔截器
1、攔截器的配置
2、攔截器的三個(gè)抽象方法
3、多個(gè)攔截器的執(zhí)行順序
二、異常處理器
1、基于配置的異常處理
2、基于注解的異常處理
一、攔截器
1、攔截器的配置
SpringMVC中的攔截器用于攔截控制器方法的執(zhí)行
SpringMVC中的攔截器需要實(shí)現(xiàn)HandlerInterceptor
SpringMVC的攔截器必須在SpringMVC的配置文件中進(jìn)行配置:
<bean class="com.gedeshidai.interceptor.FirstInterceptor"></bean>
<ref bean="firstInterceptor"></ref>
<!-- 以上兩種配置方式都是對(duì)DispatcherServlet所處理的所有的請(qǐng)求進(jìn)行攔截 -->
<mvc:interceptor>
<mvc:mapping path="/**"/>
<mvc:exclude-mapping path="/testRequestEntity"/>
<ref bean="firstInterceptor"></ref>
</mvc:interceptor>
<!--
以上配置方式可以通過ref或bean標(biāo)簽設(shè)置攔截器,通過mvc:mapping設(shè)置需要攔截的請(qǐng)求,通過mvc:exclude-mapping設(shè)置需要排除的請(qǐng)求,即不需要攔截的請(qǐng)求
-->
2、攔截器的三個(gè)抽象方法
SpringMVC中的攔截器有三個(gè)抽象方法:
preHandle:控制器方法執(zhí)行之前執(zhí)行preHandle(),其boolean類型的返回值表示是否攔截或放行,返回true為放行,即調(diào)用控制器方法;返回false表示攔截,即不調(diào)用控制器方法
postHandle:控制器方法執(zhí)行之后執(zhí)行postHandle()
afterComplation:處理完視圖和模型數(shù)據(jù),渲染視圖完畢之后執(zhí)行afterComplation()
3、多個(gè)攔截器的執(zhí)行順序
a>若每個(gè)攔截器的preHandle()都返回true
此時(shí)多個(gè)攔截器的執(zhí)行順序和攔截器在SpringMVC的配置文件的配置順序有關(guān):
preHandle()會(huì)按照配置的順序執(zhí)行,而postHandle()和afterComplation()會(huì)按照配置的反序執(zhí)行
b>若某個(gè)攔截器的preHandle()返回了false
preHandle()返回false和它之前的攔截器的preHandle()都會(huì)執(zhí)行,postHandle()都不執(zhí)行,返回false的攔截器之前的攔截器的afterComplation()會(huì)執(zhí)行
二、異常處理器
1、基于配置的異常處理
SpringMVC提供了一個(gè)處理控制器方法執(zhí)行過程中所出現(xiàn)的異常的接口:HandlerExceptionResolver
HandlerExceptionResolver接口的實(shí)現(xiàn)類有:DefaultHandlerExceptionResolver和SimpleMappingExceptionResolver
SpringMVC提供了自定義的異常處理器SimpleMappingExceptionResolver,使用方式:文章來源:http://www.zghlxwxcb.cn/news/detail-778975.html
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<!--
properties的鍵表示處理器方法執(zhí)行過程中出現(xiàn)的異常
properties的值表示若出現(xiàn)指定異常時(shí),設(shè)置一個(gè)新的視圖名稱,跳轉(zhuǎn)到指定頁面
-->
<prop key="java.lang.ArithmeticException">error</prop>
</props>
</property>
<!--
exceptionAttribute屬性設(shè)置一個(gè)屬性名,將出現(xiàn)的異常信息在請(qǐng)求域中進(jìn)行共享
-->
<property name="exceptionAttribute" value="ex"></property>
</bean>
2、基于注解的異常處理
//@ControllerAdvice將當(dāng)前類標(biāo)識(shí)為異常處理的組件
@ControllerAdvice
public class ExceptionController {
//@ExceptionHandler用于設(shè)置所標(biāo)識(shí)方法處理的異常
@ExceptionHandler(ArithmeticException.class)
//ex表示當(dāng)前請(qǐng)求處理中出現(xiàn)的異常對(duì)象
public String handleArithmeticException(Exception ex, Model model){
model.addAttribute("ex", ex);
return "error";
}
}
總結(jié)
以上就是SpringMVC之?dāng)r截器和異常處理器的相關(guān)知識(shí)點(diǎn),希望對(duì)你有所幫助。
積跬步以至千里,積怠惰以至深淵。時(shí)代在這跟著你一起努力哦!文章來源地址http://www.zghlxwxcb.cn/news/detail-778975.html
到了這里,關(guān)于SpringMVC之?dāng)r截器和異常處理器的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!