第一种,使用xml注解的方式来为SimpleMappingExceptionResolver这个类注入属性,来设置当有异常发生时进行返回的视图,也可以对某一个异常进行单独处理,具体做法如下:
在IOC容器中定义一个bean ,类名是SimpleMappingExceptionResolver。我们可以在其bean中注入属性defaultErrorView这个属性代表的是默认的错误视图,换句话说就是如果只配置这个属性那么无论发生任何异常它就会返回这个属性所对应的value值的视图(在这里因为我配置了试图解析器所以我这里只是写了视图的名称而已)。
如果想要返回自定义异常的视图可以使用属性exceptionMappings因为他是一个Properties类型的变量,所以这里我们使用<props></props>标签来为这个属性注入值,就是为对应的异常类型返回与之相对应的视图。
第二种,来定义一个类让其实现HandlerExceptionResolver接口,并实现他的方法resolveException(),通过这个方法可以为发生的异常进行处理,返回对应的视图。
具体如下:
在实现了HandlerExceptionResolver接口的类中,调用ModelAndView对象的setViewName方法来设置发生异常后返回的视图名称,最后只需要在ioc容器中为这个类生成对应的bean就好了
第三种,使用@ExceptionHandler注解:在使用该注解的方法中,来对发生的异常进行视图处理。这种方法是最为简单的一种,它看起来十分的方便,操作起来也十分容易。就是在控制器中定义一个方法,在该方法的上面加一个@ExceptionHandler注解,如果这个注解不加任何参数代表的是一切异常都会按照这个注解的方法中所定义的视图资源进行返回。如果想要返回自定义类型的异常的话,只需要在注解中加入被处理的异常的类类型即可(也就是 类名.class 的形式),所以说是十分的方便的,当然我们也可以让控制器继承一个实现了HandlerExceptionResolver接口的类,然后这个控制器就会按照该类处理异常的方式进行异常的处理。