SpringBoot——整合Servlet的三大组件:监听器(Listener)

目录

监听器(Listener)

项目总结

MyRequestListener自定义监听器

WelcomController控制器 

SpringbootListenerApplication启动类


在开发SpringBoot项目时,开发人员经常需要对HTTP请求进行拦截和处理,以实现诸如身份验证、授权、日志记录等功能。为了实现这些功能,Spring Boot提供了过滤器和拦截器这两个工具。此外,开发人员还需要使用SpringBoot中的监听器监听SpringBoot项目中的特定事件,以实现统计网站访问量、记录用户访问路径、系统启动时加载初始化信息等功能。

监听器(Listener)

  • 监听器用于监听并处理指定的事件
  • 监听器不需要像过滤器和拦截器那样需要配置,自定义的监听器类只需要实现特定的监听接口(有8个,比如ServletRequestListener)并用@Component注解予以标注即可生效
  • 项目相比过滤器和拦截器,少了配置类

项目总结

  • 开发一个面向公网的网站,必须能够记录每一个请求的来源和行为。服务器可以通过监听器在请求刚一创建时记录请求的特征,即请求的IP,session id和请求访问的URL地址等信息

新建一个SpringBoot项目

项目结构:

MyRequestListener自定义监听器

package com.study.springboot_listener.listener;

import org.springframework.stereotype.Component;

import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.http.HttpServletRequest;

/**
 * 自定义监听器:
 * 用于监听每一个前端请求的URL,IP和session id
 */
@Component //标注该类,保证SpringBoot能扫描到此监听器,即该注解让该监听器生效
public class MyRequestListener implements ServletRequestListener {

    //请求初始化时触发
    public void requestInitialized(ServletRequestEvent sre){
        HttpServletRequest request = (HttpServletRequest) sre.getServletRequest();
        String ip=request.getRemoteAddr();
        String url=request.getRequestURL().toString();
        String sessionID=request.getSession().getId();//由服务器随机生成

        System.out.println("前端请求的IP地址为: "+ip);
        System.out.println("前端请求的URL地址为: "+url);
        System.out.println("前端请求的session id地址为: "+sessionID);

    }

    //请求被销毁时触发
    public void requestDestroyed(ServletRequestEvent sre){
        HttpServletRequest request = (HttpServletRequest) sre.getServletRequest();
        String sessionID=request.getSession().getId();
        System.out.println("session id为: "+sessionID+"的请求已被销毁");
    }
}

WelcomController控制器 

package com.study.springboot_listener.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class WelcomController {

    @RequestMapping("/listenerIndex")
    public String index(){
        return "欢迎访问XXX网站";
    }
}

SpringbootListenerApplication启动类

package com.study.springboot_listener;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringbootListenerApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringbootListenerApplication.class, args);
	}

}

启动项目,访问网址:http://127.0.0.1:8080/listenerIndex 

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

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

相关文章

室内外无缝定位技术:连接虚拟与现实的新桥梁

随着科技的快速发展,人们对于位置信息的精确度和实时性要求日益提高。在这样一个背景下,室内外无缝定位技术应运而生,成为连接虚拟与现实世界的关键桥梁。它不仅为人们提供了更加便捷、高效的生活体验,还推动了物联网、智能制造等…

家用厨房安全新篇章:煤气安全阀结构与校验知识普及

在家用厨房中,煤气作为主要的烹饪能源,其安全性至关重要。 煤气安全阀作为防止煤气泄露的关键设备,其结构特点、作用解析、定期校验的重要性以及泄露风险的防范等方面,都是我们必须深入了解和掌握的知识。 首先,我们…

Java1.8 vue版家政服务系统成品源码 家政管家系统源码 家政月嫂系统源码 家政保洁系统源码 在线派单,师傅入驻全套商业源码

Java1.8 vue版家政服务系统成品源码 家政管家系统源码 家政月嫂系统源码 家政保洁系统源码 在线派单,师傅入驻全套商业源码 一、系统定义 家政上门服务系统是一种利用互联网技术,将家政服务需求与专业的家政服务人员进行高效匹配的平台。它允许用户通过…

leetcode第263题:丑数

丑数的因子只能是2,3,5。但是可能有多个2&#xff0c;多个3&#xff0c;多个5.因此需要循环地除以2、3、5. public class Solution {public bool IsUgly(int n) {if (n < 0) {return false;}int[] factors {2, 3, 5};for ( int i0;i<3;i) {int factorfactors[i];while …

ClickHouse如何整合数据源:MySQL、HDFS...

一、ClickHouse数据源 ClickHouse 作为一个强大的列式数据库管理系统&#xff0c;支持多种数据源&#xff0c;使得用户能够方便地将数据导入 ClickHouse 进行存储和分析。以下是常见的 ClickHouse 数据源&#xff1a; 外部数据源 HDFS&#xff1a; 支持从 Hadoop 分布式文件系…

音视频开发15 FFmpeg FLV封装格式分析

FLV(Flash Video)简介 FLV(Flash Video)是Adobe公司推出的⼀种流媒体格式&#xff0c;由于其封装后的⾳视频⽂件体积⼩、封装简单等特点&#xff0c;⾮常适合于互联⽹上使⽤。⽬前主流的视频⽹站基本都⽀持FLV。采⽤ FLV格式封装的⽂件后缀为.flv。 FLV封装格式的组成 FLV封装…

长三角Ai行业盛会:2024南京人工智能展会(南京智博会)

在长三角地区&#xff0c;南京这座古老而现代的都市&#xff0c;近年来在人工智能产业发展方面取得了令人瞩目的成绩。作为一座拥有深厚历史底蕴和独特文化魅力的城市&#xff0c;南京在科技创新领域同样展现出非凡的活力与实力。特别是在人工智能领域&#xff0c;南京的崛起已…

Spring Cloud:构建高可用分布式系统的利器

摘要&#xff1a;本文将介绍Spring Cloud&#xff0c;一个基于Spring Boot的开源微服务架构工具集。我们将探讨Spring Cloud的核心组件、特性以及如何使用Spring Cloud构建高可用、分布式系统。通过本文&#xff0c;读者将了解到Spring Cloud在实现微服务架构中的应用和优势。 …

STM8单片机变频器设计

变频调速技术是现代电力传动技术的重要发展方向,而作为变频调速系统的核心—变频器的性能也越来越成为调速性能优劣的决定因素,除了变频器本身制造工艺的“先天”条件外,对变频器采用什么样的控制方式也是非常重要的。随着电力电子技术、微电子技术、计算机网络等高新技术的…

React-生成随机数和日期格式化

生成随机数 uuid文档&#xff1a;https://github.com/uuidjs/uuid npm install uuid import {v4 as uuidV4} from uuid 使用&#xff1a; uuidV4() 日期格式化 dayjs文档&#xff1a;安装 | Day.js中文网 npm install dayjs import dayjs from dayjs

华致酒行一季度业绩好转:毛利率持续下滑,销售人员去年减少578人

《港湾商业观察》李镭 在公布年报和一季报前后&#xff0c;华致酒行&#xff08;300755.SZ&#xff09;举行了3次投资者交流活动&#xff0c;可见外界对公司业绩的关注程度。 虽然一季度业绩好于年报&#xff0c;但整个2024年是否能延续这一不错态势&#xff0c;恐怕也并不乐…

医学数据属于小样本,或许源于资源不对等|罗小罗·说

小罗碎碎念 医学数据属于小样本&#xff0c;或许源于资源不对等 今天这篇推文&#xff0c;源于一场对话。 我和他&#xff08;粉丝&#xff09;聊完以后&#xff0c;觉得心里总是压了点什么东西&#xff0c;直到我写完那篇关于医学数据类别不平衡的文章&#xff0c;我才大致理…

网络原理——http/https ---http(1)

T04BF &#x1f44b;专栏: 算法|JAVA|MySQL|C语言 &#x1faf5; 今天你敲代码了吗 网络原理 HTTP/HTTPS HTTP,全称为"超文本传输协议" HTTP 诞⽣与1991年. ⽬前已经发展为最主流使⽤的⼀种应⽤层协议. 实际上,HTTP最新已经发展到 3.0 但是当前行业中主要使用的HT…

SpringBoot快速部署(1)—docker不使用nginx

方法一&#xff1a;使用 link docker run -d --restartalways -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD123456 -e MYSQL_DATABASEqr_code_test -v /mnt/docker/files/qr_board_system/qr_code_test.sql:/docker-entrypoint-initdb.d/database.sql mysql:5.6 docker r…

Docker 图形化界面管理工具 Portainer | 让你更轻松的管理 Docker

本文首发于只抄博客&#xff0c;欢迎点击原文链接了解更多内容。 前言 Portainer 是一个 Docker 图形化管理工具&#xff0c;可以通过 Web UI 轻松的管理容器、镜像、网络、卷。与 Dockge 相比功能更加的完善&#xff0c;同时上手难度也更大一些 Portainer 分为社区版和商业版…

摸鱼大数据——Hive函数14

14、开窗(开列)函数 官网链接&#xff1a;Window Functions - Apache AsterixDB - Apache Software Foundation 14.1 基础使用 开窗函数格式: 开窗函数 over(partition by 分组字段名 [order by 排序字段名 asc|desc] [rows between 开窗开始 and 开窗结束]) ​ partition b…

动画技术在AI绘画中的革新作用

引言&#xff1a; 随着人工智能技术的飞速发展&#xff0c;AI绘画作为其应用领域之一&#xff0c;已经引起了艺术和技术界的广泛关注。动画技术&#xff0c;作为视觉艺术的重要组成部分&#xff0c;与AI绘画的结合不仅为传统绘画带来了新的活力&#xff0c;也推动了创意表达和艺…

第24讲:Ceph集群RGW对象存储高可用集群部署与测试

文章目录 1.RGW对象存储高可用集群架构1.1.环境规划1.2.高可用集群架构图 2.部署RGW对象存储高可用集群2.1.在所有的Ceph节点中部署RGW2.2.部署Haproxy负载均衡服务2.3.配置Haproxy负载均衡三个节点中的RGW2.4.配置Keepalived实现RGW高可用集群2.5.启动Keepalived并观察VIP地址…

关于域环境

一.什么是域 Windows域是计算机网络的一种形式&#xff0c;其中所有用户帐户&#xff0c;计算机&#xff0c;打印机和其他安全主体都向位于一个或多个中央计算机群集&#xff08;域控制器&#xff09;上的中央数据库注册。通过域用户登录域内主机&#xff0c;需要通过域控制器…

升级你的工作流:集成钉钉企微的可道云teamOS网盘体验全攻略,办公体验瞬间升级

我们知道&#xff0c;企业微信、钉钉扫码登录已经成为现代企业高效办公的标配。 然而&#xff0c;市面上绝大多数企业网盘产品&#xff0c;都无法对接企业微信和钉钉&#xff0c;这无疑给企业的工作流程带来一定困扰。 今天给大家介绍一下&#xff0c;集成了钉钉和企微的企业…