栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

拦截器 Interceptor

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

拦截器 Interceptor

Servlet 拦截器

可以同时存在多个Interceptor,然后SpringMVC会根据声明的前后顺序一个接一个的执行,而且所有的Interceptor中的preHandle方法都会在Controller方法调用之前调用

1 SpringMVC中的拦截器

1) 实现HanderInterceptor接口

  • preHandle():
    调用时间:Controller方法处理之前
    执行顺序:链式Intercepter情况下,Intercepter按照声明的顺序一个接一个执行
    若返回 false,则中断执行,注意:不会进入afterCompletion
  • postHandle():
    调用前提:preHandle返回 true
    调用时间:Controller方法处理完之后,DispatcherServlet 进行视图的渲染之前,也就是说在这个方法中你可以对ModelAndView进行操作
    执行顺序:链式Intercepter情况下,Intercepter按照声明的顺序倒着执行。
    备注:postHandle虽然 post打头,但post、get方法都能处理
  • afterCompletion():
    调用前提:preHandle返回 true
    调用时间:DispatcherServlet进行视图的渲染之后多用于清理资源

2) 拦截器配置

		
			
				
				
				
			
		

2 SpringBoot 拦截器
  • 实现HanderInterceptor接口
    区别 : 拦截器的配置(spring boot中不用去配置文件中配置)
    定义拦截器配置组件,实现WebMvcConfigurer接口,重写addInterceptors(InterceptorRegistry registry) 注册拦截器对象,指定拦截器URL
    代码示例:
//定义拦截器配置组件:
	@Configuration
	public class WebMvcInterceptor implements WebMvcConfigurer
	{
		@Override
		public void addInterceptors(InterceptorRegistry registry)
		{
			
			registry.addInterceptor(new FirstInterceptor()).addPathPatterns("/test/testOne","/test/testTwo");	
		}
	}
//-----------------------------------------
//定义拦截器组件:
	public class FirstInterceptor implements HandlerInterceptor
	{
		@Override
		public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception
		{
			System.out.println("拦截器");
			return true; //true表示不拦截 false:拦截
		}
	}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1014667.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号