1. 程式人生 > >springMVC3學習(八)--全局的異常處理

springMVC3學習(八)--全局的異常處理

== err println url html ror 不同的 處理程序 源代碼下載

在springMVC的配置文件裏:

<bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
    <property name="defaultErrorView">
	    <value>/error</value><!-- 表示當拋出異常但沒有在exceptionMappings裏面找到相應的異常時 返回名叫error的視圖-->
    </property>
    <property name="defaultStatusCode" value="404"/><!-- 表示在發生異常時默認的HttpServletResponse的返回碼,默認是404-->
    <property name="statusCodes"><!-- 定義在發生異常時視圖跟返回碼的相應關系 -->
	    <props>
	        <!-- 表示在發生NumberFormatException時返回視圖number,然後這裏定義發生異常時視圖number相應的HttpServletResponse的返回碼是500 -->
	        <prop key="number">500</prop>
	        <prop key="null">503</prop>
	    </props>
    </property>
    <property name="exceptionMappings">
  	    <props>
	        <prop key="NumberFormatException">number</prop><!-- 表示當拋出NumberFormatException的時候就返回名叫number的視圖-->
	        <prop key="NullPointerException">null</prop>
	    </props>
    </property>
</bean> 

這裏基本的類是SimpleMappingExceptionResolver類,和他的父類AbstractHandlerExceptionResolver類。

你也能夠實現HandlerExceptionResolver接口,寫一個自己的異常處理程序.

通過SimpleMappingExceptionResolver我們能夠將不同的異常映射到不同的jsp頁面(通過exceptionMappings屬性的配置)。

同一時候我們也能夠為全部的異常指定一個默認的異常提示頁面(通過defaultErrorView屬性的配置),

假設所拋出的異常在exceptionMappings中沒有相應的映射,則Spring將用此默認配置顯示異常信息。


Login.java測試類

import java.io.File;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class Login {
	@RequestMapping("/null")
	public void testNullPointerException() {
	     File file = null;
	     // 空指針異常。返回定義在SpringMVC配置文件裏的null視圖
	     System.out.println(file.getName());
	}

	@RequestMapping("/number")
	public void testNumberFormatException() {
	     // NumberFormatException,返回定義在SpringMVC配置文件裏的number視圖
	     Integer.parseInt("abc");
	}

	@RequestMapping("/default")
	public void testDefaultException() {
		if (1 == 1)
		  // 因為該異常類型在SpringMVC的配置文件裏沒有指定,所以就會返回默認的exception視圖
		  throw new RuntimeException("Error!");
	}
}

顯示錯誤的jsp頁面(已error.jsp為例)

<body>
    <%
        Exception e = (Exception)request.getAttribute("exception");
        out.print(e.getMessage());
    %>
</body>

測試URL: http://localhost:8080/spring_exception/null

http://localhost:8080/spring_exception/number

http://localhost:8080/spring_exception/default

項目源代碼下載:http://download.csdn.net/detail/itmyhome/7382465




springMVC3學習(八)--全局的異常處理