拦截器
区别 | 过滤器(Filter) | 拦截器(Interceptor) |
---|---|---|
使用范围 | 是servlet规范中的一部分,任何JavaWeb工程都可以使用 | 是SpringMVC框架自己的,只能使用SpringMVC框架的功能才能用 |
拦截范围 | 在url-pattern中配置了/*之后,可以对所有要访问的资源拦截 | 在<mvc:mapping path=""/>中配置了/**之后。也可以多所有资源进行拦截,但是可以通过<mvc:exclude-mapping path=""/>标签排除不需要拦截的资源 |
HandlerInterceptor接口
- 创建拦截器类实现HandlerInterceptor接口
<pre class="hljs nginx">MyInterceptor1
</pre>
- 配置拦截器
<pre class="hljs css">spring-mvc.xml
</pre>
web.xml
- 测试拦截器的拦截效果
<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>
- 创建异常处理器类实现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进行全局的异常捕捉