SpringMVC框架学习—SpringMVC之异常的处理机制@ControllerAdvice及@ExceptionHandler以及重定向参数传递flash属性
1. 异常的处理机制
- 局部
controller
有效
@ExceptionHandler(ArithmeticException.class)
public void handleException(ArithmeticException exception, HttpServletResponse response) {
try {
response.getWriter().write(exception.getMessage());
} catch (IOException e) {
e.printStackTrace();
}
}
- 全局有效
@ControllerAdvice
public class GlobalExceptionResolver {
@ExceptionHandler(ArithmeticException.class)
public ModelAndView handleException(ArithmeticException exception, HttpServletResponse response) {
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("msg",exception.getMessage());
modelAndView.setViewName("error");
return modelAndView;
}
}
2. 转发和重定向
SpringMVC 重定向时参数传递的问题
转发
:A 找 B 借钱400,B没有钱但是悄悄的找到C借了400块钱给A,url不会变,参数也不会丢失,一个请求重定向
:A 找 B 借钱400,B 说我没有钱,你找别人借去,那么A 又带着400块的借钱需求找到C,url会变,参数会丢失需要重新携带参数,两个请求
@RequestMapping("/handleRedirect")
public String handleRedirect(String name, RedirectAttributes redirectAttributes) {
redirectAttributes.addFlashAttribute("name", name);
return "redirect:handle01";
}