【SSM-SpringMVC(三)】Spring接入Web环境!介绍SpringMVC的拦截器和异常处理机制
SpringMVC 拦截器(interceptor)的作用
作用:
- SpringMVC 的拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理后处理
- 将拦截器按一定的顺序联结成一条链,这条链拦截器链(Interceptor Chain).在访问被拦截的方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用。拦截器也是AOP思想的具体实现
拦截器和过滤器的区别:
区别 | 过滤器(Filter) | 拦截器(Interceptor) |
---|---|---|
使用范围 | Servlet规范中的一部分,任何Java Web工程都可以使用 | SpringMVC框架自己的,只有集成了SpringMVC框架的工程才能使用 |
拦截范围 | 在url-pattern中配置了/*之后,可以对所有要访问的资源拦截 | 在<mvc:mapping path=“”/>中配置了/**之后,也可以对所有资源进行拦截,但是可以通过<mvc:exclude-mapping path=“”/>标签排除不需要拦截的资源 |
快速入门:
public class myInterceptor implements HandlerInterceptor {// 在目标方法之前执行@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println("preHandle 执行目标方法之前执行");return true;// 如果该处返回false,那么往后的操作都将被拦截无法进行下一步操作}// 在目标方法执行后 视图对象返回前执行@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println("postHandle 在目标方法执行后 视图对象返回前执行");}// 在流程都执行完毕后执行@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println("afterCompletion 在流程都执行完毕后执行");}
}
<mvc:interceptors><!-- 设置一个拦截器 --><mvc:interceptor><mvc:mapping path="/**"/><!-- 拦截资源文件地址 --><bean class="com.DemoTestNode.myInterceptor"></bean><!-- 指定拦截器类 --></mvc:interceptor>
</mvc:interceptors>
异常处理:
异常处理的思路:
- 系统中移除包括两类:预期异常和运行时异常RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试等手段减少运行时异常的发送
- 系统的Dao、Service、Controller出现都通过throws Wxception向上抛出,最后有SpringMVC前端控制器交由异常处理器进行异常处理。
异常处理的两种方式
- 使用SpringMVC提供的简单异常处理器SimpleMappingExceptionResolver
- 实现Spring的异常处理接口HandlerExceptionResolver自定义自己的异常处理器
简单异常处理器SimpleMappingExceptionResolver:
- SpringMVC已经定义好了该类型转换器,在使用时可以根据项目情况进行相应异常与视图的映射配置
<!-- 配置简单异常处理器-->
<bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"><property name="defaultErrorView" value="error(视图.jsp)"></property><property name="exceptionMappings"><map><entry key="java.lang.NullPointerException" value="404error(视图.jsp)"></entry></map></property>
</bean>
自定义异常处理步骤
- 创建异常处理器类实现HandlerExceptionResolver
- 配置异常处理器
- 编写异常页面
- 测试异常跳转
😍❤️SSM 专栏前篇
- 【SSM-Spring(一)】初上手Spring?别急!从最底部开始学习Spring吧!从Bean开始!本文介绍Spring程序的开发、Bean的声明周期与依赖注入概念
- 【SSM-Spring(二)】初上手Spring?别急!从最底部开始学习Spring吧!Spring连接数据库、注解开发、Junit测试
- 【SSM-SpringMVC(一)】Spring接入Web环境!本篇开始研究SpringMVC的使用!本文介绍了SpringMVC,以及SpringMVC的执行流程和常用注解解析
- 【SSM-SpringMVC(二)】Spring接入Web环境!本篇开始研究SpringMVC的使用!SpringMVC数据响应和获取请求数据
💕👉博客专栏
-
英语专栏-涵盖绝大多数的英语语法~~基于B站英语兔视频所作的学习笔记
-
Golang专栏-包含基础、Gin、Goam等知识
-
云原生专栏-包含k8s、docker等知识
-
从0开始学习云计算-华为HCIP证书
-
JUC专栏-带你快速领悟JUC的知识!
-
JVM专栏-深入Java虚拟机,理解JVM的原理
-
基于Java研究 数据结构与算法-包含贪心算法、加权图、最短路径算法等知识
-
Docker专栏-上手热门容器技术Docker
-
SpringBoot专栏-学习SpringBoot快速开发后端
-
项目管理工具的学习-设计技术:Maven、Git、Gradle等相关管理工具
-
JavaSE-全面了解Java基础
-
JS专栏-使用JS作的一部分实例~
-
使用CSS所作的一部分案例