内容正文:
第13章异常散处理和拦截器
·全局异常处理器
·拦截器定义与配置
13.1全局异常处理器
13.1.1 HandlerExceptionResolver
13.1.2 @ExceptionHandler
13.1.3 @ControllrAdvice
初心至善匠心育人,
13.1全局异常处理器
·项目开发的过程中,进行异常处理往往是项目开发流程中不可或缺的一部分。因
为在程序发生异常时,不能把一些只有程序员才能看懂的错误代码抛给用户看,
所以在这时进行统一的异常处理,展现一个较为友好的错误页面就显得十分有必
要了。跟其他MVC框架一样,SpringMVC也有自己的异常处理机制。
SpringMVC提供的异常处理主要有两种方式,一种是直接实现自己的
HandlerExceptionResolver接口,当然这也包括使用Spring已经为我们提供好的
SimpleMappingExceptionResolverDefaultHandlerExceptionResolver;
一种是使用注解的方式实现一个专门用于处理异常的Controller即
@ExceptionHandleri注解。除此,之外还有第三种处理方式,使用
@ControllerAdvice注解。下面我们将通过代码来展示异常处理器的应用.
13.1全局异常处理器
13.1.1 HandlerExceptionResolver
·HandlerExceptionResolverf作为异常处理接口,它的内部有一个方法
resolveException方法,提供了对异常进行解析的操作,该方法的参数说明如表
所示。
参数
说明
HttpServletRequet
滑求时囊
HutpServletResponse
南应对装
Object
伞就馆惠
Exception
养常信息对桑
·resolveException方法中的参数及具体用法的代码实现如书中例13-1所示。
·注意:该类需要在springmvc的配置文件中进行配置:
·class="com.qfedu.resolver.Spring ExceptionResolver"></bean>,否则出现
异常时找不到对应的类。
13.1全局异常处理器
13.1.1 HandlerExceptionResolver
·接下来实现控制器的代码编写,完成异常处理,案例将采用简单的数学运算进行
演示,把0作为被除数,因此在映射方法中当程序执行到1/0时会主动抛出异常。
控制器中的具体代码如书中例13-2所示。
·完成上述操作后再编写一个用来统一展示错误的error..jsp页面,完成全局异常在
浏览器中的展现,页面的代码如书中例13-3所示。
·其实只要是HandlerExceptionResolver接口的实现类即可实现全局异常的处理,
无论是自定义还是SimpleMapping ExceptionResolver、
DefaultHandlerExceptionResolver都可以实现全局异常处理。
13.1全局异常处理器
13.1.2 @ExceptionHandler
·@ExceptionHandler注解用在控制器内,进行异常处理的方法必须与出错的方法
在同一个Controller!里面。
·创建一个MyControllert02类,具体代码如书中例13-4所示。
13.1全局异常处理器
13.1.3 @ControllerAdvice
·@ExceptionHandleri注解,需要进行异常处理的方法必须与出错的方法在同一个
Controller里面。如果在代码加入了@ControllerAdvice,则不需要必须在同一
个controller中了,这也是Spring3.2带来的新特性。从名字上可以看出注解的
大体意思是控制器增强。也就是说,@controllerAdvice+@
ExceptionHandler也可以实现全局的异常捕捉。
·创建一个MyController(03类,具体代码如书中例13-5所示。
·通过@Controlleradvice+@ExceptionHandleri注解实现全局的异常捕捉的代
码。创建一个GlobalExceptionHandler类,具体代码如书中例13-6所示。
·@注意:GlobalExceptionHandler类需要通过lOC创建对象,在
springMVC-config.xml配置文件中进行装配,配置文件
springMVC-config.xml中的内容如书中例13-7所示。
13.2拦截器定义与配置
13.2.1
HandlerInterceptor接▣
13.2.2
WebRequestIntereptor接口
目录
Contents
13.2.3