[3-02-02].第04節:開發應用 - RequestMapping注解的屬性2

SpringMVC學習大綱


注解的源碼:

在這里插入圖片描述


三、注解的params屬性

3.1.params屬性的理解:

  • params屬性用來通過設置請求參數來映射請求。對于RequestMapping注解來說:
    • params屬性也是一個數組,不過要求請求參數必須和params數組中要求的所有參數完全一致后,才能映射成功
      image.png

3.2.params屬性的4種用法:

a.參數說明:

  • @RequestMapping(value=“/login”, params={“username”, “password”}) 表示:
    • 請求參數中必須包含 username 和 password,才能與當前標注的方法進行映射
  • @RequestMapping(value=“/login”, params={“!username”, “password”}) 表示:
    • 請求參數中不能包含username參數,但必須包含password參數,才能與當前標注的方法進行映射
  • @RequestMapping(value=“/login”, params={“username=admin”, “password”}) 表示:
    • 請求參數中必須包含username參數,并且參數的值必須是admin,另外也必須包含password參數,才能與當前標注的方法進行映射
  • @RequestMapping(value=“/login”, params={“username!=admin”, “password”}) 表示:
    • 請求參數中必須包含username參數,但參數的值不能是admin,另外也必須包含password參數,才能與當前標注的方法進行映射
      注意:如果前端提交的參數,和后端要求的請求參數不一致,則出現400錯誤!!!

b.返回值狀態碼:

  • HTTP狀態碼400的原因:請求參數格式不正確而導致的

3.3.測試params屬性:

a.添加接口方法:

  • 在 RequestMappingTestController 類中添加如下方法:
@RequestMapping(value="/testParams", params = {"username", "password"})
public String testParams(){return "testParams";
}
  • 2.提供視圖頁面:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>testParams</title>
</head>
<body>
<h1>測試RequestMapping注解的Params屬性</h1>
</body>
</html>

b.添加超鏈接:

  • 在index.html文件中添加超鏈接:
<!--測試RequestMapping的params屬性-->
<a th:href="@{/testParams(username='admin',password='123')}">測試params屬性</a>
  • 當然,你也可以這樣寫:這樣寫IDEA會報錯,但不影響使用
<a th:href="@{/testParams?username=admin&password=123}">測試params屬性</a><br>

c.發送請求時,傳遞username參數:

image.png
image.png


d.發送請求時,沒有傳遞username參數:

<a th:href="@{/testParams(password='123')}">測試params屬性</a><br>
  • 啟動服務器,測試:
    image.png
  • 提示無效的請求參數,服務器無法或不會處理當前請求
    image.png

四、注解的headers屬性

4.1.認識headers屬性:

a.屬性理解:

  • headers和params原理相同,用法也相同
    • 當前端提交的請求頭信息和后端要求的請求頭信息一致時,才能映射成功

b.請求頭信息怎么查看?

  • 在chrome瀏覽器中,F12打開控制臺,找到Network,可以查看具體的請求協議和響應協議,在請求協議中可以看到請求頭信息,例如:
    image.png
  • 請求頭信息和請求參數信息一樣,都是鍵值對形式,例如上圖中:
    • Referer: http://localhost:8080/springmvc/ 鍵是Referer,值是http://localhost:8080/springmvc/
    • Host: localhost:8080 鍵是Host,值是localhost:8080

4.2.headers屬性的4種用法:

  • @RequestMapping(value=“/login”, headers={“Referer”, “Host”}) 表示:
    • 請求頭信息中必須包含Referer和Host,才能與當前標注的方法進行映射
  • @RequestMapping(value=“/login”, headers={“Referer”, “!Host”}) 表示:
    • 請求頭信息中必須包含Referer,但不包含Host,才能與當前標注的方法進行映射
  • @RequestMapping(value=“/login”, headers={“Referer=http://localhost:8080/springmvc/”, “Host”}) 表示:
    • 請求頭信息中必須包含Referer和Host,并且Referer的值必須是http://localhost:8080/springmvc/,才能與當前標注的方法進行映射。
  • @RequestMapping(value=“/login”, headers={“Referer!=http://localhost:8080/springmvc/”, “Host”}) 表示:
    • 請求頭信息中必須包含Referer和Host,并且Referer的值不是http://localhost:8080/springmvc/,才能與當前標注的方法進行映射。
  • 注意:如果前端提交的請求頭信息,和后端要求的請求頭信息不一致,則出現404錯誤!!!

4.3.測試headers屬性:

a.定義接口:

  • 在 RequestMappingTestController 類中添加以下方法:
@RequestMapping(value="/testHeaders", headers = {"Referer=http://localhost:8080/springmvc/"})
public String testHeaders(){return "testHeaders";
}

b.編寫頁面:

  • 提供視圖頁面:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>test Headers</title>
</head>
<body>
<h1>測試RequestMapping注解的headers屬性</h1>
</body>
</html>

c.超鏈接:

  • 在index.html頁面中添加超鏈接:
<!--測試RequestMapping的headers屬性-->
<a th:href="@{/testHeaders}">測試headers屬性</a><br>

d.測試:

  • 啟動服務器,測試結果:
    image.png
    image.png
  • 將后端控制器中的headers屬性值進行修改:
@RequestMapping(value="/testHeaders", headers = {"Referer=http://localhost:8888/springmvc/"})
public String testHeaders(){return "testHeaders";
}
  • 再次測試:
    image.png

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

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

相關文章

layui表格多選及選中

多選獲取選中數據//獲取選中行數據 var tbData table.cache["tablist2"]; var chkDatas tbData.filter(s > s.LAY_CHECKED true); if (vm.isEmpty(chkDatas) || chkDatas.length 0) {os.error("未選中數據&#xff01;");return; }單選選中樣式及數…

卡爾曼濾波數據融合

狀態向量&#xff1a;位置和速度 [x, y, vx, vy]預測階段&#xff1a;用加速度估算速度和位置&#xff08;IMU數據&#xff09;更新階段&#xff1a;用 GPS 位置修正漂移&#xff08;每隔一定時間才來一次&#xff09;import numpy as np# 時間步長&#xff08;秒&#xff09; …

Qwen3-8B 的 TTFT 性能分析:16K 與 32K 輸入 Prompt 的推算公式與底層原理詳解

一、模型概述與上下文支持能力Qwen3-8B 是通義實驗室推出的 80 億參數大語言模型&#xff0c;支持 32,768 token 的上下文長度 。其核心優化點包括&#xff1a;FP8 量化技術&#xff1a;通過將權重從 32-bit 壓縮至 8-bit&#xff0c;顯著降低顯存占用并提升推理效率&#xff0…

【Spring Cloud Gateway 實戰系列】基礎篇:路由、斷言、過濾器、負載均衡深度解析

一、引言在微服務架構中&#xff0c;API網關是流量的統一入口&#xff0c;承擔著路由轉發、流量管控、安全防護等核心職責。Spring Cloud Gateway作為Spring官方推薦的第二代網關&#xff0c;基于Spring 5.0、Spring Boot 2.0和Project Reactor構建&#xff0c;提供了高性能的響…

基于springboot的鄉村旅游在線服務系統/鄉村旅游網站

管理員&#xff1a;登錄&#xff0c;個人中心&#xff0c;用戶管理&#xff0c;景點類型管理&#xff0c;旅游景點管理&#xff0c; 酒店信息管理&#xff0c;旅游線路管理&#xff0c;門票預訂管理&#xff0c;酒店預訂管理&#xff0c;旅游攻略管理&#xff0c;社區互動&…

JavaWeb筆記12

登錄的問題&#xff1a;用戶兩次登錄后會生成新舊兩個令牌&#xff0c;此時舊的不應該生效要使舊的失效&#xff1a;令牌主動失效機制 登錄成功后&#xff0c;給瀏覽器響應令牌的同時&#xff0c;把該令牌存儲到redis中 LoginInterceptor攔截器中&#xff0c;需要驗證瀏覽器攜帶…

算法牢籠與思想飛地:在人工智能時代守衛靈魂的疆域

當手指在鍵盤上敲下“幫我寫一篇關于XX的文章”&#xff0c;當屏幕上的“智能助手”瞬間輸出結構完整、引經據典的文字&#xff0c;當算法為我們精準推送“你可能感興趣”的一切——我們正被一種前所未有的認知便利所包圍。然而&#xff0c;在這層包裹著效率與舒適的華麗外衣之…

WebAssembly瀏覽器指紋識別技術——實驗評估與應用展望(下篇)

引言 在上篇文章中,我們詳細闡述了基于WebAssembly的瀏覽器指紋識別技術的理論基礎和核心方法。本文將進一步展示該技術在實際應用中的表現,通過大規模的實驗驗證其有效性,并深入探討相應的防護策略。同時,我們也將客觀分析該技術的應用前景與潛在風險,為相關領域的研究和…

kafka--基礎知識點--5.4--max.in.flight.requests.per.connection

一、參數定義 max.in.flight.requests.per.connection 是 Kafka 生產者客戶端配置參數&#xff0c;用于控制生產者與單個 Broker 連接中未確認請求的最大數量。簡單來說&#xff0c;它限制了生產者在等待之前發送的消息確認&#xff08;ACK&#xff09;時&#xff0c;可以同時向…

【Spring AI 0基礎教程】1、基礎篇 環境搭建 - 智能天氣預報助手

基礎篇 | 環境搭建 - 智能天氣預報助手 一、什么是 Spring AI Spring AI (https://spring.io/projects/spring-ai)]是 Spring 官方于 2023 年推出的 AI 應用開發框架&#xff0c;它如同 AI 世界的"Spring 生態連接器"&#xff0c;致力于簡化開發集成了 AI 功能的應…

深入淺出MyBatis緩存:如何讓數據庫交互飛起來

深入淺出MyBatis緩存&#xff1a;如何讓數據庫交互飛起來你是否遇到過這樣的場景&#xff1a;系統在高并發下響應緩慢&#xff0c;數據庫監控顯示CPU飆升&#xff0c;日志里充斥著大量重復SQL&#xff1f;作為開發者&#xff0c;我曾親眼目睹一個簡單的配置查詢拖垮整個系統。今…

【計算機考研(408)- 數據結構】緒論

緒論 基本概念&#xff08;理解即可&#xff09; 數據是信息的載體&#xff0c;是描述客觀事物屬性的數、字符及所有能輸入到計算機中并被計算機程序識別 和處理的符號的集合。數據是計算機程序加工的原料。&#xff08;For Example : 聲音/圖像/字符串等&#xff09; 數據元…

嵌入式學習-土堆PyTorch(9)-day25

進入尾聲&#xff0c;一個完整的模型訓練 &#xff0c;點亮的第一個led#自己注釋版 import torch import torchvision.datasets from torch import nn from torch.utils.tensorboard import SummaryWriter import time # from model import * from torch.utils.data import Dat…

Java變量詳解:局部變量、成員變量、類變量區別及使用場景

作為Java開發者&#xff0c;深入理解不同變量的特性是寫出高質量代碼的基礎。本文將為你全面解析三種核心變量類型&#xff0c;并通過實戰案例展示它們的正確使用方式。一、變量類型概覽 1. 局部變量&#xff08;Local Variable&#xff09; 定義&#xff1a;在方法、構造方法或…

【收集電腦信息】collect_info.sh

收集電腦信息 collect_info.sh #!/bin/bashoutput"info.txt" > "$output"# 1. OS Version echo " 操作系統名稱及版本 " >> "$output" lsb_release -d | cut -f2- >> "$output" echo -e "\n" >…

服務器清理空間--主要是conda環境清理和刪除

1.查看空間情況 (base) zhouy24RL-DSlab:~/zhouy24Files$ df -h Filesystem Size Used Avail Use% Mounted on udev 252G 0 252G 0% /dev tmpfs 51G 4.9M 51G 1% /run /dev/nvme0n1p3 1.9T 1.7T 42G 98% / tmpfs 252G …

UE5多人MOBA+GAS 26、為角色添加每秒回血回藍(番外:添加到UI上)

文章目錄添加生命值和藍量的狀態標簽創建無限GE并應用監聽添加和去除標簽每秒回復配上UI添加生命值和藍量的狀態標簽 添加新的標簽 CRUNCH_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Stats_Health_Full)CRUNCH_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Stats_Health_Empty)CRUNCH_API U…

MetaGPT源碼剖析(三):多智能體系統的 “智能角色“ 核心實現——Role類

每一篇文章都短小精悍&#xff0c;不啰嗦。今天我們來深入剖析Role類的代碼實現。在多智能體協作系統中&#xff0c;Role&#xff08;角色&#xff09;就像現實世界中的 "員工"&#xff0c;是執行具體任務、參與協作的基本單位。這段代碼是 MetaGPT 框架的核心&#…

【項目經驗】小智ai MCP學習筆記

理論 1、什么是MCP MCP(Model Context Protocol&#xff0c;模型上下文協議)是一種開放式協議&#xff0c;它實現了LLM與各種工具的調用。使LLM從對話、生成式AI變成了擁有調用三方工具的AI。用官方的比喻&#xff0c;MCP就是USB-C接口&#xff0c;只要實現了這個接口&#x…

Matlab學習筆記:矩陣基礎

MATLAB學習筆記:矩陣基礎 作為MATLAB的核心,矩陣是處理數據的基礎工具。矩陣本質上是一個二維數組,由行和列組成,用于存儲和操作數值數據。在本節中,我將詳細講解矩陣的所有知識點,包括創建、索引、運算、函數等,確保內容通俗易懂。我會在關鍵地方添加MATLAB代碼示例,…