欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

SpringMVC 错误处理实现示例,springmvc示例,SpringMVC中可以

来源: javaer 分享于  点击 36218 次 点评:270

SpringMVC 错误处理实现示例,springmvc示例,SpringMVC中可以


SpringMVC中可以很方便的设置错误处理,可以通过在SpringMVC配置文件AppServlet-context.xml添加名称为exceptionResolver的bean来实现错误处理,如下bean配置:

<?xml version="1.0" encoding="UTF-8"?><beans:beans xmlns="http://www.springframework.org/schema/mvc"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xmlns:beans="http://www.springframework.org/schema/beans"    xmlns:context="http://www.springframework.org/schema/context"    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">    <beans:bean id="exceptionResolver"        class="cn.outofmemory.web.CommonExceptionResolver">        <beans:property name="defaultErrorView">           <beans:value>error/500</beans:value>        </beans:property>        <beans:property name="exceptionMappings">           <beans:props>               <beans:prop key="java.sql.SQLException">errorDB</beans:prop>               <beans:prop key="java.lang.RuntimeException">errorRT</beans:prop>           </beans:props>        </beans:property>    </beans:bean>.....</beans:beans>

上面的配置中我们自定义了cn.outofmemory.web.CommonExceptionResolver类,这个类从org.springframework.web.servlet.handler.SimpleMappingExceptionResolver类继承,实现如下:

package cn.outofmemory.web;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.web.servlet.HandlerExceptionResolver;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.handler.SimpleMappingExceptionResolver;import cn.outofmemory.util.AppUser;import cn.outofmemory.util.Constants;import cn.outofmemory.util.StackTraceUtils;/** * 异常处理类 * @author byrx.net * */public class CommonExceptionResolver extends SimpleMappingExceptionResolver implements HandlerExceptionResolver {    private static final Logger logger = LoggerFactory.getLogger(CommonExceptionResolver.class);    @Override    public ModelAndView resolveException(HttpServletRequest request,            HttpServletResponse response, Object handler, Exception ex) {        String stacktrace = StackTraceUtils.getStackTrace(ex);              String requestInfo = "URL:" + request.getRequestURI();        requestInfo += " METHOD:" + request.getMethod();        HttpSession session = request.getSession();        if (session != null) {            AppUser loginUser = (AppUser) session.getAttribute(Constants.SESSION_KEY_LOGIN_USER);            if (loginUser != null) {                requestInfo += " loginUser id = " + loginUser.getUserId().toString()                         + ", userName = " + loginUser.getUserName();            }        }        logger.error("CommonErrorHandler caught error {} stacktrace {} request {}", ex.getMessage(), stacktrace, requestInfo);        return super.getModelAndView("error/500", ex);    }}

可以看到在实现中我们记录了异常的信息,请求的信息,和当前的用户信息。

相关栏目:

用户点评