springMVC——異常處理

1 前言

springMVC 通過 HandlerExceptionResolver 處理程序的異常,包括 handler 映射、數據綁定、目標方法執行時發生的異常,用戶可以通過配置 SimpleMappingExceptionResolver 自定義指定異常時跳轉到指定頁面。

在控制層中可以定義不同異常跳轉到不同的頁面,但是如果需要將同一類異常跳轉到同一個頁面中,控制層中所有能發生該類異常的地方都需要定義,這樣會增加代碼量。在配置文件中,只需配置一下,就能實現所有同類異常跳轉到同一個頁面。

2 實驗環境

(1)導入 JAR 包

(2)工作目錄

 (3)配置文件

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> 
  <!-- 首頁網頁 -->
  <welcome-file-list>
  	<welcome-file>/WEB-INF/view/index.jsp</welcome-file>
  </welcome-file-list>
  
  <!-- 配置核心(前端)控制器 DispatcherServlet -->
  <servlet>
  	<servlet-name>dispatcherServlet</servlet-name>
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  	<init-param>
  		<!-- 加載IOC容器配置文件 -->
  		<param-name>contextConfigLocation</param-name>
  		<param-value>classpath:applicationContext.xml</param-value> 
  	</init-param>
  </servlet>
  <servlet-mapping>
  	<servlet-name>dispatcherServlet</servlet-name>
  	<url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

applicationContext.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"
	xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">	
	<!-- 掃描組件,將加@Controller註解的類作爲SpringMVC的控制層 -->
	<context:component-scan base-package="com.test"></context:component-scan>
	
	<!-- 配置視圖解析器 -->
 	<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/view/"></property>
		<property name="suffix" value=".jsp"></property>
	</bean>	

	<!-- 自定義異常處理 -->	
	<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
		<property name="exceptionMappings">
			<props>
				<prop key="java.lang.ArithmeticException">error</prop>
			</props>
		</property>
	</bean>
</beans>

注意:error 指將要跳入的頁面,即 error.jsp

3 案例分析

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<title>首頁</title>
</head>
<body>	
	<a href="test">測試異常</a>
</body>
</html>

Test.java

package com.test;
 
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class Test {
	
	@RequestMapping(value="test")
	public String test(){
		System.out.println(1/0);
		return "success";
	}
}

注意:這裏有個被零整除算術異常 

success.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<title>成功</title>
</head>
<body>	
	SUCCESS
</body>
</html>

error.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<title>異常</title>
</head>
<body>	
	異常信息:${exception}
</body>
</html>

注意:exception 作用域中存放異常信息。

在地址欄輸入:http://localhost:8080/SpringMVC/,顯示如下:

 點擊【測試異常】,跳入 error.jsp 頁面,如下:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章