异常处理器
异常处理器
在Spring MVC中,提供了一个全局异常处理器,用于对系统中出现的异常进行统一的处理。在一般的系统中,DAO,Service及Controller层都出现的异常都以“throws Exception”的形式向上层抛出,最后都会由Spring MVC的前端控制器DispatcherServlet统一由全局异常处理器进行异常处理。
对于预期的异常,通常要定义一个自定义异常类,该类用于在发生异常后,存储异常信息,最终交给全局异常处理器处理该异常。
第一步:自定义一个UserException
public class UserException extends Exception{//异常信息private String message;public UserException(String message){supper(message);= message;}public String getMessage(){return message;}public void setMessage(String message){ = message;}
}
第二步:定义全局异常处理器,该处理器主要实现的功能是:
第一:解析出异常,判断异常属于哪种异常类
第二:如果该异常属于系统自定义的异常,直接取出其异常信息,并在错误页面展示,若非自定义异常,则构造一个自定义的异常类型,信息为未知错误。
第三:构建异常信息展示视图信息,将异常信息绑定到异常界面的Model域中,然后跳转到相关的异常信息显示界面。
全局异常处理器这里命名为UserExceptionResolver,该异常类需要实现Srping MVC提供的HandlerExceptionResolver接口
public class UserExceptionResolver implements HandlerExceptionResolver{@Overridepublic ModelAndView resolveException(HttpServletRequest request,HttpServletRespe respe,Object handler,Exception ex){//1:解析出异常类型UserException userException =null;if(ex instanceof UserException){//2:若该异常属于系统自定义异常,则直接取出异常信息,在错误页面展示userException =(UserException)ex;}else{//:若非自定义异常,则构造一个自定义的异常类型(信息为未知错误);userException = new UserException(未知错误);}//错误信息String message = userException.getMessage();ModelAndView modelAndView = new ModelAndView();//将错误信息传到界面modelAndView.addObject(message,message);//指向到错误界面modelAndView.setViewame(/errorPage/userError);return modelAndView;}}
小贴士:定义全局异常处理器需要实现HandlerExceptionResolver接口并实现resolverException方法。
第三步:定义异常显示界面userError.jsp
<%@ page language=java contentType=text/html; charset=UTF-8pageEncoding=UTF-8%>
<!DOCTYPE html PUBLIC -//WC//DTD HTML 4.01 Transitional//E .dtd>
<html>
<head><title>提示</title>
</head>
<body><img src=${pageContext.}/image/error.jsp with=50px;height=50px;/></br>抱歉,访问异常,具体信息如下:</br><h2><font color=red>${message}</font></h2></br>
</body>
</html>
第四步:验证自定义异常抛出和全局异常处理器的作用。
@RequestMapping(login)
public String login(Model model,@Valid User user,BindingResult result) throws UserException{//查询用户是否为黑名单用户boolean isBlackUser = checkBlackList(user);if(isBlackUser){throw new UserException(无权访问!);}//...其他逻辑代码return /user/loginSuccess;
}
private boolean checkBlackList(User user){String blackArray[] = {jack,tom,jean}; for(int i=0;i<blackArray.length;i){if(user.getUsername().equals(blackArray[i]));return true;}}return false;
}
第五步:在springmvc中将定义好的全局异常处理器配置进去
<bean class=UserExceptionResolver></bean>
#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
上一篇:融云相关问题
下一篇:fileUpload上传视频
推荐阅读
留言与评论(共有 8 条评论) |
本站网友 流量交换联盟 | 17分钟前 发表 |
若非自定义异常,则构造一个自定义的异常类型(信息为未知错误);userException = new UserException(未知错误);}//错误信息String message = userException.getMessage();ModelAndView modelAndView = new ModelAndView();//将错误信息传到界面modelAndView.addObject(message | |
本站网友 信和财富 | 29分钟前 发表 |
HttpServletRespe respe | |
本站网友 验证码大全 | 22分钟前 发表 |
对于预期的异常,通常要定义一个自定义异常类,该类用于在发生异常后,存储异常信息,最终交给全局异常处理器处理该异常 | |
本站网友 醋蛋液的做法 | 14分钟前 发表 |
Service及Controller层都出现的异常都以“throws Exception”的形式向上层抛出,最后都会由Spring MVC的前端控制器DispatcherServlet统一由全局异常处理器进行异常处理 | |
本站网友 ghz是什么意思 | 1分钟前 发表 |
全局异常处理器这里命名为UserExceptionResolver,该异常类需要实现Srping MVC提供的HandlerExceptionResolver接口 public class UserExceptionResolver implements HandlerExceptionResolver{@Overridepublic ModelAndView resolveException(HttpServletRequest request | |
本站网友 验孕棒不准六种情况 | 26分钟前 发表 |
@Valid User user | |
本站网友 优尚美家 | 10分钟前 发表 |
@Valid User user |