JavaEE-統一功能處理

攔截器

實現強制登錄的功能, 后端程序根據Session來判斷??是否登錄, 但是實現?法是?較?煩的

需要修改每個接?的處理邏輯

需要修改每個接?的返回結果

接?定義修改, 前端代碼也需要跟著修改

有沒有更簡單的辦法, 統?攔截所有的請求, 并進?Session校驗呢, 這?我們學習?種新的解決辦法: 攔截器

攔截器快速入門

什么是攔截器?

攔截器是Spring框架提供的核?功能之?, 主要?來攔截??的請求, 在指定?法前后, 根據業務需要執行預先設定的代碼.

也就是說, 允許開發?員提前預定義?些邏輯, 在??的請求響應前后執?. 也可以在??請求前阻?其執?.

在攔截器當中,開發?員可以在應?程序中做?些通?性的操作, ?如通過攔截器來攔截前端發來的請求, 判斷Session中是否有登錄??的信息. 如果有就可以放?, 如果沒有就進?攔截.

?如我們去銀?辦理業務, 在辦理業務前后, 就可以加?些攔截操作

辦理業務之前, 先取號, 如果帶?份證了就取號成功

業務辦理結束, 給業務辦理?員的服務進?評價.

這些就是"攔截器"做的?作.

攔截一般是在目標執行方法之前進行攔截,判斷是否滿足條件,返回true表示不攔截,返回false代表攔截。

而視圖渲染部分現在基本已經不用了,不需要關注。

之前只是設置了攔截的條件和處理方法,實現WebMvcConfigurer接口的addInterceptors時定義要攔截哪些請求,并且調用之前定義的攔截方法。

需要注意的是,這個定義攔截請求需要將這個類交給spring保管,不然是不起效的。

攔截器詳解

攔截路徑

攔截器執?流程

正常的調?順序:
有了攔截器之后,會在調? Controller 之前進?相應的業務處理,執?的流程如下圖

登錄校驗

了解攔截器的基本操作之后,接下來需要完成最后?步操作:通過攔截器來完成圖書管理系統中的登錄校驗功能

定義攔截器

從session中獲取??信息, 如果session中不存在, 則返回false,并設置http狀態碼為401, 否則返回true

這里檢查了用戶的cookie是否攜帶了需要的sessionid,以及對應的保存在服務器當中的session之中是否保存了需要的數據,如果有就允許訪問,沒有的話就需要設置狀態碼。需要注意的是,這些是serverlet的操作,如果要填充數據的話,需要手動修改數據格式等操作。

注冊配置攔截器

統一數據返回格式

通過來實現該接口的方法,來完成對返回數據的統一處理

存在問題

?多測試?種不同的返回結果, 發現只有返回結果為String類型時才有這種錯誤發?.

解決?案

再次測試就正確了

不過還需要做一些小修改

優點

統一異常處理?

@ExceptionHandler 是異常處理器,只有有該注解的方法才會被認為是統一處理異常的異常處理器,并通過參數來進行調用里面的方法。

匹配的規則是從子類開始向上匹配,最后才會匹配到Exception。

參數就是異常類型的匹配。

也可以在@ExceptionHandler("異常類型")這樣來標注匹配的異常類。

當有多個異常通知時,匹配順序為當前類及其?類向上依次匹配

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/86349.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/86349.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/86349.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vscode運行c++文件和插件的方法

1.運行c文件全過程 VSCode運行C全教程-CSDN博客 按照以上的操作即可完成正常的配置流程。但是在運行我的文件時,總是出現終端和輸出混亂的情況,我想要在終端中進行輸入輸出的話,需要加一個改動:設置--輸入Run In Terminal--勾選…

利用云效實現自動化部署gitee倉庫中的項目

本文主要介紹如何利用云效 實現Node項目(vue/react....)自動化部署 1.準備工作 Git 倉庫【Gitee】 云服務器【華為云】 你的項目 2. 創建目錄 服務器上創建兩個目錄 一個專門用來放壓縮包: /home/www/dist (aaa.tgz bbb.tgz&am…

Flink SourceFunction深度解析:數據輸入的起點與奧秘

在Flink的數據處理流程中,StreamGraph構建起了作業執行的邏輯框架,而數據的源頭則始于SourceFunction。作為Flink數據輸入的關鍵組件,SourceFunction負責從外部數據源讀取數據,并將其轉換為Flink作業能夠處理的格式。深入理解Sour…

LabVIEW 共享變量通訊方式

在LabVIEW 開發中,共享變量(SharedVariable)作為實現數據實時交換的關鍵技術,廣泛應用于 LabVIEW、PLC 編程、分布式 SCADA 系統等領域。解析主流共享變量通訊機制的技術原理、性能特性及工程實踐中的選型策略。? 一、Network -P…

Angular進階之十二:Chrome DevTools+Angular實戰診斷指南

引言 最近有一個工單是說用戶在使用我們的系統的時候,如果使用某個頁面的次數多了以后瀏覽器就開始變慢甚至卡死崩潰掉。這個問題明顯是提示有內存泄露,今天就由這個問題開始分享一些關于內存泄漏的知識。 一、 Web 應用內存泄漏的危害與易忽略性 危害&…

在云服務器上搭建 MinIO 圖片存儲服務器及 Spring Boot 整合實現圖片上傳下載

一、MinIO 核心概念 MinIO 是一個高性能的分布式對象存儲服務器,兼容 Amazon S3 API,具有以下特點: 高性能:針對存儲和檢索優化 輕量級:單個二進制文件即可運行 云原生:支持 Kubernetes 部署 S3 兼容&a…

《深入解析:如何通過CSS集成WebGPU實現高級圖形效果》

當CSS的細膩筆觸遇上WebGPU的磅礴算力,兩者如同命運交織的織工,以代碼為絲線,在虛擬空間中編織出超越現實維度的靈境。這場融合不再局限于視覺呈現的革新,而是創造出一種能夠與用戶情感共鳴、突破物理法則束縛的沉浸式數字體驗&am…

R 語言科研繪圖 --- 環狀圖-匯總

在發表科研論文的過程中,科研繪圖是必不可少的,一張好看的圖形會是文章很大的加分項。 為了便于使用,本系列文章介紹的所有繪圖都已收錄到了 sciRplot 項目中,獲取方式: R 語言科研繪圖模板 --- sciRplothttps://mp.…

突破限制:實現頁面內精準監聽 localStorage 變更

突破限制:實現頁面內精準監聽 localStorage 變更 一、簡介二、示例演示三、StorageEvent重構setItem四、CustomEvent自定義事件同一頁面不同模塊數據同步五、MessageChannel同一頁面不同模塊數據同步六、BroadcastChannel多窗口數據同步七、CustomEventBroadcastCha…

牛客AI面試破解電銷招聘效率與成本雙重難題

在電銷行業,高流動性與大規模招聘需求長期困擾企業人力資源管理。傳統招聘模式下,HR需應對海量簡歷篩選、多輪面試協調、主觀評估偏差等挑戰,導致招聘周期長、成本高、人才匹配度低。如何通過技術手段實現精準篩選與效率提升?牛客…

智慧生產管控數字化平臺(源碼+文檔+講解+演示)

引言 在全球化和信息化的浪潮中,制造業正面臨著前所未有的挑戰和機遇。智慧生產管控數字化平臺應運而生,旨在通過數字化手段優化生產管控的全流程。本文將詳細介紹智慧生產管控數字化平臺的核心功能、技術架構以及如何通過開源代碼實現二次開發&#xf…

用Tensorflow進行線性回歸和邏輯回歸(九)

用TensorFlow訓練線性和邏輯回歸模型 這一節結合前面介紹的所有TensorFlow概念來訓練線性和邏輯回歸模型,使用玩具數據集。 用TensorFlow訓練模型 假如我們指明了數據點和標簽的容器,定義了張量操作的損失函數。添加了優化器節點到計算圖,…

使用 vue vxe-table 實現復選框禁用,根據行規則來禁用是否允許被勾選選中

使用 vue vxe-table 實現復選框禁用,根據行規則來禁用是否允許被勾選選中 查看官網:https://vxetable.cn 禁用選中 通過 checkMethod 方法控制 checkbox 是否允許用戶手動勾選,如果被禁用,可以調用 setCheckboxRow 方法手動設置…

【Linux-網絡】深入拆解TCP核心機制與UDP的無狀態設計

🎬 個人主頁:誰在夜里看海. 📖 個人專欄:《C系列》《Linux系列》《算法系列》 ?? 道阻且長,行則將至 目錄 📚引言 📚一、UDP協議 📖 1.概述 📖 2.特點 &#x1…

(nice!!!)(LeetCode 每日一題) 2081. k 鏡像數字的和 (枚舉)

題目:2081. k 鏡像數字的和 思路:枚舉10進制的回文串,然后來判斷對應的k進制數是否是回文串。直到有n個滿意即可。 而枚舉10進制的回文串,從基數p(1、10、100… )開始,長度為奇數的回文串,長度為偶數的回文…

Java面試題027:一文深入了解數據庫Redis(3)

Java面試題025:一文深入了解數據庫Redis(1) Java面試題026:一文深入了解數據庫Redis(2) 本節我們整理一下Redis高可用和消息隊列使用場景的重點原理,讓大家在面試或者實際工作中遇到這類問題時…

算法打卡 day4

4 . 高精度算法 性質:數組或者容器從低位往高位依次存儲大整數,方便進位。 4.1 高精度加法 給定兩個正整數(不含前導 0),計算它們的和。 輸入格式 共兩行,每行包含一個整數。 輸出格式 共一行,…

【筆記】Docker 配置阿里云鏡像加速(公共地址即開即用,無需手動創建實例)

2025年06月25日記 【好用但慎用】Windows 系統中將所有 WSL 發行版從 C 盤遷移到 非系統 盤的完整筆記(附 異常處理)-CSDN博客 【筆記】解決 WSL 遷移后 Docker 出現 “starting services: initializing Docker API Proxy: setting up docker ap” 問題…

day35-Django(1)

day35-Django 3.2 前言 之前我們介紹過web應用程序和http協議,簡單了解過web開發的概念。Web應用程序的本質 接收并解析HTTP請求,獲取具體的請求信息處理本次HTTP請求,即完成本次請求的業務邏輯處理構造并返回處理結果——HTTP響應import socketserver = socket.socket() …

PostgreSQL全棧部署指南:從零構建企業級高可用數據庫集群

PostgreSQL全棧部署指南:從零構建企業級數據庫集群 前言: 本文詳解了**PostgreSQL**所有的部署方式,如 yum 安裝、源碼編譯安裝、RPM包手動安裝,以及如何選擇適合的安裝方式。適合不同的場景應用。通過高可用部署詳細了解安裝思路及過程,包括內網環境下的配置、主節點的創…