springboot 拦截器

定义

拦截器类似于javaweb中filter 功能
注意: 只能拦截器controller相关的请求

作用

举一个例子,例如我们在Controller中都有一段业务逻辑,这样我们就可以都统一放在拦截器中
在这里插入图片描述
因此拦截器的作用就是将controller中共有代码放入到拦截器中执行,减少controller中代码冗余

特性

1).拦截器只能拦截controller相关请求
2).拦截器可以中断请求轨迹
3).请求之前如果该请求配置了拦截器,请求会先经过拦截器,拦截器放心之后执行请求的controller,controller执行完成之后会回到拦截器继续执行拦截器中的代码

拦截器开发

a.类 implement HandlerInterceptor 接口 引入默认实现

preHandler : 预先处理方法: 最先执行方法 返回值布尔类型 true 放行请求 false 中断controller 中内容

postHandler过程中处理: controller返回之后回到postHandler这个方法执行,执行完成这个方法开始响应浏览器

afterCompletion 最后完成: 当响应结束之后会执行拦截器中这个方法内容

b.配置拦截器

springboot 提供了springmvc配置类: WebMvcConfigurer
基本格式如下:
类 implement WebMvcConfigurer{
//覆盖配置拦截器方法
1.使用哪个拦截器 2.拦截器拦截请求 3.排除那些请求
}

具体实例

在项目文件中新建interceptors文件夹,新建拦截器类


public class MyInterceptor1 implements HandlerInterceptor {

    private static final Logger log = LoggerFactory.getLogger(MyInterceptor1.class);

    //pre handler 最先执行
    //参数3: handler 当前请求请求的控制器方法对象  DemoController#demo
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        log.debug("handler: {} ", handler);
        log.debug("===========1=========");
//        response.sendRedirect(request.getContextPath()+"/403.jsp");
        return true;//放行 false 中断
    }

    //参数3: handler 当前请求请求的控制器方法对象  DemoController#demo
    //参数4: modelAndView 模型和视图  当前请求访问方法的modelandview对象
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        log.debug("===========2=========");
        //log.debug("view: {}",modelAndView.getViewName());
    }

    //参数3: handler 当前请求请求的控制器方法对象  DemoController#demo
    //参数4: exception 如果控制器出现异常时异常对象
    //这个方法: finally{}代码块  总是执行  无论请求正确,出现异常
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        log.debug("===========3=========");
    }
}

在项目文件中配置WebMvcConfigure

@Configuration
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new MyInterceptor1()) //指定拦截器
                .addPathPatterns("/**")//拦截所有
                .excludePathPatterns("/file/**");//排除那些路径
    }
}

项目执行结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/373501.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode02.05:链表求和

一、题目描述 给定两个用链表表示的整数,每个节点包含一个数位。 这些数位是反向存放的,也就是个位排在链表首部。 编写函数对这两个整数求和,并用链表形式返回结果。 示例: 输入:(7 -> 1 -> 6) (5 -> 9 -…

UML之在Markdown中使用Mermaid绘制类图

1.UML概述 UML(Unified modeling language UML)统一建模语言,是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路。 类图是描述类与类之间的关系的,是UML图中最核心的。类图的是用于…

【MATLAB】交叉验证求光滑因子的广义神经网络回归预测算法

有意向获取代码,请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 交叉验证求光滑因子的广义神经网络回归预测算法是一种用于选择模型超参数并提高泛化性能的方法。下面将对该算法进行详细介绍: 广义神经网络回归模型: 广义神经网络…

地下停车场智慧监查系统:科技让停车更智能

随着城市化进程的加速,停车难成为了许多城市居民的痛点。而地下停车场作为解决停车难问题的重要手段,其安全性和便捷性也成为了人们关注的焦点。为了解决这一问题,山海鲸可视化搭建的地下停车场智慧监查系统应运而生,为车主们提供…

单向循环链表——插入、删除、实现约瑟夫环、排序

2024年2月3日 1.请编程实现单向循环链表的头插&#xff0c;头删、尾插、尾删 自定义头文件&#xff1a; #ifndef __head_h__ #define __head_h__ #include<stdio.h> #include<stdlib.h> #include<string.h> typedef int datatype; typedef struct Node {da…

React进阶 - 15(React 中 ref 的使用)

本章内容 目录 一、e.target 获取事件对应“元素”的DOM节点二、ref三、ref 和 setState 合用 上一节我们了解了 React中的”虚拟DOM“中的”Diff算法““ &#xff0c;本节我们来说一说 React中 ref的使用 一、e.target 获取事件对应“元素”的DOM节点 打开之前工程中的 To…

摘录笔记——2024年2月5日

美团三年&#xff0c;总结的10条血泪教训在美团的三年多时光&#xff0c;如同一部悠长的交响曲&#xff0c;高高低低&#xff0c;而今离开已有一段时间。闲暇之余&#xff0c;梳理了三年多的收获与感慨&#xff0c;既是对过去一段时光的的一个深情回眸&#xff0c;也是对未来之…

XAI:探索AI决策透明化的前沿与展望

文章目录 &#x1f4d1;前言一、XAI的重要性二、为什么需要可解释人工智能三、XAI的研究与应用四、XAI的挑战与展望 &#x1f4d1;前言 随着人工智能技术的快速发展&#xff0c;它已经深入到了我们生活的方方面面&#xff0c;从智能手机、自动驾驶汽车到医疗诊断和金融投资&…

网桥与网关

文章目录 概要网桥网关联系与区别参考文章 概要 网桥和网关的理解 网桥 几个名词的概念 网关 联系与区别 参考文章 如何通俗地解释什么是网桥&#xff1f; 网关到底是什么求通俗易懂讲解? 网桥&#xff1a;网桥也叫桥接器&#xff0c;是连接两个局域网的一种存储/转发…

探索设计模式的魅力:外观模式简化术-隐藏复杂性,提供简洁接口的设计秘密

设计模式专栏&#xff1a;http://t.csdnimg.cn/U54zu 目录 引言&#xff1a;探索简化之路 一、起源和演变 二、场景案例分析 2.1 不用模式实现&#xff1a;用一坨坨代码实现 2.2 问题 2.3 外观模式重构代码 定义 界面 接口 利用外观模式解决问题步骤 外观模式结构和说明 重构…

07、全文检索 -- Solr -- Solr 全文检索 之 为索引库添加中文分词器

目录 Solr 全文检索 之 为索引库添加中文分词器添加中文分词器1、添加中文分词器的 jar 包2、修改 managed-schema 配置文件什么是 fieldType 3、添加 停用词文档4、重启 solr5、添加【*_cn】动态字段&#xff0c;并为该字段设置中文分词器6、演示分词器的区别演示 text_cjk 这…

智能优化算法 | Matlab实现飞蛾扑火(MFO)(内含完整源码)

文章目录 效果一览文章概述源码设计参考资料效果一览 文章概述 智能优化算法 | Matlab实现飞蛾扑火(MFO)(内含完整源码) 源码设计 %%%% clear all clc SearchAgents_no=100; % Number of search ag

【技能树学习】Git入门——练习题解析

前言 本篇文章给出了Git入门技能树中部分的练习题解析&#xff0c;包括分支管理&#xff0c;Git标签&#xff0c;在Mac和Windows上使用GitVSCode的步骤。强调了git cherry-pick不直接支持从标签中选择提交&#xff0c;git tag -d只能删除本地标签&#xff0c;Mac系统的终端可以…

C/C++ 回调函数 callback 异步编程

一、C语言的回调函数 1.小试牛刀 #include <iostream> using namespace std; #include <memory> #include <stdlib.h>int add(int a, int b) {return a b; }void test01() {// 函数指针可以指向任何类型的函数&#xff0c;只要函数的参数列表和返回值类型…

单片机串口 奇偶校验 配置问题

一、问题描述 使用GD32单片机串口进行通信测试&#xff0c;单片机的串口配置的是偶校验(Even)、数据位为8、停止位为1、波特率为9600。串口测试软件用的格西烽火&#xff0c;软件的配置如下&#xff1a;   单片机通过串口和串口测试软件进行通信交互&#xff0c;软件收到的数…

绩效主义不可取,为什么还有那么多企业在使用KPI?KPI到底行不行!

“绩效主义毁了索尼” “企业差点被KPI害死” “绩效主义就是企业的脓包” 相信这些言论在过去的若干年里都听过&#xff0c;都是国内外知名企业的大佬说过的话&#xff0c;KPI绩效考核犹如过街老鼠&#xff0c;人人喊打。 虽然近几年&#xff0c;随着小米、知乎等互联网企业…

【HTML 基础】语义化标签

文章目录 1. <header>2. <nav>3. <article>4. <section>5. <footer>为什么使用语义化标签结语 在现代的 Web 开发中&#xff0c;语义化标签成为设计网页结构的重要组成部分。通过使用 <header>, <nav>, <article>, <sectio…

新型生成式 AI 助手 Amazon Q(预览版)上线

今天&#xff0c;我们宣布推出 Amazon Q&#xff0c;这是一种新型的生成式人工智能助手&#xff0c;专门用于满足办公场景需要&#xff0c;可以根据客户业务进行定制。客户可以使用 Amazon Q 进行对话、解决问题、生成内容、获取见解并采取行动&#xff0c;所有这些都基于客户自…

RibbonOpenFeign源码(待完善)

Ribbon流程图 OpenFeign流程图

亚马逊认证考试系列 - 知识点 - 安全组介绍

第一部分&#xff1a;AWS简介 Amazon Web Services&#xff08;AWS&#xff09;是全球领先的云计算服务提供商&#xff0c;为个人、企业和政府机构提供广泛的云服务解决方案。AWS的服务包括计算、存储、数据库、分析、机器学习、人工智能、物联网、安全和企业应用等领域。AW…