拦截器

区别 过滤器(Filter) 拦截器(Interceptor)
使用范围 是servlet规范中的一部分,任何JavaWeb工程都可以使用 是SpringMVC框架自己的,只能使用SpringMVC框架的功能才能用
拦截范围 在url-pattern中配置了/*之后,可以对所有要访问的资源拦截 在<mvc:mapping path=""/>中配置了/**之后。也可以多所有资源进行拦截,但是可以通过<mvc:exclude-mapping path=""/>标签排除不需要拦截的资源

HandlerInterceptor接口

  1. 创建拦截器类实现HandlerInterceptor接口
<pre class="hljs nginx">MyInterceptor1
</pre>

  1. 配置拦截器
<pre class="hljs css">spring-mvc.xml
</pre>

web.xml

  1. 测试拦截器的拦截效果
<pre class="hljs nginx">TargetController
</pre>

index.jsp

WebRequestInterceptor接口

拦截链

异常处理

SimpleMappingExceptionResolver

web.xml

<pre class="hljs css">applicationContext.xml
</pre>

<pre class="hljs css">spring-mvc.xml
</pre>

<pre class="hljs css">DemoServiceImpl.java
</pre>

error.jsp

<pre class="hljs css">DemoController.java
</pre>

HandlerExceptionResolver接口

web.xml

<pre class="hljs css">applicationContext.xml
</pre>

  1. 创建异常处理器类实现HandlerExceptionResolver
<pre class="hljs css">MyException.java
</pre>

<pre class="hljs css">DemoController.java
</pre>

<pre class="hljs css">MyExceptionResolver.java
</pre>

2. 配置异常处理器

<pre class="hljs css">spring-mvc.xml
</pre>

3. 编写异常页面

error.jsp

注解实现

@ExceptionController

作用:用在控制器内,进行异常处理的方法必须与出错的方法在同一个Controller里面

@ControllerAdvice

@ControllerAdvice+@ExceptionController进行全局的异常捕捉