一、步骤

1.创建我们自己的拦截器类并实现 HandlerInterceptor 接口。

2.创建一个Java类继承WebMvcConfigurerAdapter,并重写 addInterceptors 方法。

3.实例化我们自定义的拦截器,然后将对像手动添加到拦截器链中(在addInterceptors方法中添加)。

二、实例

1.创建自定义拦截器并实现HandlerInterceptor 接口

 package com.xsjt.interceptor;

 import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView; /**
* ClassName:XbqInterceptor
* 自定义拦截器
* Date: 2017年11月6日 下午4:56:27
* @author Joe
* @version
* @since JDK 1.8
*/
public class XbqInterceptor implements HandlerInterceptor{ private static final Logger logger = LoggerFactory.getLogger(XbqInterceptor.class); @Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
logger.info(this.getClass().getName() + "<---xbq--->preHandle");
return true;
} @Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
logger.info(this.getClass().getName() + "<---xbq--->postHandle");
} @Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
logger.info(this.getClass().getName() + "<---xbq--->afterCompletion");
}
}
 package com.xsjt.interceptor;

 import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView; /**
* ClassName:XbqInterceptor
* 自定义拦截器
* Date: 2017年11月6日 下午4:56:27
* @author Joe
* @version
* @since JDK 1.8
*/
public class JoeInterceptor implements HandlerInterceptor{ private static final Logger logger = LoggerFactory.getLogger(JoeInterceptor.class); @Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
logger.info(this.getClass().getName() + "<---joe--->preHandle");
return true;
} @Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
logger.info(this.getClass().getName() + "<---joe--->postHandle");
} @Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
logger.info(this.getClass().getName() + "<---joe--->afterCompletion");
}
}

2.创建一个Java类继承WebMvcConfigurerAdapter,并重写 addInterceptors 方法

3.实例化我们自定义的拦截器,然后将对像手动添加到拦截器链中(在addInterceptors方法中添加)

 package com.xsjt.config;

 import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import com.xsjt.interceptor.JoeInterceptor;
import com.xsjt.interceptor.XbqInterceptor; /**
* ClassName:SpringInterceptorRegister
* Spring 拦截器 注册器
* Date: 2017年11月6日 下午4:58:32
* @author Joe
* @version
* @since JDK 1.8
*/
@Configuration
public class SpringInterceptorRegister extends WebMvcConfigurerAdapter{ /**
* TODO 添加spring中的拦截器.
* @see org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter#addInterceptors(org.springframework.web.servlet.config.annotation.InterceptorRegistry)
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 拦截所有路径
registry.addInterceptor(new XbqInterceptor()).addPathPatterns("/**");
// 拦截/freemarker后路径
registry.addInterceptor(new JoeInterceptor()).addPathPatterns("/freemarker/**");
super.addInterceptors(registry);
} /**
* TODO 注册静态文件的自定义映射路径
* @see org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter#addResourceHandlers(org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry)
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/image/**").addResourceLocations("classpath:/image/");
registry.addResourceHandler("/picture/**").addResourceLocations("file:D:/picture/");
super.addResourceHandlers(registry);
}
}

4.源码下载

  https://gitee.com/xbq168/spring-boot-learn

SpringBoot(五)-- 整合Spring的拦截器的更多相关文章

  1. springboot中使用过滤器、拦截器、监听器

    监听器:listener是servlet规范中定义的一种特殊类.用于监听servletContext.HttpSession和servletRequest等域对象的创建和销毁事件.监听域对象的属性发生 ...

  2. spring boot拦截器WebMvcConfigurerAdapter,以及高版本的替换方案

    Springboot中静态资源和拦截器处理(踩了坑)   背景: 在项目中我使用了自定义的Filter 这时候过滤了很多路径,当然对静态资源我是直接放过去的,但是,还是出现了静态资源没办法访问到spr ...

  3. SSM(spring mvc+spring+mybatis)学习路径——2-2、spring MVC拦截器

    目录 2-2 Spring MVC拦截器 第一章 概述 第二章 Spring mvc拦截器的实现 2-1 拦截器的工作原理 2-2 拦截器的实现 2-3 拦截器的方法介绍 2-4 多个拦截器应用 2- ...

  4. 从零开始学 Java - Spring AOP 拦截器的基本实现

    一个程序猿在梦中解决的 Bug 没有人是不做梦的,在所有梦的排行中,白日梦最令人伤感.不知道身为程序猿的大家,有没有睡了一觉,然后在梦中把睡之前代码中怎么也搞不定的 Bug 给解决的经历?反正我是有过 ...

  5. Spring使用拦截器支持国际化(转)

    Spring使用拦截器支持国际化很方便,使用时只需要两个步骤: 一.spring配置 具体配置方式如下: <!-- 资源文件绑定器,文件名称:messages.properties(没有找到时的 ...

  6. Spring 中拦截器与过滤器的区别

    spring 中拦截器 与servlet 的filter 有相似之处.比如二者都是aop 编程思想的体现都能实现权限检查,日志记录等. 不同之处 使用范围不同 Filter 是Servlet 规定的. ...

  7. springboot+maven整合spring security

    springboot+maven整合spring security已经做了两次了,然而还是不太熟悉,这里针对后台简单记录一下需要做哪些事情,具体的步骤怎么操作网上都有,不再赘述.1.pom.xml中添 ...

  8. Java - Spring AOP 拦截器的基本实现

    一个程序猿在梦中解决的 Bug 没有人是不做梦的,在所有梦的排行中,白日梦最令人伤感.不知道身为程序猿的大家,有没有睡了一觉,然后在梦中把睡之前代码中怎么也搞不定的 Bug 给解决的经历?反正我是有过 ...

  9. spring mvc拦截器原理分析

    我的springMVC+mybatis中的interceptor使用@autowired注入DAO失败,导致报空指针错误,这个是为什么呢? :空指针说明没有注入进来,你可以检查一下你的这个拦截器int ...

随机推荐

  1. css样式冲突问题练习例子

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " http://www.w3.org ...

  2. 初试PyOpenGL四 (Python+OpenGL)GPU粒子系统与基本碰撞

    这篇相当于是对前三篇的总结,基本效果如下: 在初试PyOpenGL一 (Python+OpenGL)讲解Pyopengl环境搭建,网格,球体,第一与第三人称摄像机的实现.在初试PyOpenGL二 (P ...

  3. 动态SQL是什么??什么是静态SQL,动态SQL的动态体现在哪里???

    首先,所谓SQL的动态和静态,是指SQL语句在何时被编译和执行,二者都是用在SQL嵌入式编程中的,这里所说的嵌入式是指将SQL语句嵌入在高级语言中,而不是针对于单片机的那种嵌入式编程.在某种高级语言中 ...

  4. c++ 文件增加#ifndef、#define 和 #endif 语句的意义

    文件currency.h (或 currencyOverload.h) 包含了 currency类的声明和实现细节. 在文件头, 应该加上语句 #ifndef Currency_ #define Cu ...

  5. at 命令

    每天什么时候执形at 12:00 /every:Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday shutdown -r

  6. IMP导入时的错误以及解决办法

    导出命令:exp 用户名/密码@localhost:5050/bkcyunty file=D:\bak\db.dmp log=D:\bak\db.log INDEXES=n STATISTICS=no ...

  7. C# 当前目录你了解多少

    C#中获取程序运行的当前目录的方法有多种,本文为大家提供三种方式,并作简单分析,有需要的朋友,可以参考下. 在C#中,有很多方式可以获取程序运行的当前目录,常见的方式有: .string strPat ...

  8. C# listview控件右击导出数据到txt文本

    private void 导出成功点击ToolStripMenuItem_Click(object sender, EventArgs e) { ) { MessageBox.Show("列 ...

  9. TensorFlow-GPU:查看电脑显卡型号是否支持CUDN,以及相关软件下载与介绍

    1.显卡(GPU)是否支持CUDN https://developer.nvidia.com/cuda-gpus 2.了解基础知识 1)CUDA(Compute Unified Device Arch ...

  10. glsl 全屏 uv 旋转

    原图 只是把fbo后的uv扭个角度就行了