spring—拦截器和异常
SpringMVC的攔截器
SpringMVC攔截器-攔截器的作用
Spring MVC 的攔截器類似于 Servlet 開發中的過濾器 Filter,用于對處理器進行預處理和后處理。
將攔截器按一定的順序聯結成一條鏈,這條鏈稱為攔截器鏈(InterceptorChain)。在訪問被攔截的方法或字段時,攔截器鏈中的攔截器就會按其之前定義的順序被調用。攔截器也是AOP思想的具體實現。
自定義攔截器很簡單,只有如下三步:
①創建攔截器類實現HandlerInterceptor接口
②配置攔截器
<mvc:interceptors><mvc:interceptor><mvc:mapping path="/**"/><bean class="com.controller.MyInterceptor1"/></mvc:interceptor><mvc:interceptor><mvc:mapping path="/**"/><bean class="com.controller.MyInterceptor2"/></mvc:interceptor></mvc:interceptors>③測試攔截器的攔截效果
@RequestMapping(value = {"/qq2"})public ModelAndView method2(ModelAndView modelAndView){modelAndView.addObject("name","ccc");modelAndView.setViewName("success");return modelAndView;}結論:
當攔截器的preHandle方法返回true則會執行目標資源,如果返回false則不執行目標資源
多個攔截器情況下,配置在前的先執行,配置在后的后執行
攔截器中的方法執行順序是:preHandler-------目標資源----postHandle---- afterCompletion
SpringMVC異常處理機制
異常處理的思路
系統中異常包括兩類:預期異常和運行時異常RuntimeException,前者通過捕獲異常從而獲取異常信息,后者主要通過規范代碼開發、測試等手段減少運行時異常的發生。
系統的Dao、Service、Controller出現都通過throws Exception向上拋出,最后由SpringMVC前端控制器交由異常處理器進行異常處理,
異常處理兩種方式
① 使用Spring MVC提供的簡單異常處理器SimpleMappingExceptionResolver
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"><property name="defaultErrorView" value="error"/><property name="exceptionMappings"><map><entry key="java.lang.NumberFormatException" value="error"/></map></property></bean> @RequestMapping(value = {"/qq2"})public ModelAndView method2(ModelAndView modelAndView) throws Exception{String s="abc";System.out.println(Integer.parseInt(s));modelAndView.addObject("name","ccc");modelAndView.setViewName("success");return modelAndView;}② 實現Spring的異常處理接口HandlerExceptionResolver 自定義自己的異常處理器
自定義異常處理步驟
①創建異常處理器類實現HandlerExceptionResolver
public class MyExceptionResolver implements HandlerExceptionResolver {public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {ModelAndView modelAndView = new ModelAndView();modelAndView.setViewName("error");return modelAndView;} }②配置異常處理器
<bean class="com.controller.MyExceptionResolver"/>③編寫異常頁面
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Title</title> </head> <body> <h1>error</h1> </body> </html>④測試異常跳轉
總結
以上是生活随笔為你收集整理的spring—拦截器和异常的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到大南瓜是什么预兆
- 下一篇: 谁梦到老鼠生男孩了