国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

spring MVC 全局的異常處理

2019-11-14 20:51:34
字體:
來源:轉載
供稿:網友
sPRing MVC 全局的異常處理

1、使用SimpleMappingExceptionResolver實現異常處理

  在Spring的配置文件applicationContext.xml中增加以下內容:

<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">      <!-- 定義默認的異常處理頁面,當該異常類型的注冊時使用 -->      <property name="defaultErrorView" value="error"></property>      <!-- 定義異常處理頁面用來獲取異常信息的變量名,默認名為exception -->      <property name="exceptionAttribute" value="ex"></property>      <!-- 定義需要特殊處理的異常,用類名或完全路徑名作為key,異常也頁名作為值 -->      <property name="exceptionMappings">          <props>              <prop key="cn.basttg.core.exception.BusinessException">error-business</prop>              <prop key="cn.basttg.core.exception.ParameterException">error-parameter</prop>                <!-- 這里還可以繼續擴展對不同異常類型的處理 -->          </props>      </property>  </bean> 

注:使用SimpleMappingExceptionResolver進行異常處理,具有集成簡單、有良好的擴展性、對已有代碼沒有入侵性等優點,但該方法僅能獲取到異常信息,若在出現異常時,對需要獲取除異常以外的數據的情況不適用。

2、 實現HandlerExceptionResolver 接口自定義異常處理器

  增加HandlerExceptionResolver 接口的實現類MyExceptionHandler,代碼如下:

public class MyExceptionHandler implements HandlerExceptionResolver {        public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler,              Exception ex) {          Map<String, Object> model = new HashMap<String, Object>();          model.put("ex", ex);                    // 根據不同錯誤轉向不同頁面          if(ex instanceof BusinessException) {              return new ModelAndView("error-business", model);          }else if(ex instanceof ParameterException) {              return new ModelAndView("error-parameter", model);          } else {              return new ModelAndView("error", model);          }      }  }  

在Spring的配置文件applicationContext.xml中增加以下內容:

<bean id="exceptionHandler" class="cn.basttg.core.exception.MyExceptionHandler"/>  

注:使用實現HandlerExceptionResolver接口的異常處理器進行異常處理,具有集成簡單、有良好的擴展性、對已有代碼沒有入侵性等優點,同時,在異常處理時能獲取導致出現異常的對象,有利于提供更詳細的異常處理信息。

3 、使用@ExceptionHandler注解實現異常處理

  增加BaseController類,并在類中使用@ExceptionHandler注解聲明異常處理,代碼如下:

public class BaseController {      /** 基于@ExceptionHandler異常處理 */      @ExceptionHandler      public String exp(HttpServletRequest request, Exception ex) {                    request.setAttribute("ex", ex);                    // 根據不同錯誤轉向不同頁面          if(ex instanceof BusinessException) {              return "error-business";          }else if(ex instanceof ParameterException) {              return "error-parameter";          } else {              return "error";          }      }  }  

修改代碼,使所有需要異常處理的Controller都繼承該類,

注:使用@ExceptionHandler注解實現異常處理,具有集成簡單、有擴展性好(只需要將要異常處理的Controller類繼承于BaseController即可)、不需要附加Spring配置等優點,但該方法對已有代碼存在入侵性(需要修改已有代碼,使相關類繼承于BaseController),在異常處理時不能獲取除異常以外的數據。

4、未捕獲異常的處理

  修改web.xml文件,增加以下內容:

<!-- 出錯頁面定義 -->  <error-page>      <exception-type>java.lang.Throwable</exception-type>      <location>/500.jsp</location>  </error-page>  <error-page>      <error-code>500</error-code>      <location>/500.jsp</location>  </error-page>  <error-page>      <error-code>404</error-code>      <location>/404.jsp</location>  </error-page>    <!-- 這里可繼續增加服務器錯誤號的處理及對應顯示的頁面 --> 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 石狮市| 嫩江县| 丰都县| 鹤峰县| 广平县| 融水| 绩溪县| 石阡县| 门源| 东丽区| 得荣县| 内丘县| 普格县| 托克托县| 乾安县| 昌吉市| 阿尔山市| 隆林| 方正县| 扶绥县| 鱼台县| 南郑县| 婺源县| 苏州市| 大邑县| 榕江县| 顺平县| 丹寨县| 宝应县| 信宜市| 云梦县| 三台县| 嘉义市| 历史| 宜丰县| 游戏| 四会市| 铜川市| 耒阳市| 湘阴县| 保定市|