spring mvc 之异常处理

我们通过简易用户管理系统中的登录功能演示Spring MVC的异常处理,只是使用用户登录功能模拟Spring mvc异常的处理。实际上,登录模块的设计并非如此的简单。

1、在UserController中,编写用户登录方法,代码如下:

@RequestMapping(value="/login",method=RequestMethod.POST)
 public String login(String username,String password,HttpSession session){//此处将HttpSession做为参数
  if(!users.containsKey(username)){
     throw new UserException("用户不存在!");//用户不存在,抛出异常
  }
  User u = users.get(username);
  if(!u.getPassword().equals(password)){
   throw new UserException("密码不正确!");//密码错误
  }
  session.setAttribute("loginUser", u);
  return "redirect:/user/users";
 }

 在上面的方法中,将HttpSession作为参数,Spring会自动的将其注入,用户登录成功后,将用户信息保存到Session中。

2、创建UserException类,并继承RuntimeException类。

3、创建login.jsp登录页面



 4、发布项目,进行登录操作。我们使用不存在的用户进行登录,此时页面会抛出异常。如下图所示:

 

 

 5、我们在UserController方法中,添加局部异常处理方法

@ExceptionHandler(value={UserException.class})//value可以是数组
 public String handlerException(UserException e ,HttpServletRequest req){
  req.setAttribute("e", e);//将异常信息放入请求中
  return "error";
 }

6、异常信息视图界面:



 7、运行效果如图:



以上只是局部异常处理,意味着仅仅只能处理控制中的异常。那么全局异常该如何处理呢?针对项目当中出现大量的异常,采用全局异常处理方式是常用的手法。

8、在Welcome-servlet.xml中配置全局异常处理,同时,项目的目录结构如下:



 

 上面图片的意思是:如果发现UserException抛出异常,则到error页面。

9、将UserCotroller中的局部异常注释掉,发布项目,在登录页面输出一个不存在的用户,得到效果如下:


 10、error.jsp,错误视图处理页面代码修改如下:

<body>
发现错误:
<h1>${exception.message}</h1>
</body>

至此,一个简单的spring mvc异常处理方式,已经完成。

 

<!-- 将静态文件指定到某个特殊的文件夹中统一处理 -->
 <mvc:resources location="/resources/" mapping="/resources/**"/>

以上代码段需要添加在welcome-servlet.xml文件中,其目的是spring mvc中提供了一种统一处理静态资源的方式。如果不添加,则页面引入的css等静态资源无法起作用。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值