SpringBoot SpringBoot 原理篇 2 自定义starter 2.6 拦截器开发

news2024/11/30 6:53:27

SpringBoot

【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】

SpringBoot 原理篇

文章目录

      • SpringBoot
      • SpringBoot 原理篇
      • 2 自定义starter
        • 2.6 拦截器开发
          • 2.6.1 拦截器开发
          • 2.6.2 小结

2 自定义starter

2.6 拦截器开发

2.6.1 拦截器开发

OK, 到咱们之前为止,基本上所有的功能都做完了,

在这里插入图片描述

在这里插入图片描述

剩下的问题就是,现在只能是调用了分页查询接口才计算访问次数,咱们也不能去源码中给所有的方法都加上这玩意儿【太low了】,所以拦截器来了

AOP思想,在所有方法运行前执行一下计算访问次数操作

但是现在是Web 工程,那就用拦截器实现

拦截器类

package com.dingjiaxiong.controller.interceptor;

import cn.dingjiaxiong.service.IpCountService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.servlet.HandlerInterceptor;

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

/**
 * ClassName: IpCountInterceptor
 * date: 2022/10/25 20:37
 *
 * @author DingJiaxiong
 */


public class IpCountInterceptor implements HandlerInterceptor {

    @Autowired
    private IpCountService ipCountService;

    //运行拦截之前
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        ipCountService.count();
        return true;
    }
}

controller 里面就别加了

在这里插入图片描述

配置类

package com.dingjiaxiong.controller.interceptor;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * ClassName: SpringMVCConfig
 * date: 2022/10/25 20:39
 *
 * @author DingJiaxiong
 */

@Configuration
public class SpringMvcConfig implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(ipCountInterceptor()).addPathPatterns("/**");

    }

    @Bean
    public IpCountInterceptor ipCountInterceptor(){
        return new IpCountInterceptor();
    }
}

OK,直接运行

在这里插入图片描述

OK,现在只要发了请求,不管是什么,都会被计数了

【现在就完成了…吗?】

不,现在的问题是,一旦我把坐标注掉

在这里插入图片描述

再次运行

在这里插入图片描述

直接就红了

所以还是要修改一下

先恢复坐标【其实问题就是拦截器的位置不对】

直接复制粘贴

在这里插入图片描述

SSMP 中的拦截器就不要了

在这里插入图片描述

注意还要配置一下加载配置类

在这里插入图片描述

OK,再次安装运行

在这里插入图片描述

OK, 这样就可以了,现在把坐标注掉

在这里插入图片描述

也不影响工程运行

OK,回顾一下

  • 自定义拦截器

在这里插入图片描述

  • 设置核心配置类,加载拦截器

在这里插入图片描述

2.6.2 小结
  1. 拦截器开发

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2022年11月27日学习 SVM

SVM,英文全称为 Support Vector Machine,中文名为支持向量机 ​ SVM也是一种分类算法,它的核心思想用我自己的话来讲就是先找到两个类别中距离最近的几个点作为支持向量,然后计算超平面,超平面需要间隔最大化。然后用超…

【Hack The Box】linux练习-- Previse

HTB 学习笔记 【Hack The Box】linux练习-- Previse 🔥系列专栏:Hack The Box 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 📆首发时间:🌴2022年11月27日🌴 &#x1f…

Microsoft SQL Server中的错误配置

介绍 这篇文章将介绍如何利用Microsoft SQL Server中的错误配置,尝试获取反向shell并熟悉Impacket工具的使用,以便进一步攻击某些服务。 impacket的安装地址:https://github.com/SecureAuthCorp/impacket Impacket是用于处理网络协议的Pyt…

FPGA学习-vivado软件的使用

FPGA学习-vivado软件的使用1.杂谈2. vivado新建工程1.杂谈 又被封了7天。 正好封控前领导让我改下fpga代码,趁这个机会好好学习下,虽然在这块一片空白,但是毕竟这块是我的短板,一个不会写代码的硬件工程师是一个不完整的硬件工程…

无条码商品新建商品档案,搭配蓝牙便携打印机移动打印条码标签

null无条码商品的商品档案新建,并打印条码标签,即可实现仓库条码管理,扫码入库,出库,盘点等操作。, 视频播放量 1、弹幕量 0、点赞数 0、投硬币枚数 0、收藏人数 0、转发人数 0, 视频作者 汉码盘点机PDA, 作者简介 &am…

【WSN通信】A_Star改进LEACH多跳传输协议【含Matlab源码 487期】

⛄一、 A_Star改进LEACH多跳传输协议简介 1 理论基础 1.1 A*算法 A算法是一种智能搜索算法,他在求解问题时所得到的结果会选择所有路径中代价最小的节点。 A算法是一种基于启发式函数的算法,搜索过程如下:首先创建两个分别命名为open表和close表的表格,其中open表中存放还未访…

【Hack The Box】linux练习-- Doctor

HTB 学习笔记 【Hack The Box】linux练习-- Doctor 🔥系列专栏:Hack The Box 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 📆首发时间:🌴2022年11月23日🌴 &#x1f3…

量子计算(九):复合系统与联合测量

文章目录 复合系统与联合测量 一、张量积 二、复合系统的状态演化 复合系统与联合测量 拥有两个或两个以上的量子比特的量子系统通常被称为复合系统(composite systems)。单量子比特系统的描述与测量已有所了解,那么多个量子比特的系统该如…

R语言基于ARMA-GARCH过程的VaR拟合和预测

本文展示了如何基于基础ARMA-GARCH过程(当然这也涉及广义上的QRM)来拟合和预测风险价值(Value-at-Risk,VaR)。 最近我们被客户要求撰写关于ARMA-GARCH的研究报告,包括一些图形和统计输出。 视频&#xff…

树莓派安装ubuntu系统

ubuntu镜像下载 官方地址:https://cn.ubuntu.com/download/raspberry-pi 清华镜像:https://mirrors.tuna.tsinghua.edu.cn/ubuntu-cdimage/ubuntu/releases/22.04.1/release/ 准备树莓派镜像工具(Raspberry Pi Imager) 下载地…

如何在 Spring Boot 中使用 JPA 和 JPQL 进行自定义查询示例

在本教程中,您将了解如何在 Spring Boot 示例中使用 Spring JPA Query进行自定义查询。我将向您展示: 使用JPQL(Java持久性查询语言)的方法如何在 Spring 引导中执行 SQL 查询具有 WHERE 条件的 JPA 选择查询示例内容 JPQL 与本机…

【408专项篇】C语言笔记-第七章(函数)

第一节:函数的声明与定定义 1. 函数的声明与定义 函数间的调用关系是:由主函数调用其他函数,其他函数也可以互相调用。同一个函数可以被一个或多个函数调用任意次。 #include "func.h"int main() {int a10;aprint_star(a);print_…

SPI和API还在傻傻分不清楚?

什么是SPI 介绍 再聊下一个类加载器框架OSGI之前,我们首先学习一下前驱知识SPI 全称:Service Provider Interface 区别于API模式,本质是一种服务接口规范定义权的转移,从服务提供者转移到服务消费者。 怎么理解呢&#xff1f…

JavaScript游戏开发(3)(笔记)

文章目录七、支持移动设备的横向卷轴游戏准备7.1 角色的简单移动7.2 背景7.3 加入敌人与帧数控制7.4 碰撞、计分、重新开始7.5 手机格式7.6 全屏模式7.7 存在的问题附录素材可以去一位大佬放在github的源码中直接下,见附录。 七、支持移动设备的横向卷轴游戏 使用…

手摸手使用IDEA创建多模块(maven)项目

有了前面两篇手摸手打底,相信大家对IDEA创建项目和配置使用maven已经没有什么问题了。那么这篇文章阅读起来也会非常流畅。 对于IDEA来说,可以用拼接模块(Module)并引用的方式来“搭”一个项目(Project)。…

【全志T113-S3_100ask】15-2 linux系统gpio模拟spi驱动屏幕——ILI9341

【全志T113-S3_100ask】15-2 linux系统gpio模拟spi驱动屏幕——ILI9341背景(一)查阅参考文档(二)使能内核模块(三)修改设备树(四)测试(五)后语背景 在上一小…

nginx的安装与nginx降权+匹配php

安装nginx: 安装的插件的作用: 1.gcc 可以编译 C,C,Ada,Object C和Java等语言(安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境) 2.pcre pcre-devel pcre是一个perl库,包括perl兼容的正则表达式库,ngin…

样本于抽样分布(1)-基本概念

从理论上讲,只要对随机现象进行足够多次的试验,被研究的随机现象的规律 性就能清楚地呈现出来. 但实际上,试验的次数只能是有限的,有时甚至是很少 的,因为采集某些数据时,常要将研究的对象破坏&…

【Gradle】四、使用Gradle创建SringBoot微服务项目

使用Gradle创建SringBoot微服务项目一、 创建Springboot项目0、阿里云脚手架创建项目1、引入 t springboot2 、引入依赖3、执行 geradle bootRun 指令4、spring-boot-gradle-plugin 插件‘二、多模块项目1、settings.gradle2、build.gradle3、version.gradle4、test_service的配…

图论:自反与对称

图论1.自反与反自反2.对称与反对称3.传递与非传递1.自反与反自反 自反:相同顶点都在集合内。 反自反:相同顶点都不在集合内。 参考下图:有三部分,红色的自反,蓝色的反自反,以及白色的都不是。 例1&#…