spring mvc拦截器

1、我们最常见的拦截器(编码拦截器)

	<!-- 编码过滤器 -->
	<filter>
		<filter-name>encodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<async-supported>true</async-supported>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>



2、配置拦截器(实现拦截器)

如果有多个拦截器、则按配置的顺序执行!

2.1、实际开发用这种配置方式


	<!--类似全局的拦截器:springmvc配置类似全局的拦截器,springmvc框架将配置的类似全局的拦截器注入到每个HandlerMapping中。-->
	<mvc:interceptors>
		<mvc:interceptor>
			<!-- /**表示所有url包括子url路径 -->
			<mvc:mapping path="/**"/>
			<bean class="org.chenzhengyou.com.HandlerInterceptorData.HandlerInterceptor01"></bean>
		</mvc:interceptor>
	</mvc:interceptors>


2.2、这种也可以实现

	<!--拦截器:springmvc拦截器针对HandlerMapping进行拦截设置,-->
	<!--如果在某个HandlerMapping中配置拦截,经过该 HandlerMapping映射成功的handler最终使用该 拦截器。-->
	<!--实际开发不使用这种-->
	<!--<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">-->
		<!--<property name="interceptors">-->
			<!--<list>-->
				<!--<ref bean="handlerInterceptor1"/>-->
			<!--</list>-->
		<!--</property>-->
	<!--</bean>-->
	<!--<bean id="handlerInterceptor1" class="org.chenzhengyou.com.HandlerInterceptorData.HandlerInterceptor01"/>-->


3、实现拦截器类:HandlerInterceptor01.class implements HandlerInterceptor


package org.chenzhengyou.com.HandlerInterceptorData;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Created by czy on 2016/11/5.<br/>
 * 1、测试拦截器1、实现 HandlerInterceptor 接口
 * 也可以实现WebRequestInterceptor 接口<br/>
 * 2、把定义的拦截器类加到SpringMVC的拦截体系中
 */
public class HandlerInterceptor01 implements HandlerInterceptor {



	//进入 Handler方法之前执行
	//用于身份认证、身份授权
	//比如身份认证,如果认证通过表示当前用户没有登陆,需要此方法拦截不再向下执行
	@Override
	public boolean preHandle(HttpServletRequest httpServletRequest,
	                         HttpServletResponse httpServletResponse, Object o) throws Exception {

		System.out.println("HandlerInterceptor1...preHandle");

		//return false表示拦截,不向下执行
		//return true表示放行
		return true;
	}


	//进入Handler方法之后,返回modelAndView之前执行
	//应用场景从modelAndView出发:将公用的模型数据(比如菜单导航)在这里传到视图,也可以在这里统一指定视图
	@Override
	public void postHandle(HttpServletRequest httpServletRequest,
	                       HttpServletResponse httpServletResponse,
	                       Object o, ModelAndView modelAndView) throws Exception {

		System.out.println("HandlerInterceptor1...postHandle");

	}



	//执行Handler完成执行此方法
	//应用场景:统一异常处理,统一日志处理
	@Override
	public void afterCompletion(HttpServletRequest httpServletRequest,
	                            HttpServletResponse httpServletResponse,
	                            Object o, Exception e) throws Exception {

		System.out.println("HandlerInterceptor1...afterCompletion");
	}
}



4、随便访问一个页面(因为我们的拦截规则是 /**)



5、结果




6、解释

6.1、postHandle (HttpServletRequest request, HttpServletResponse response,Object handle, ModelAndView modelAndView) 方法

由preHandle 方法的解释我们知道这个方法包括后面要说到的afterCompletion方法都只能是在当前所属的Interceptor 的preHandle 方法的返回值为true 时才能被调用。postHandle 方法,顾名思义就是在当前请求进行处理之后,也就是Controller 方法调用之后执行,但是它会在DispatcherServlet 进行视图返回渲染之前被调用,所以我们可以在这个方法中对Controller 处理之后的ModelAndView 对象进行操作。

postHandle 方法被调用的方向跟preHandle 是相反的,也就是说先声明的Interceptor 的postHandle 方法反而会后执行,这和Struts2 里面的Interceptor 的执行过程有点类型。Struts2 里面的Interceptor 的执行过程也是链式的,只是在Struts2 里面需要手动调用ActionInvocation 的invoke 方法来触发对下一个Interceptor 或者是Action 的调用,然后每一个Interceptor 中在invoke 方法调用之前的内容都是按照声明顺序执行的,而invoke 方法之后的内容就是反向的。



6.2、afterCompletion(HttpServletRequest request, HttpServletResponse response,Object handle, Exception ex) 方法

该方法也是需要当前对应的Interceptor 的preHandle 方法的返回值为true 时才会执行。顾名思义,该方法将在整个请求结束之后,也就是在DispatcherServlet 渲染了对应的视图之后执行。这个方法的主要作用是用于进行资源清理工作的。




6.3、postHandle (HttpServletRequest request, HttpServletResponse response,Object handle, ModelAndView modelAndView) 方法

由preHandle 方法的解释我们知道这个方法包括后面要说到的afterCompletion方法都只能是在当前所属的Interceptor 的preHandle 方法的返回值为true 时才能被调用。postHandle 方法,顾名思义就是在当前请求进行处理之后,也就是Controller 方法调用之后执行,但是它会在DispatcherServlet 进行视图返回渲染之前被调用,所以我们可以在这个方法中对Controller 处理之后的ModelAndView 对象进行操作。

postHandle 方法被调用的方向跟preHandle 是相反的,也就是说先声明的Interceptor 的postHandle 方法反而会后执行,这和Struts2 里面的Interceptor 的执行过程有点类型。Struts2 里面的Interceptor 的执行过程也是链式的,只是在Struts2 里面需要手动调用ActionInvocation 的invoke 方法来触发对下一个Interceptor 或者是Action 的调用,然后每一个Interceptor 中在invoke 方法调用之前的内容都是按照声明顺序执行的,而invoke 方法之后的内容就是反向的。


Spring MVC:拦截器 Spring MVC拦截器介绍 阅读详情

相关推荐

qt5.14.2+vs2019配置msvc2017编译器

qt5.14.2+vs2019配置msvc2017编译器 在使用qt编译程序时此前一直使用的是自带的MinGW 32-bit和64-bit,现在想使用msvc编译器。本次使用的是qt5.14.2,vs2019,需要配置msvc2017的32-bit和64-bit编译器。 1、首先安装好qt5.14.2和vs2019,其次在visual studio installer选择修改,然后选择msvc2017对应的组件,本次安装的是这两个 2、打开qt creator的工具–选项–kits–编译器,选择Manu

bangtanhui的博客 1万+

SpringMVC 拦截器的作用与实现

拦截器的作用: SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理。 比如通过它来进行权限验证,或者是来判断用户是否登陆,或者是像12306 那样子判断当前时间是否是购票时间。 拦截器的实现方法 在SpringMVC框架中定义一个拦截器需要对拦截器进行定义和配置,定义一个拦截器可以通过两种方式:一种是通过实现HandlerInterceptor 接口或继承 HandlerInterceptor接口的实现类来定义;另一种...

jmc_wax的博客 2096

SAP FICO CK40N批量发布标准价:常见报错排查与实战解决指南

本文详细解析了SAP FICO模块中CK40N批量发布标准价的常见报错及解决方案。从物料选择、成本核算到最终发布的全流程,提供了针对'已有标准成本估算记号'等典型报错的实战处理技巧,并分享了预防性维护与批量处理的高效方法,帮助财务人员提升工作效率。

weixin_29234509的博客 306

SpringMVC拦截器详细讲解

SpringMVC拦截器 拦截器跟过滤器有着相似的地方所以很多人会把他们搞混,这文章将详细讲解一下拦截器的用法与用处。 拦截器:是springmvc框架中的一种对象, 需要实现接口HandlerInterceptor. 拦截用户的请求。 拦截到controller的请求。 作用:拦截用户的请求, 可以预先对请求做处理。 根据处理结果, 决定是否执行controller 。 也可以把多个controller中共用的功能定义到拦截器。 特点: 拦截器可以分为系统拦截器和自定义拦截器。 一个项目可以多个拦

weixin_45643536的博客 886

从数据校准到论文呈现:fsQCA与NCA方法融合的完整实证研究指南

本文详细介绍了fsQCA(模糊集定性比较分析)与NCA(必要条件分析)方法融合的完整实证研究流程,从数据校准到论文呈现。通过软件操作技巧、R语言NCA包高效使用及论文写作规范,帮助研究者避免常见误区,提升研究质量与可靠性。特别适合需要进行组态分析的研究生和学者参考。

weixin_29215391的博客 420

【VAX 小番茄安装详细步骤】

本文详细介绍了在VS2022环境下安装Visual Assist X(番茄助手)的步骤及常见问题解决方案。主要内容包括:安装前的兼容性设置(需修改为Windows7兼容模式)、安装流程(卸载旧版本、勾选对应VS版本、替换关键dll文件)以及常见问题处理(如安装失败、工具栏图标缺失等)。文章提供了完整的下载链接和操作截图,特别强调了安装失败后的清理方法(注册表、安装目录和残余文件删除)。最后给出了安装成功后的测试运行指引。

qq_23962581的博客 1720

Spring MVC中的拦截器(很详细)

前言 在学习SSM的时候遇到了拦截器问题,Spring MVC的处理器拦截器类似于Servlet 开发中的过滤器Filter,本文主要总结一下Spring MVC中拦截器是如何定义的,以及测试拦截器的执行情况和使用方法。供大家参考 拦截器(Interceptor) 什么是拦截器 Spring MVC中的拦截器(Interceptor)类似于Servlet中的过滤器(Filter),它主要用于拦截...

chenjia的博客 1980

【低空经济】无人机充电站设计方案

随着无人机技术的快速发展和广泛应用,其在物流、农业、巡检、救援等领域的应用日益普及。然而,无人机的续航能力一直是限制其大规模应用的关键因素之一。为了解决这一问题,无人机充电站的设计与建设显得尤为重要。本项目旨在设计一套高效、智能、可扩展的无人机充电站系统,以满足不同场景下无人机的充电需求,提升其作业效率和应用范围。无人机充电站的设计将围绕以下几个核心目标展开:首先,充电站应具备快速充电能力,以减少无人机的停机时间,提高作业效率;

2960

SpringMVC的拦截器

SpringMVC 中的 Interceptor 拦截器是非常重要和相当有用的,它的主要作用是拦截指定的用户请求,并进行相应的预处理与后处理。 其拦截的时间点在“处理器映射器根据用户提交的请求映射出了所要执行的处理器类,并且也找到了要执行该处理器类的处理器适配器,在处理器适配器执行处理器之前”。 当然,在处理器映射器映射出所要执行的处理器类时,已经将拦截器与处理器组合为了一个处理器执行链,并返回给了中央调度器。 拦截器和过滤器很像,但是又有比较大的区别 过滤器是servlet规范的一部分,任何javawe

怕什么真理无穷,进一寸有一寸的欢喜。即使开了一辆老掉牙的破车,只要在前行就好,偶尔吹点小风,这就是幸 1358

在VS2019里把JSBSim飞行模型集成到你的C++项目里(附完整配置流程和常见错误解决)

本文详细介绍了如何在Visual Studio 2019中将JSBSim飞行模型集成到C++项目中,包括环境准备、源码编译、项目配置和常见错误解决方案。通过实战技巧和优化建议,帮助开发者高效实现高精度飞行仿真功能,提升开发效率。

weixin_42620202的博客 414

4.4 直流无刷电机(BLDC):控制器硬件设计

摘要 本文详细阐述了直流无刷电机(BLDC)控制器的硬件设计要点。控制器硬件主要包括微处理器单元、功率驱动模块、信号检测电路、通信接口和电源管理模块。在微处理器选型方面,分析了ARM Cortex-M系列、DSP等架构的适用场景,并对比了不同处理器的性能参数。功率驱动模块设计重点包括栅极驱动电路、逆变桥热管理和电流保护机制。信号检测部分介绍了位置传感器接口和模拟信号调理技术。此外,还讨论了通信接口设计、电源管理方案以及硬件布局与EMC设计规范。最后强调了硬件测试验证的重要性,包括故障注入测试等验证方法。整体

技术工作者 185

Spring MVC拦截器

Spring拦截器可以拦截用户的请求并进行相应的处理,比如通过他来实现权限验证,或者用来判断用户是否登陆,或者是像12306那样判断当前时间是否是买票时间。 拦截器的实现方式 通过实现HandlerInterceptor或者继承HandlerInterceptor的实现类,如HandlerInterceptorAdapter。 通过实现WebRequestInterceptor接口或者继承Web...

qq_39713141的博客 215

16、经皮功能性电刺激助行:Parastep系统全解析

本文全面解析了经皮功能性电刺激助行系统——Parastep系统,涵盖其发展历史、技术参数、系统设计、患者准入标准、训练方案及临床效果。作为首个获得FDA批准并商业化的非侵入性FES助行系统,Parastep为胸段截瘫患者提供了独立站立与行走的可能性,并在改善下肢血流、肌肉质量、心理状态等方面展现出显著医学与心理益处。文章还对比了其他FES系统,分析了Parastep的优势与局限,并探讨了未来技术改进方向与应用拓展前景。

l3m4n的博客 110

Spring MVC 拦截器

Spring MVC 拦截器

2301_81096101的博客 1499

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Spring MVC 中拦截器的定义

拦截器定义 要使用Spring MvC中的拦截器,就需要对拦截器类进行定义和配置。通常拦载器类可以通过两种方式来定义。一种是通过实现 HandlerInterceptor接口,或继承HandlerInterceptor接口的实现类(如HandlerInterceptorAdapter)来定义;另一种是通过实现WebRequestInterceptor接口,或继承WebRequestIntercep...

Zlt_blog的博客 3269

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

spring MVC拦截器介绍

Spring MVC 中我们可以自己根据需求定义自己的的Interceptor 拦截器,它的主要作用是拦截用户的请求并进行相应的处理。比如通过它来进行权限验证,或者是来判断用户是否登陆等。 我们常用的Spring MVC的拦截器是通过实现接口HandlerInterceptor(org.springframework.web.servlet.HandlerInterceptor)来实现,但是还有

实践是最好的方法 3498

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Spring MVC 拦截器:HandlerInterceptor 接口

在 Spring MVC 中,拦截器可以在控制器的执行过程中进行预处理和后处理操作,从而对请求的处理进行控制和增强。Spring MVC 中提供 `HandlerInterceptor` 接口用于定义拦截器。

JiaHao汤 1342

【Spring MVC】Spring MVC拦截器(Interceptor)

本文将带你详细了解Spring MVC拦截器的执行顺序、底层原理以及生产应用。

小七的博客 3947

Spring MVC配置及拦截器的实现

如题所示,这里主要是介绍拦截器的使用了但是为了更贴合实际的项目所以我们先导入spring mvc框架。为了使用spring mvc我们要导入相关的包,它依赖于spring-web 和spring -webmvc我这里的版本是4.0.6的。将相关的包导入到工程中并且添加编译路径后我们再在web.xml文件中配置spring mvc。 前面说过配置一个基本的servlet时要配置和这两个标签,同

一步一迹的博客 1万+

Spring MVC拦截器的应用,建议看这一篇就够了

Spring MVC拦截器 拦截器是Spring MVC中强大的控件,它可以在进入处理器之前做一些操作,或者在处理器完成后进行操作,甚至是在渲染视图后进行操作。 拦截器概述 对于任何优秀的MVC框架,都会提供一些通用的操作,如请求数据的封装、类型转换、数据校验、解析上传的文件、防止表单的多次提交等。早期的MVC框架将这些操作都写死在核心控制器中,而这些常用的操作又不是所有的请求都需要实现的,这就导致了框架的灵活性不足,可扩展性降低 SpringMVC提供了Interceptor拦截器机制,类似于Se

weixin_53170684的博客 553

【Spring-MVC】拦截器

文章目录17 拦截器17.1 SpringMVC的拦截器17.1.1 拦截器和过滤器区别17.1.2 单个拦截器流程17.1.3 多个拦截器流程17.2 实现拦截器类17.3 配置拦截器17.3.1 基于XML17.3.2 基于JavaConfig17.4 资源过滤问题 17 拦截器 在Servlet阶段学习过过滤器,那么这里的拦截器其实是和Servlet中的过滤器性质差不多,但是底层的实现是完全的不一样。 17.1 SpringMVC的拦截器 拦截器是SpringMVC框架中的一部分,它天然的在Sp

MY9_19的博客 416

spring mvc拦截器_Spring MVC拦截器示例

spring mvc拦截器 我认为现在是时候看看Spring的MVC拦截器机制了,这种机制已经存在了很多年,并且是一个非常有用的工具。 Spring Interceptor会按照提示说:在传入的HTTP请求到达您的Spring MVC控制器类之前对其进行拦截,或者相反,在它离开控制器之后但在将其反馈给浏览器之前,截取该发出的HTTP响应。 您可能会问这对您有什么用? 答案是,它允许您执行...

最佳 Java 编程 201

Spring MVC拦截器:请求拦截与处理(附拦截器代码)

Spring MVC拦截器是框架提供的请求处理机制,可在请求的不同阶段进行拦截处理。通过实现HandlerInterceptor接口,开发者可以自定义preHandle(请求前)、postHandle(控制器处理后)和afterCompletion(请求完成后)三个阶段的逻辑。拦截器适用于权限验证、日志记录和性能监控等场景。配置时需通过WebMvcConfigurer注册拦截器,并指定拦截路径和排除路径。测试时可通过控制台输出验证拦截器各方法的调用顺序。文中提供了完整的拦截器实现和配置代码示例。

fykam的博客 2035

Spring MVC 拦截器教程

【代码】Spring MVC 拦截器教程。

xiaoyu070321的博客 712
上一篇: Spring稳扎稳打(0)之核心基础篇
下一篇: SpringMVC稳扎稳打(3)之拦截器
AndyChen9988
博客等级 码龄11年 276粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值