springMVC全局异常

Spring中如何使用HandlerExceptionResolver进行全局异常处理

  1. 配置log4jjar包
    这里写图片描述

  2. 实现HandlerExceptionResolver接口

package cn.e3mall.search.exception;

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

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
/**
 * springMVC的全局错误
 * @author yuhf
 *
 */
public class GlobalExceptionResolver implements HandlerExceptionResolver {

    //日志输出
    private static final Logger logger = LoggerFactory.getLogger(GlobalExceptionResolver.class); 

    @Override
    public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object object,
            Exception exception) {
        //打印控制台
        exception.printStackTrace();
        //写日志
        logger.debug("测试输出的日志。。。。。。。");
        logger.info("系统发生异常了。。。。。。。");
        logger.error("系统发生异常", exception);
        //发邮件、发短信
        //使用jmail工具包。发短信使用第三方的Webservice。
        //显示错误页面
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("error/exception");
        return modelAndView;
    }

}
  1. 在springMVC中配置
<?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:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd
        http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd">

    <!-- 加载配置文件 -->
    <context:property-placeholder location="classpath:conf/resource.properties" />
    <!-- 扫描包,所有的controller cn.e3mall.portal.controller.IndexController-->
    <context:component-scan base-package="cn.e3mall.search.controller" />
    <mvc:annotation-driven />
    <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/" />
        <property name="suffix" value=".jsp" />
    </bean>

    <!-- 资源映射 -->
    <!-- 只要是访问/css/** 都被映射到根目录的/css/下面 
    <mvc:resources location="/css/" mapping="css/**"></mvc:resources>
    <mvc:resources location="/js/" mapping="js/**"></mvc:resources>
     -->
    <!-- 使用dubbo发布服务 -->
    <!-- 提供方应用信息,用于计算依赖关系 -->
    <dubbo:application name="e3-search-web" />
    <!--  192.168.31.135  192.168.1.108-->
    <dubbo:registry protocol="zookeeper" address="192.168.31.40:2181" />

        <!-- 全局异常处理器 -->
    <bean class="cn.e3mall.search.exception.GlobalExceptionResolver"/>

    <!-- 声明需要暴露的服务接口-->
    <dubbo:reference interface="cn.e3mall.search.service.SearchService" id="searchService"/>
</beans>
  1. 添加log4j的配置文件
    这里写图片描述
    配置内容
#日志的权限
log4j.rootLogger=INFO,A3,STDOUT

log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout
log4j.appender.STDOUT.layout.ConversionPattern=[%p] [%l] %10.10c - %m%n

log4j.appender.A3=org.apache.log4j.RollingFileAppender
#日志地址
log4j.appender.A3.file=logs/server.log
log4j.appender.A3.MaxFileSize=1024KB
log4j.appender.A3.MaxBackupIndex=10
log4j.appender.A3.layout=org.apache.log4j.PatternLayout
log4j.appender.A3.layout.ConversionPattern=\n\n[%-5p] %d{yyyy-MM-dd HH\:mm\:ss,SSS} method\:%l%n%m%n

猜你喜欢

转载自blog.csdn.net/yuhaifei_123/article/details/79341619