Springmvc異常處理器及攔截器實現程式碼
阿新 • • 發佈:2020-10-09
一、異常處理器
1、實現HandlerExceptionResolver介面
package com.wuxi.exceptions; import org.springframework.web.servlet.HandlerExceptionResolver; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class RequestExceptionResolver implements HandlerExceptionResolver { @Override public ModelAndView resolveException(HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse,Object o,Exception e) { ModelAndView mv = new ModelAndView(); mv.addObject("errorMsg",e.getMessage());//錯誤資訊 mv.setViewName("error");//請求轉發的頁面 return mv; } }
2、springmvc的xml配置檔案
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!--掃描元件--> <context:component-scan base-package="com.wuxi"></context:component-scan> <!--檢視解析器--> <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/pages/"></property> <property name="suffix" value=".jsp"></property> </bean> <!--引數型別裝換器--> <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean"> <property name="converters"> <set> <bean class="com.wuxi.utils.StringToDateConverter"></bean> </set> </property> </bean> <!--配置排程器不攔截靜態資源--> <mvc:resources mapping="/css/**" location="/css/"></mvc:resources> <mvc:resources mapping="/images/**" location="/images/"></mvc:resources> <mvc:resources mapping="/js/**" location="/js/"></mvc:resources> <!--配置檔案解析器物件--> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize" value="10485760"></property> </bean> <!--異常處理器--> <bean id="requestExceptionResolver" class="com.wuxi.exceptions.RequestExceptionResolver"></bean> <!--開啟springmvc框架註解的支援--> <mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven> </beans>
二、攔截器
1、實現HandlerInterceptor介面
package com.wuxi.interceptors; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ControllerInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request,HttpServletResponse response,Object handler) throws Exception { System.out.println("controller的方法執行之前執行"); return true;//true:放行;false:攔截 } @Override public void postHandle(HttpServletRequest request,Object handler,ModelAndView modelAndView) throws Exception { System.out.println("controller的方法執行之後執行"); } @Override public void afterCompletion(HttpServletRequest request,Exception ex) throws Exception { System.out.println("jsp執行之後執行"); } }
2、springmvc的xml配置檔案
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!--掃描元件--> <context:component-scan base-package="com.wuxi"></context:component-scan> <!--檢視解析器--> <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/pages/"></property> <property name="suffix" value=".jsp"></property> </bean> <!--引數型別裝換器--> <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean"> <property name="converters"> <set> <bean class="com.wuxi.utils.StringToDateConverter"></bean> </set> </property> </bean> <!--配置排程器不攔截靜態資源--> <mvc:resources mapping="/css/**" location="/css/"></mvc:resources> <mvc:resources mapping="/images/**" location="/images/"></mvc:resources> <mvc:resources mapping="/js/**" location="/js/"></mvc:resources> <!--配置檔案解析器物件--> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize" value="10485760"></property> </bean> <!--異常處理器--> <bean id="requestExceptionResolver" class="com.wuxi.exceptions.RequestExceptionResolver"></bean> <!--攔截器--> <mvc:interceptors> <!--可配置多個攔截器,執行順序pre1->pre2->controller->post2->post1->jsp->after2->after1--> <mvc:interceptor> <!--攔截的資源路徑--> <mvc:mapping path="/**"/> <!--不攔截的資源路徑--> <!--<mvc:exclude-mapping path="/hello"/>--> <bean class="com.wuxi.interceptors.ControllerInterceptor"></bean> </mvc:interceptor> </mvc:interceptors> <!--開啟springmvc框架註解的支援--> <mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven> </beans>
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。