1. 程式人生 > >SpringMVC自定義全域性異常處理器

SpringMVC自定義全域性異常處理器

  • 第一步:自定義異常類
package com.cyn.ssm.exception;

/*
 * 自定義異常類
 */
public class MyException extends Exception {
	
	//錯誤訊息
	private String msg;

	public MyException() {
		super();
	}
	public MyException(String msg) {
		super();
		this.msg = msg;
	}
	public String getMsg() {
		return msg;
	}
	public void setMsg(String msg) {
		this.msg = msg;
	}
	
}
  • 第二步:自定義全域性異常處理器
package com.cyn.ssm.exception;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;

/*
 * 自定義全域性異常處理器
 */
public class UserException implements HandlerExceptionResolver {

	@Override
	public ModelAndView resolveException(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2,
			Exception e) {
		//記錄日誌
		e.printStackTrace();
		//錯誤訊息 
		String msg = "很抱歉,系統發生異常了,請聯絡管理員";
		
		//如果為自定義異常,顯示自定義訊息
		if(e instanceof MyException){
			msg = ((MyException) e).getMsg();
		}
		//響應使用者錯誤提示
		ModelAndView model = new ModelAndView();
		//返回錯誤訊息
		model.addObject("msg", msg);
		//響應錯誤提示頁面
		model.setViewName("404");
		return model;

	}

}
  • 第三步:在springmvc的核心配置檔案中配置異常處理器----目的是將編寫的異常處理器通過注入spring容器中來告知springmvc
    <!-- 配置全域性異常處理器 -->
    <bean class="com.cyn.ssm.exception.UserException"/>
  • 第四步:編寫異常資訊的提示介面404.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>異常提示</title>
</head>
<body>
	${msg}
</body>
</html>
  • 第五步:測試