springMVC自定义错误处理主要是实现HandlerExceptionResolver这个接口来实现,里面方法public ModelAndView resolveException();
那么想做一个统一错误处理页面,直接在这个方法写上就可以了,实现例子如下:
package com.cwh.springmvc.Exception;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
public class CommonExceptionResolver implements HandlerExceptionResolver {
private static final Log log = LogFactory.getLog(CommonExceptionResolver.class);
@Override
public ModelAndView resolveException(HttpServletRequest arg0,
HttpServletResponse arg1, Object arg2, Exception arg3) {
log.info(arg3);
arg3.printStackTrace();
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("message",arg3.getMessage());
modelAndView.setViewName("error");
return modelAndView;
}
}
我做的统一处理页面为error.jsp这个页面,页面简单打印一下错误message:
<body>
This is a error page. <br>${message }
</body>
然后再springmvc的配置文件上加上这个异常处理的ybean:
<!-- 全局异常处理类 -->
<bean class="com.cwh.springmvc.Exception.CommonExceptionResolver"/>
接下来在代码中随便抛个错误:
if(1 ==1)throw new Exception("this is a commonExceptionResolver");
运行结果如下: