国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Spring Boot實戰(zhàn):攔截器和監(jiān)聽器的應(yīng)用指南

這篇具有很好參考價值的文章主要介紹了Spring Boot實戰(zhàn):攔截器和監(jiān)聽器的應(yīng)用指南。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

當(dāng)使用Spring Boot時,我們可以通過攔截器(Interceptor)和監(jiān)聽器(Listener)來實現(xiàn)對請求和響應(yīng)的處理。攔截器和監(jiān)聽器提供了一種可插拔的機(jī)制,用于在請求處理過程中進(jìn)行自定義操作,例如記錄日志、身份驗證、權(quán)限檢查等。下面通過提供一個示例,展示如何使用攔截器和監(jiān)聽器來記錄請求日志。

首先,我們創(chuàng)建一個簡單的Spring Boot項目,并添加所需的依賴。在這個示例中,我們將使用Spring Boot Starter Web。

  1. 創(chuàng)建一個Spring Boot項目并添加依賴

創(chuàng)建一個新的Spring Boot項目,可以使用Spring Initializr(https://start.spring.io/)進(jìn)行初始化。在"Dependencies"中添加"Spring Web"依賴,并生成項目。

  1. 創(chuàng)建攔截器

在項目中創(chuàng)建一個名為 RequestLoggingInterceptor 的類,實現(xiàn) HandlerInterceptor 接口。這個攔截器將記錄請求的URL、HTTP方法和時間戳。

import?org.springframework.web.servlet.HandlerInterceptor;

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

public?class?RequestLoggingInterceptor?implements?HandlerInterceptor?{

????@Override
????public?boolean?preHandle(HttpServletRequest?request,?HttpServletResponse?response,?Object?handler)?throws?Exception?{
????????//?記錄請求的URL、HTTP方法和時間戳
????????System.out.println("RequestLoggingInterceptor"+"啟動了");
????????System.out.println("Request?URL:?"?+?request.getRequestURL());
????????System.out.println("HTTP?Method:?"?+?request.getMethod());
????????System.out.println("Timestamp:?"?+?System.currentTimeMillis());
????????return?true;
????}
}
  1. 注冊攔截器

在Spring Boot應(yīng)用程序的配置類中,注冊攔截器,使其生效。

import?org.springframework.beans.factory.annotation.Autowired;
import?org.springframework.context.annotation.Configuration;
import?org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import?org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public?class?WebConfig?implements?WebMvcConfigurer?{

????private?final?RequestLoggingInterceptor?requestLoggingInterceptor;

????@Autowired
????public?WebConfig(RequestLoggingInterceptor?requestLoggingInterceptor)?{
????????this.requestLoggingInterceptor?=?requestLoggingInterceptor;
????}

????@Override
????public?void?addInterceptors(InterceptorRegistry?registry)?{
????????//?注冊攔截器
????????registry.addInterceptor(requestLoggingInterceptor);
????}
}
  1. 創(chuàng)建監(jiān)聽器

在項目中創(chuàng)建一個名為 RequestListener 的類,實現(xiàn) ServletRequestListener 接口。這個監(jiān)聽器將在請求的開始和結(jié)束時記錄日志。

import?javax.servlet.ServletRequestEvent;
import?javax.servlet.ServletRequestListener;
import?javax.servlet.annotation.WebListener;
import?javax.servlet.http.HttpServletRequest;

@WebListener
public?class?RequestListener?implements?ServletRequestListener?{

????@Override
????public?void?requestInitialized(ServletRequestEvent?sre)?{
????????HttpServletRequest?request?=?(HttpServletRequest)?sre.getServletRequest();
????????System.out.println("RequestListener"+"啟動了");
????????//?記錄請求的URL、HTTP方法和時間戳
????????System.out.println("Request?URL:?"?+?request.getRequestURL());
????????System.out.println("HTTP?Method:?"?+?request.getMethod());
????????System.out.println("Timestamp:?"?+?System.currentTimeMillis());
????}

????@Override
????public?void?requestDestroyed(ServletRequestEvent?sre)?{
????????//?請求處理完成后的操作
????????System.out.println("Request?processing?completed.");
????}
}
  1. 編寫控制器

創(chuàng)建一個簡單的控制器來模擬請求處理

import?org.springframework.web.bind.annotation.GetMapping;
import?org.springframework.web.bind.annotation.PostMapping;
import?org.springframework.web.bind.annotation.RequestBody;
import?org.springframework.web.bind.annotation.RestController;

@RestController
public?class?UserController?{

????@GetMapping("/user")
????public?String?getUser()?{
????????return?"Get?User";
????}

????@PostMapping("/user")
????public?String?saveUser(@RequestBody?String?user)?{
????????return?"Save?User:?"?+?user;
????}
}

  1. 在啟動類或配置類上添加 @ServletComponentScan 注解

啟用對監(jiān)聽器的支持

import?org.springframework.boot.SpringApplication;
import?org.springframework.boot.autoconfigure.SpringBootApplication;
import?org.springframework.boot.web.servlet.ServletComponentScan;

@SpringBootApplication
@ServletComponentScan
public?class?HelloWorldApplication?{

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

  1. 運(yùn)行應(yīng)用程序

現(xiàn)在,你可以運(yùn)行Spring Boot應(yīng)用程序并訪問一些URL,觀察控制臺輸出的日志信息。每次發(fā)起請求時,攔截器和監(jiān)聽器都會捕獲請求并輸出相關(guān)的日志。示例效果如下:

Spring Boot實戰(zhàn):攔截器和監(jiān)聽器的應(yīng)用指南

本文由 mdnice 多平臺發(fā)布文章來源地址http://www.zghlxwxcb.cn/news/detail-491496.html

到了這里,關(guān)于Spring Boot實戰(zhàn):攔截器和監(jiān)聽器的應(yīng)用指南的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • SpringBoot2.0(過濾器,監(jiān)聽器,攔截器)

    SpringBoot2.0(過濾器,監(jiān)聽器,攔截器)

    使用Servlet3.0的注解進(jìn)行配置 啟動類里面增加 @ServletComponentScan ,進(jìn)行掃描 新建一個Filter類,implements Filter ,并實現(xiàn)對應(yīng)接口 @WebFilter 標(biāo)記一個類為Filter,被spring進(jìn)行掃描 urlPatterns:攔截規(guī)則,支持正則 控制chain.doFilter的方法的調(diào)用,來實現(xiàn)是否通過放行, 不放行的話,web應(yīng)用

    2024年02月07日
    瀏覽(20)
  • 【Spring Boot系列】- Spring Boot攔截器

    攔截器(Interceptor)是在面向切面編程中應(yīng)用的,就是在service或者一個方法前調(diào)用一個方法,或者在方法后調(diào)用一個方法。是基于JAVA的反射機(jī)制??梢愿鶕?jù) URL 對請求進(jìn)行攔截,主要應(yīng)用于登陸校驗、權(quán)限驗證、亂碼解決、性能監(jiān)控和異常處理等功能。 在 Spring Boot 項目中,

    2024年02月13日
    瀏覽(16)
  • spring boot 攔截器例子

    在Spring Boot中,攔截器是通過實現(xiàn)`HandlerInterceptor`接口來實現(xiàn)的。它允許你在請求到達(dá)控制器方法之前和之后執(zhí)行自定義的邏輯。下面我將為你提供一個簡單的Spring Boot攔截器的例子。 假設(shè)我們有一個簡單的控制器類`UserController`,其中有兩個請求處理方法:`getUser`和`saveUser`,

    2024年02月15日
    瀏覽(23)
  • Spring Boot 配置攔截器

    Spring Boot 配置攔截器

    通過攔截器,我們可以針對特定 URI 做攔截,做相關(guān)業(yè)務(wù)處理,比如檢查用戶是否登錄,打印每個請求的處理耗時等。 新建登錄驗證類? LoginValidationInterceptor.java : 定義一個攔截器類后,您需要實現(xiàn)? HandlerInterceptor ?接口,其有三個方法可以重寫: preHandle : 在調(diào)用 Controller 方

    2024年02月08日
    瀏覽(24)
  • Spring Boot統(tǒng)一處理功能——攔截器

    Spring Boot統(tǒng)一處理功能——攔截器

    ?戶登錄權(quán)限的發(fā)展從之前每個?法中??驗證?戶登錄權(quán)限,到現(xiàn)在統(tǒng)?的?戶登錄驗證處理,它是?個逐漸完善和逐漸優(yōu)化的過程。 我們先來回顧?下最初?戶登錄驗證的實現(xiàn)?法: 從上述代碼可以看出,每個?法中都有相同的?戶登錄驗證權(quán)限,它的缺點是: 1. 每個

    2024年02月13日
    瀏覽(23)
  • Spring Boot攔截器(Interceptor)詳解

    **攔截器(Interceptor)**同 Filter 過濾器一樣,它倆都是面向切面編程——AOP 的具體實現(xiàn)(AOP切面編程只是一種編程思想而已)。 你可以使用 Interceptor 來執(zhí)行某些任務(wù),例如在 Controller 處理請求之前編寫日志,添加或更新配置…… 在 Spring 中,當(dāng)請求發(fā)送到 Controller 時,在被 Contr

    2024年02月03日
    瀏覽(26)
  • 【Spring Boot】攔截器與統(tǒng)一功能處理

    【Spring Boot】攔截器與統(tǒng)一功能處理

    博主簡介:想進(jìn)大廠的打工人 博主主頁: @xyk: 所屬專欄:?JavaEE進(jìn)階 ? 上一篇文章我們講解了Spring AOP是一個基于面向切面編程的框架,用于將某方面具體問題集中處理,通過代理對象來進(jìn)行傳遞,但使用原生Spring AOP實現(xiàn)統(tǒng)一的攔截是非常繁瑣的。而在本節(jié),我們將使用一種

    2024年02月14日
    瀏覽(24)
  • Spring Boot攔截器與動態(tài)代理深度剖析

    Spring Boot攔截器與動態(tài)代理深度剖析

    ??歡迎來到架構(gòu)設(shè)計專欄~Spring Boot攔截器與動態(tài)代理深度剖析 ☆* o(≧▽≦)o *☆嗨~我是IT·陳寒?? ?博客主頁:IT·陳寒的博客 ??該系列文章專欄:架構(gòu)設(shè)計 ??其他專欄:Java學(xué)習(xí)路線 Java面試技巧 Java實戰(zhàn)項目 AIGC人工智能 數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí) ??文章作者技術(shù)和水平有限,如果

    2024年01月22日
    瀏覽(26)
  • spring boot 過濾器&攔截器與aop

    spring boot 過濾器&攔截器與aop

    在使用 Spring 框架時,可以通過在 web.xml 配置文件中注冊過濾器,使其在請求進(jìn)入 Spring 前就能夠進(jìn)行預(yù)處理。這樣可以在請求進(jìn)入 Spring MVC 的 DispatcherServlet 之前,對請求進(jìn)行攔截、修改或者過濾。 過濾器在 Spring 中的應(yīng)用場景包括但不限于: 字符編碼過濾:通過過濾器,在

    2024年02月01日
    瀏覽(23)
  • 使用spring boot攔截器實現(xiàn)青少年模式

    便用Spring Boot攔截器采累計在線時間采實現(xiàn)青少年模式的步驟,可以參考以卜步驟: 1.創(chuàng)建一個攔截器類,實現(xiàn)Handlerlnterceptor 接口。 2.在攔截器類中,定義一個變量來記錄用戶在線時間。 3.在preHandle方法中,記錄用戶的登錄時間。 4.在afterCompletion方法中,計算用戶在線時間,

    2023年04月08日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包