學習筆記——@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
  • 1. 說明 /* Performs operations on System.String instances that contain file or directory path information. These operations are performed in a cross-pla ...
  • 視頻地址:【WebApi+Vue3從0到1搭建《許可權管理系統》系列視頻:搭建JWT系統鑒權-嗶哩嗶哩】 https://b23.tv/R6cOcDO qq群:801913255 一、在appsettings.json中設置鑒權屬性 /*jwt鑒權*/ "JwtSetting": { "Issuer" ...
  • 引言 集成測試可在包含應用支持基礎結構(如資料庫、文件系統和網路)的級別上確保應用組件功能正常。 ASP.NET Core 通過將單元測試框架與測試 Web 主機和記憶體中測試伺服器結合使用來支持集成測試。 簡介 集成測試與單元測試相比,能夠在更廣泛的級別上評估應用的組件,確認多個組件一起工作以生成預 ...
  • 在.NET Emit編程中,我們探討了運算操作指令的重要性和應用。這些指令包括各種數學運算、位操作和比較操作,能夠在動態生成的代碼中實現對數據的處理和操作。通過這些指令,開發人員可以靈活地進行算術運算、邏輯運算和比較操作,從而實現各種複雜的演算法和邏輯......本篇之後,將進入第七部分:實戰項目 ...
  • 前言 多表頭表格是一個常見的業務需求,然而WPF中卻沒有預設實現這個功能,得益於WPF強大的控制項模板設計,我們可以通過修改控制項模板的方式自己實現它。 一、需求分析 下圖為一個典型的統計表格,統計1-12月的數據。 此時我們有一個需求,需要將月份按季度劃分,以便能夠直觀地看到季度統計數據,以下為該需求 ...
  • 如何將 ASP.NET Core MVC 項目的視圖分離到另一個項目 在當下這個年代 SPA 已是主流,人們早已忘記了 MVC 以及 Razor 的故事。但是在某些場景下 SSR 還是有意想不到效果。比如某些靜態頁面,比如追求首屏載入速度的時候。最近在項目中回歸傳統效果還是不錯。 有的時候我們希望將 ...
  • System.AggregateException: 發生一個或多個錯誤。 > Microsoft.WebTools.Shared.Exceptions.WebToolsException: 生成失敗。檢查輸出視窗瞭解更多詳細信息。 內部異常堆棧跟蹤的結尾 > (內部異常 #0) Microsoft ...
  • 引言 在上一章節我們實戰了在Asp.Net Core中的項目實戰,這一章節講解一下如何測試Asp.Net Core的中間件。 TestServer 還記得我們在集成測試中提供的TestServer嗎? TestServer 是由 Microsoft.AspNetCore.TestHost 包提供的。 ...
  • 在發現結果為真的WHEN子句時,CASE表達式的真假值判斷會終止,剩餘的WHEN子句會被忽略: CASE WHEN col_1 IN ('a', 'b') THEN '第一' WHEN col_1 IN ('a') THEN '第二' ELSE '其他' END 註意: 統一各分支返回的數據類型. ...
  • 在C#編程世界中,語法的精妙之處往往體現在那些看似微小卻極具影響力的符號與結構之中。其中,“_ =” 這一組合突然出現還真不知道什麼意思。本文將深入剖析“_ =” 的含義、工作原理及其在實際編程中的廣泛應用,揭示其作為C#語法奇兵的重要角色。 一、下劃線 _:神秘的棄元符號 下劃線 _ 在C#中並非 ...