學習筆記——@PathVariable註解基本使用;@PathVariable註解屬性;REST風格CRUD概述;實現PUT&DELETE提交方法步驟;SpringMVC處理請求數據、請求頭、處理Cookie信息

来源:https://www.cnblogs.com/isDaHua/archive/2023/01/19/17061710.html
-Advertisement-
Play Games

2023-01-19 一、@PathVariable註解基本使用 1、獲取URL中占位符 2、占位符語法:{} 3、實例代碼: @RequestMapping("testPathVariable/{empId}") public String testPathVariable(@PathVariab ...


2023-01-19

一、@PathVariable註解基本使用

1、獲取URL中占位符

2、占位符語法:{}

3、實例代碼:

@RequestMapping("testPathVariable/{empId}")
    public String testPathVariable(@PathVariable("empId")Integer empId){
        System.out.println(" empId = " + empId);
        return SUCCESS;
    }
<a th:href="@{/EmpController/testPathVariable/1001}">測試testPathVariable</a><br>

二、@PathVariable註解屬性

1、value屬性

(1)類型:String

(2)作用:設置占位符中的參數名

2、name屬性

(1)類型:String

3、required屬性

(1)類型:boolean

(2)作用:設置當前參數是否必須入參

①true:表示當前參數必須入參,如未入參數會報以下錯誤

Missing URI template variable 'empId' for method parameter of type Integer

②false:表示當前參數不必須入參,如未入參,會裝配null值 

三、REST風格CRUD概述

1、REST的CRUD與傳統風格CRUD對比

 

2、REST風格CRUD優勢

(1)提高網站排名

排名方式:

①競價排名

②技術排名

(2)便於第三方平臺對接

四、SpringMVC環境搭建

五、REST風格CRUD練習——查詢

六、實現PUT&DELETE提交方法步驟

1、註冊過濾器HiddenHttpMethodFilter

2、設置表單的提交方法為POST

3、設置參數:_method=PUT或_method=DELETE

七、源碼解析HiddenHttpMethodFilter


public static final String DEFAULT_METHOD_PARAM = "_method";
private String methodParam = "_method";

protected
void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { HttpServletRequest requestToUse = request; if ("POST".equals(request.getMethod()) && request.getAttribute("javax.servlet.error.exception") == null) { String paramValue = request.getParameter(this.methodParam); if (StringUtils.hasLength(paramValue)) { String method = paramValue.toUpperCase(Locale.ENGLISH); if (ALLOWED_METHODS.contains(method)) { requestToUse = new HiddenHttpMethodFilter.HttpMethodRequestWrapper(request, method); } } } filterChain.doFilter((ServletRequest)requestToUse, response); }
private static class HttpMethodRequestWrapper extends HttpServletRequestWrapper {
        private final String method;

        public HttpMethodRequestWrapper(HttpServletRequest request, String method) {
            super(request);
            this.method = method;
        }

        public String getMethod() {
            return this.method;
        }
    }

八、SpringMVC處理請求數據

1、使用Servlet處理請求數據

(1)請求參數

Spring param = request.getParameter();

(2)請求頭

request.getHeader()

(3)Cookie

request.getCookies();

2、處理請求參數

(1)預設情況:可以將請求參數名,與入參參數名一致的參數,自動入參(自動類型轉換)。

(2)@RequestParam註解

①作用:如請求參數與入參參數

②屬性

value:是String類型;作用:設置需要入參的參數名

name:是String類型;作用:與value屬性作用一致

required:是Boilean類型;作用:設置當前參數,是否必須入參

defaultValue:是String類型;作用:當裝配數值未null時,指定當前defaultValue預設值

九、處理請求頭

1、語法:@RequestHeader註釋

2、屬性

(1)value:

①類型:String

②作用:設置需要獲取請求頭名稱

(2)name:

①類型:String

②作用:與value屬性作用一致

(3)required:

①類型:Boilean

②作用:設置當前參數,是否必須入參

(4)defaultValue:

①類型:String類型

②作用:當裝配數值未null時,指定當前defaultValue預設值

十、處理Cookie信息

1、語法:@CookieValue獲取Cookie數值

2、屬性:同上

3、實例代碼:

<a th:href="@{/setCookie}">設置Cookie</a>
<a th:href="@{/getCookie}">獲取Cookie</a>
@RequestMapping("/setCookie")
    public String setCookie(HttpSession httpSession){
        System.out.println("httpSession.getId() = " + httpSession.getId());
        return SUCCESS;
    }

    @RequestMapping("/getCookie")
    public String getCookie(@CookieValue("JSESSIONID")String cookieValue){
        System.out.println("cookieValue = " + cookieValue);
        return SUCCESS;
    }

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 運行環境:Window10,.Net7.0; 編者:烏龍哈里 2023-01-13 經常碰到兩個控制項需要相互傳遞消息,這時候需要用到事件。比如現有兩個類如下: class AA { private string Text = "AA"; public void SetText(string s) { ...
  • Cortex M 的中斷和優先順序, 首先要區分開 中斷 和 中斷優先順序 這是兩個不同的東西, 對於 Cortex-M0 和 Cortex-M0+ 內核, 除了系統內建中斷外, 支持最多 32 個中斷. 對於 Cortex-M3 內核, 除了 16 個內核中斷外, 支持最多 240 個中斷, 有8-b... ...
  • 分組數據 數據分組 分組允許把數據分為多個邏輯組,以便能對每個組進行聚集計算。 創建分組 分組是在SELECT語句的GROUP BY子句中建立的: SELECT vend_id, COUNT(*) AS num_prods FROM products GROUP BY vend_id; 註意: GR ...
  • 關於資料庫的性能優化其實是一個很複雜的大課題,很難通過一篇帖子講的很全面和深刻,這也就是為什麼我的標題是‘淺析’,程式員的成長一定是要付出代價和成本,因為只有真的在一線切身體會到當時的緊張和壓力,對於一件事情才能印象深刻,但反之也不能太過於強調代價,如果可以通過一些別人的分享就可以規避一些自己業務的... ...
  • 在 Vue 中,如果直接對數組進行操作,比如使用下標直接修改元素, Vue 是無法監測到這種變化的,導致無法觸發視圖更新。因此如何監測數組變化是值得關註的問題。 ...
  • 項目場景: 基於electron + Vue + node.js + express + mysql + evanpatchouli-mysql + Ant-Design-Vue,編寫一款屬於自己的輕量級MySQL資料庫界面工具。 問題列表 如何動態渲染高度自定義的Ant Design Table? ...
  • 概念 Array 數組是有序的元素序列。 語法 new Array(length) new Array(element1) new Array(element1, element2) new Array(element1, element2, element3) new Array(element1 ...
  • 最近看了一本書《解構-領域驅動設計》,書中提出了領域驅動設計統一過程(DDDRUP),它指明瞭實踐 DDD 的具體步驟,並很好地串聯了各種概念、模式和思想。因此,我對書本內容做了梳理、簡化,融入自己的理解,並結合之前閱讀的書籍以及實踐經驗,最終形成這篇文章。希望可以幫助大伙理順 DDD 的各種概念、... ...
一周排行
    -Advertisement-
    Play Games
  • Dapr Outbox 是1.12中的功能。 本文只介紹Dapr Outbox 執行流程,Dapr Outbox基本用法請閱讀官方文檔 。本文中appID=order-processor,topic=orders 本文前提知識:熟悉Dapr狀態管理、Dapr發佈訂閱和Outbox 模式。 Outbo ...
  • 引言 在前幾章我們深度講解了單元測試和集成測試的基礎知識,這一章我們來講解一下代碼覆蓋率,代碼覆蓋率是單元測試運行的度量值,覆蓋率通常以百分比表示,用於衡量代碼被測試覆蓋的程度,幫助開發人員評估測試用例的質量和代碼的健壯性。常見的覆蓋率包括語句覆蓋率(Line Coverage)、分支覆蓋率(Bra ...
  • 前言 本文介紹瞭如何使用S7.NET庫實現對西門子PLC DB塊數據的讀寫,記錄了使用電腦模擬,模擬PLC,自至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1.Windows環境下鏈路層網路訪問的行業標準工具(WinPcap_4_1_3.exe)下載鏈接:http ...
  • 從依賴倒置原則(Dependency Inversion Principle, DIP)到控制反轉(Inversion of Control, IoC)再到依賴註入(Dependency Injection, DI)的演進過程,我們可以理解為一種逐步抽象和解耦的設計思想。這種思想在C#等面向對象的編 ...
  • 關於Python中的私有屬性和私有方法 Python對於類的成員沒有嚴格的訪問控制限制,這與其他面相對對象語言有區別。關於私有屬性和私有方法,有如下要點: 1、通常我們約定,兩個下劃線開頭的屬性是私有的(private)。其他為公共的(public); 2、類內部可以訪問私有屬性(方法); 3、類外 ...
  • C++ 訪問說明符 訪問說明符是 C++ 中控制類成員(屬性和方法)可訪問性的關鍵字。它們用於封裝類數據並保護其免受意外修改或濫用。 三種訪問說明符: public:允許從類外部的任何地方訪問成員。 private:僅允許在類內部訪問成員。 protected:允許在類內部及其派生類中訪問成員。 示 ...
  • 寫這個隨筆說一下C++的static_cast和dynamic_cast用在子類與父類的指針轉換時的一些事宜。首先,【static_cast,dynamic_cast】【父類指針,子類指針】,兩兩一組,共有4種組合:用 static_cast 父類轉子類、用 static_cast 子類轉父類、使用 ...
  • /******************************************************************************************************** * * * 設計雙向鏈表的介面 * * * * Copyright (c) 2023-2 ...
  • 相信接觸過spring做開發的小伙伴們一定使用過@ComponentScan註解 @ComponentScan("com.wangm.lifecycle") public class AppConfig { } @ComponentScan指定basePackage,將包下的類按照一定規則註冊成Be ...
  • 操作系統 :CentOS 7.6_x64 opensips版本: 2.4.9 python版本:2.7.5 python作為腳本語言,使用起來很方便,查了下opensips的文檔,支持使用python腳本寫邏輯代碼。今天整理下CentOS7環境下opensips2.4.9的python模塊筆記及使用 ...