首页 > 其他分享 >SpringMVC中的拦截器Interceptor实现

SpringMVC中的拦截器Interceptor实现

时间:2024-03-23 11:44:06浏览次数:24  
标签:拦截器 SpringMVC Spring 配置 实现 MVC Interceptor

  之前的文章介绍过两个拦截器(分别参考MyBatis功能点之二(2):从责任链设计模式的角度理解插件实现技术Spring AOP之源码分析)。本文介绍的拦截器实现与它们有何异同呢?

  在Spring MVC拦截器(Interceptor)使用中已知实现了HandlerInterceptor接口,MVC会自动拦截。如何实现的呢?改造文章中Spring MVC拦截器(Interceptor)使用的项目使用Spring MVC,不使用Spring Boot的自动配置研究MVC中的拦截器。

  在配置类中增加拦截器:

              

              

  拦截器怎么使用的呢?在DispatcherServlet类中可以发现它们的踪迹:

  doDispatch方法中:

              

              

              

   从上各图中可以解释Spring MVC拦截器(Interceptor)使用中的第一张图:三次拦截的时机点。那么这个mappedHandler是啥呢?是HandlerExecutionChain

              

              

  看类名是不是就想到了责任链模式,这里的使用与MyBatis功能点之二(2):从责任链设计模式的角度理解插件实现技术中的类似呢?看具体实现:

              

  与MyBatis中实现一样就是责任链模式的应用。那么interceptorIndex在哪里装载的呢?

              

  在initMapping操作时就加载了interceptor。这就与Mybatis中对于拦截器的应用一样,两个都有一个问题:就是那么多的interceptors,哪个先执行哪个后执行呢?后续有案例可以分析继续分享。

 

补充:不是本文重点内容,但是实际改造项目的过程中还是遇到了一些问题比较耗时,记录如下:

    1、同样的数据库配置和操作在一个项目中可以成功,在这个项目中没有成功(不影响研究拦截器,本文写完为止还没有找到原因);

    2、关于数据库和资源文件访问的配置,都是通过JavaBean的方式处理,相对Spring Boot写简单的配置文件而言需要熟悉MVC中的一些组件;

    3、关于jsp文件中taglib,提交访问请求总是提示jstl相关内容有问题。检查关于ViewResolver的配置没有问题,在看看jsp文件果然有红色。处理方法很简单——直接把taglib的内容注释了。

      所以也充分说明之前成功运行的项目后续不一定能继续成功运行不是没有原因的。

    4、在打war包的过程中,配置<directory>E:\ApachePro\apache-tomcat-10.1.19\webapps</directory>的进行打包与不配置在tomcat中有差别。开始使用<directory>E:\ApachePro\apache-tomcat-10.1.19\webapps</directory>,但是总是有问题,后来注释了反而没问题。不知道什么原因,还没有研究——之前这样用没有发现类似的问题。

    5、访问url细节问题。关于url,8080后面一定要添加finalName中的内容,在添加controler类中的mapping内容,不然总是提示404.

标签:拦截器,SpringMVC,Spring,配置,实现,MVC,Interceptor
From: https://www.cnblogs.com/ilovebath/p/18089703

相关文章

  • springMVC映射请求数据
    获取参数值@RequestParam@RequestParam表示会接收参数,value="name"表示接收的参数名为name,,required=false表示该参数可以没有,默认为truepackagecom.ysbt.requestparam;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.......
  • 房屋租赁系统(JSP+java+springmvc+mysql+MyBatis)
    本项目包含程序+源码+数据库+LW+调试部署环境,文末可获取一份本项目的java源码和数据库参考。项目文件图项目介绍随着城市化进程的加快和人口流动性增大,房屋租赁市场日益繁荣,对租赁信息的管理提出了更高要求。一个高效的房屋租赁系统能够为房东和租户提供一个便捷的信息发布......
  • 宠物医院管理系统(JSP+java+springmvc+mysql+MyBatis)
    本项目包含程序+源码+数据库+LW+调试部署环境,文末可获取一份本项目的java源码和数据库参考。项目文件图项目介绍随着宠物行业的快速发展和宠物数量的不断增加,宠物医疗服务的需求日益旺盛。宠物医院管理系统作为一种专业的信息化工具,对于提升宠物医院的工作效率、优化顾客服......
  • 房屋中介房源管理系统的设计与实现(JSP+java+springmvc+mysql+MyBatis)
    本项目包含程序+源码+数据库+LW+调试部署环境,文末可获取一份本项目的java源码和数据库参考。项目文件图项目介绍随着房地产市场的蓬勃发展,房屋中介机构在房源管理和客户服务方面面临着日益增长的挑战。一个高效、可靠的房屋中介房源管理系统对于提升中介机构的工作效率、优......
  • HandlerInterceptor - 自定义拦截器
    自定义一个类实现HandlerInterceptor接口,加上@Component注解。根据需要重写方法publicinterfaceHandlerInterceptor{defaultbooleanpreHandle(HttpServletRequestrequest,HttpServletResponseresponse,Objecthandler)throwsException{returntrue;......
  • springMVC中过滤器的实现
    过滤器使用Servlet3.0提供的@webFilter注解,配置过滤的URL规则,实现Filter接口,重写doFilter具体实现代码如下:importorg.springframework.stereotype.Component;importjavax.servlet.*;importjavax.servlet.annotation.WebFilter;importjava.io.IOException;@Component......
  • springboot实现拦截器
    在springboot中实现拦截器分为两步:1、创建普通拦截器,需要实现HandlerInterceptor并重写接口中相关方法;2、将上一步创建的拦截器加入到springboot配置中,配置拦截规则下面是相关代码和demo请求:定义一个普通拦截器:importorg.springframework.stereotype.Component;importorg......
  • 深入理解 SpringMVC
    前言SpringMVC可以说是我们日常开发中最依赖的Spring组件了,它基于Servlet容器实现,允许我们通过注解的方式开发Web程序。在本篇文章,将深入SpringMVC源码,梳理SpringMVC对Web请求处理流程,弄懂相关核心组件的原理,最终做到在使用的时候知其然也知其所以然。一、接受并分......
  • C# 12 拦截器 Interceptors
    拦截器Interceptors是一种可以在编译时以声明方式替换原有应用的方法。这种替换是通过让Interceptors声明它拦截的调用的源位置来实现的。您可以使用拦截器作为源生成器的一部分进行修改,而不是向现有源编译添加代码。 演示使用.NET8创建一个控制台应用程序。并在Property......
  • 基于SSM框架的商城的设计与实现(JSP+java+springmvc+mysql+MyBatis)
    本项目包含程序+源码+数据库+LW+调试部署环境,文末可获取一份本项目的java源码和数据库参考。项目文件图 项目介绍随着电子商务的迅猛发展,网上购物已成为人们日常生活的一部分。基于SSM(Spring+SpringMVC+MyBatis)框架的商城系统因其轻量化、高效和易于维护等特点,成为......