springmvc全局异常处理

使用springMVC框架时,因为前台的请求有些是ajax,有些是请求一个页面.而如果这些请求执行过程中有异常没有catch,会向前台页面抛出.url响应为500,可能也会将异常信息抛到前台,这既不安全也不规范.

import java.io.IOException;
import java.io.PrintWriter;

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

import org.springframework.stereotype.Component;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.SimpleMappingExceptionResolver;
@Component
public class GlobalExceptionResolver extends SimpleMappingExceptionResolver{
	@Override
	protected ModelAndView doResolveException(HttpServletRequest request,HttpServletResponse response, Object handler, Exception ex){
		//String requestType = request.getHeader("X-Requested-With");
	    response.setCharacterEncoding("UTF-8");
	    if (!(request.getHeader("accept").contains("application/json")  || 
	    		(request.getHeader("X-Requested-With")!= null && 
	    		request.getHeader("X-Requested-With").contains("XMLHttpRequest") 
	    		)
	    		)) {
                // 如果不是异步请求
                // Apply HTTP status code for error views, if specified.
                // Only apply it if we're processing a top-level request.
                System.out.println("JSP格式返回");
                return getModelAndView("error/500", ex, request);//异常返回页面
            } else {// JSON格式返回
                try {
                    PrintWriter writer = response.getWriter();
                    writer.write(ex.getMessage());
                    writer.flush();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                System.out.println("JSON格式返回" );
                return null;
            }
	           
	       }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值