首先将错误页面文件夹error放到template文件夹下
404错误页面只需配置.html文件即可,若用户路径输错,自动会调用显示
500错误是服务器短的错误,对它的处理如下所示
首先在HomeController下新建一个请求
@RequestMapping(path = "/error", method = RequestMethod.GET)
public String getError(){
return "/error/500";
}
声明一个controller配置类,对所有的Controller异常作统一处理。
@ControllerAdvice(annotations = Controller.class)
public class ExceptionAdvice {
private static final Logger logger = LoggerFactory.getLogger(ExceptionAdvice.class);
@ExceptionHandler({Exception.class})
public void handleException(Exception e, HttpServletRequest request, HttpServletResponse response) throws IOException {
logger.error("服务器发生异常:" + e.getMessage());
for(StackTraceElement element : e.getStackTrace()){
logger.error(element.toString());
}
String xRequestedWith = request.getHeader("x-requested-with");
if("XMLHttpRequest".equals(xRequestedWith)){
response.setContentType("application/plain;charset=utf-8");
PrintWriter writer = response.getWriter();
writer.write(CommunityUtil.getJSONString(1, "服务器异常"));
}else{
response.sendRedirect(request.getContextPath() + "/error");
}
}
}
这一步的处理要区分是否为异步请求,二者返回的页面是不一样的。