SpringMVC(12):异常处理(局部异常和全局异常)

18/1/15

    SpringMVC 通过 HandlerExceptionResolver 处理程序异常,包括:处理器异常、数据绑定异常、处理器执行发生的异常。HandlerExceptionResolver 仅仅只有一个接口方法。当发送异常时,SpringMVC 调用 resolveException () 方法,并转到ModelAndView 对应的视图中,作为一个异常报告页面反馈给用户。对于异常,一般分为局部和全局。

一、局部异常处理

【1】修改UserController.java,添加以下方法:

	//局部异常
	@RequestMapping(value="exlogin",method=RequestMethod.GET)
	public String exlogin(@RequestParam String userName,@RequestParam String userPassword) throws SQLException{
		User user = userService.login(userName, userPassword);
		if(null == user){
			throw new RuntimeException("用户名或者密码不正确!");
		}
		return "redirect:frame";
	}
	
	//局部异常
	@ExceptionHandler(value={RuntimeException.class})
	public String handlerException(RuntimeException e, HttpServletRequest req){
		req.setAttribute("e", e);
		return "error";
	}


exlogin方法处理用户登录请求,若登录失败,则抛出一个RuntimeException ,它会被处于同一个处理器类中的handlerException 方法捕获。@ExceptionHandler 可以指定多个异常,这里示例指定一个。handlerException 方法:把异常提示信息放入HttpServletRequest 对象中,并返回逻辑视图名error。

 

【2】在login.jsp 添加${e.message};

 

二、全局异常处理

【1】注释掉局部异常,然后在springmvc-servlet.xml 配置文件配置全局异常:

 

  	<!-- 全局异常处理 -->
  	<bean class="org.springframework.web.servlet.handler
  				.SimpleMapperExceptionResolver">
  		<property name="exceptionMappings">
  			<props>
  				<prop key="java.lang.RuntimeException">error</prop>
  			</props>
  		</property>
  	</bean>
  	


全局异常用 SimpleMapperExceptionResolver 来实现,它将异常类名映射为视图名,即发生异常时,会使用对应的视图报告异常。

 

【2】在login.jsp 添加${exception.message};

 

【3】运行结果:

 


欢迎扫二维码关注公众号,获取技术干货

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值