springMVC global exception
How to use HandlerExceptionResolver for global exception handling in Spring
Configure log4jjar package
Implement the HandlerExceptionResolver interface
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;
}
}
- Configure in 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>
- Add log4j configuration file
configuration content
#日志的权限
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