当前位置: 首页 > news >正文

【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=“”/>标签排除不需要拦截的资源

快速入门:

  • 步骤:
    1. 创建拦截器实现的HandlerInterceptor接口
    2. 配置拦截器
    3. 测试拦截器的拦截效果
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>

自定义异常处理步骤

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

😍❤️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所作的一部分案例

相关文章:

  • 《Asp.net Mvc 网站开发》复习试题
  • 典籍知识问答重新生成和消息修改Bug修改
  • Linux `man` 指令终极指南
  • 【Python】UV:单脚本依赖管理
  • GitDiagram - GitHub 仓库可视化工具
  • WordPress 网站上的 jpg、png 和 WebP 图片插件
  • C++23 中的 views::stride:让范围操作更灵活
  • 5.5.1 WPF中的动画2-基于路径的动画
  • 用python清除PDF文件中的水印(Adobe Acrobat 无法删除)
  • python可视化:2025Q1北方游客量与客运流动分析3
  • 设计模式之中介者模式
  • 基于STM32、HAL库的CH342F USB转UART收发器 驱动程序设计
  • 人工智能时代:解锁职业新身份,从“认证师”到“工程师”的进阶之路
  • 电商物流管理优化:从网络重构到成本管控的全链路解析
  • 【Linux笔记】——进程信号的保存
  • JVM对象头中的锁信息机制详解
  • Linux 软件包|服务管理
  • ESP32开发入门(九):HTTP服务器开发实践
  • 请求参数:Header 参数,Body 参数,Path 参数,Query 参数分别是什么意思,什么样的,分别通过哪个注解获取其中的信息
  • 【Leetcode】系列之206反转链表
  • 这些网红果蔬正在收割你的钱包,营养师:吃了个寂寞
  • 年轻小将绽放光芒!中国短跑男女接力队直通东京世锦赛
  • 中国社科院:网文市场超430亿元,作者破3000万人
  • 庆祝上海总工会成立100周年暨市模范集体劳动模范和先进工作者表彰大会举行,陈吉宁寄予这些期待
  • 央行最新报告:积极落地5月推出的一揽子金融政策,促进经济供需平衡、物价合理回升
  • 2025中国品牌日上海践行活动启动,将建设品牌生态交互平台