微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SpringMVC拦截器和异常处理机制

SpringMVC拦截

一、拦截器的作用

        Spring MVC 的拦截器类似于 Servlet  开发中的过滤器 Filter,用于对处理器进行预处理和后处理。

        将拦截器按一定的顺序联结成一条链,这条链称为拦截器链(Interceptor Chain)。在访问被拦截方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用拦截器也是AOP思想的具体实现。

二、拦截器和过滤器区别

区别过滤器拦截
使用范围是 servlet 规范中的一部分,任何 Java Web 工程都可以使用是 SpringMVC 框架自己的,只有使用了 SpringMVC 框架的工程才能用
拦截范围在 url-pattern 中配置了/*之后,可以对所有要访问的资源拦截只会拦截访问的控制器方法,如果访问的是 jsp,html,css,image 或者 js 是不会进行拦截

三、步骤 

  1. 创建拦截器类实现handlerinterceptor接口
  2. 配置拦截
  3. 测试拦截器的拦截效果

 四、拦截方法 

方法说明
preHandle()方法将在请求处理之前进行调用,该方法的返回值是布尔值Boolean类型的,当它返回为false 时,表示请求结束,后续的Interceptor 和Controller 都不会再执行;当返回值为true 时就会继续调用一个Interceptor 的preHandle 方法
postHandle()方法是在当前请求进行处理之后被调用,前提是preHandle 方法的返回值为true 时才能被调用,且它会在dispatcherServlet 进行视图返回渲染之前被调用,所以我们可以在这方法中对Controller 处理之后的ModelAndView 对象进行操作
afterCompletion()方法将在整个请求结束之后,也就是在dispatcherServlet 渲染了对应的视图之后执行,前提是preHandle 方法的返回值为true 时才能被调用

SpringMVC异常处理机制 

一、异常处理的思路

        系统中异常包括两类:预期异常和运行时异常RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试等手段减少运行时异常的发生。

        系统的Dao、Service、Controller出现都通过throws Exception向上抛出,最后由SpringMVC前端控制器交由异常处理器进行异常处理。

二、异常处理两种方式

1. 使用Spring MVC提供的简单异常处理器SimpleMappingExceptionResolver

<!--配置简单映射异常处理器-->
<bean class=“org.springframework.web.servlet.handler.SimpleMappingExceptionResolver”>
    <property name=“defaultErrorView” value=“error”/>   错误视图
    <property name=“exceptionMappings”>
        <map>		                    异常类型		             错误视图
            <entry key="com.itheima.exception.MyException" value="error"/>
            <entry key="java.lang.classCastException" value="error"/>
        </map>
    </property>
</bean>

2. 实现Spring的异常处理接口HandlerExceptionResolver 自定义自己的异常处理器

  1. 创建异常处理器类实现HandlerExceptionResolver
  2. 配置异常处理器
  3. 编写异常页面
  4. 测试异常跳转

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐