首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【SSM-SpringMVC(三)】Spring接入Web环境!介绍SpringMVC的拦截器和异常处理机制

【SSM-SpringMVC(三)】Spring接入Web环境!介绍SpringMVC的拦截器和异常处理机制

作者头像
用户11865655
发布2025-10-13 17:22:21
发布2025-10-13 17:22:21
2400
代码可运行
举报
文章被收录于专栏:CSDN专栏CSDN专栏
运行总次数:0
代码可运行

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. 测试拦截器的拦截效果
代码语言:javascript
代码运行次数:0
运行
复制
public class myInterceptor implements HandlerInterceptor {
    // 在目标方法之前执行
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("preHandle 执行目标方法之前执行");
        return true;// 如果该处返回false,那么往后的操作都将被拦截无法进行下一步操作
    }

    // 在目标方法执行后 视图对象返回前执行
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("postHandle 在目标方法执行后 视图对象返回前执行");

    }

    // 在流程都执行完毕后执行
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("afterCompletion 在流程都执行完毕后执行");
    }
}
代码语言:javascript
代码运行次数:0
运行
复制
<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已经定义好了该类型转换器,在使用时可以根据项目情况进行相应异常与视图的映射配置
代码语言:javascript
代码运行次数:0
运行
复制
<!--    配置简单异常处理器-->
<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. 测试异常跳转
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-05-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SpringMVC 拦截器(interceptor)的作用
    • 作用:
    • 拦截器和过滤器的区别:
    • 快速入门:
  • 异常处理:
    • 异常处理的思路:
    • 异常处理的两种方式
    • 简单异常处理器SimpleMappingExceptionResolver:
    • 自定义异常处理步骤
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档