SSM项目增加异常处理功能
目录
2.1.实现SpringMVC的HandlerExceptionResolver
1.通过请求返回的状态码进行异常处理
具体的状态码代表的情况,请参考。
https://blog.csdn.net/fmyzc/article/details/78048074
(注:抱歉没经过本人同意,直接引用。)
我这里只是处理了404的异常信息,可以根据项目的实际情况进行添加。
1.1.首先需要在web.xml进行配置
<!--异常页面,当没有发现的时候,会根基这个404代码返回相对应的jsp页面 -->
<error-page>
<error-code>404</error-code>
<location>/WEB-INF/jsp/error/404.jsp</location>
</error-page>
注:这里可以配置所有浏览器返回的状态码信息,可以不同的状态码信息跳转到不同的jsp文件。
1.2.在指定位置新增jsp文件
1.3.验证
启动服务,输入一个程序中没有配置的url,即返回对应的页面。
2.整体的异常捕获机制
2.1.实现SpringMVC的HandlerExceptionResolver
在介绍整体的异常捕获机制之前我们需要需要实现SpringMVC的HandlerExceptionResolver接口。
package edu.wan.handler;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@Component
public class MyHandlerExceptionResolver implements HandlerExceptionResolver {
@Override
public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
String errorMessage = null;
//首先可以对异常进行判断
if (e instanceof NullPointerException){
errorMessage = "咋回事,大兄弟,你咋还空指针了呢";
}
//返回错误页面
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("errorMessage",errorMessage);
modelAndView.setViewName("error");
return modelAndView;
}
}
2.2.验证
我修改我的Controller层的代码,好进行验证。
public @ResponseBody User findUserById(){
int id = 1;
userService = null;
return userService.findById(id);
}
启动服务调用指定的Controller,就会跳转至异常处理层,我们根据不同的异常信息,组装不同的数据封装给前端,让前端进行数据处理。