您的位置:首页 > 编程语言 > Java开发

springmvc全局异常处理

2018-02-07 12:55 447 查看
使用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;
}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: