Spring第一課,了解IDEA里面的文件,回顧Cookie和Session,獲取Session,Cookie,Header的方式

目錄

IDEA第一課(熟悉里面內容)?

建立連接 -@RequestMapping ? ? ? ? ?路由映射

請求 ? ? ? ?

1.傳遞單個參數?編輯

2.多個參數?編輯

3.傳遞數組

4.傳遞一個集合,但是這里我們傳遞的時候發生了500的錯誤

簡單介紹JSON

回顧Cookie和Session

Cookie和Session的區別

獲取Cookie的兩種方式

設置Session的方式

獲取Session的問題

獲取Http請求中的Header信息


IDEA第一課(熟悉里面內容)?

resources資源目錄

static ? ? ? /static 靜態文件

templates ?主要是配置相關的代碼 /templates模版

application .properties ? ?SpringBoot項目的配置文件-十分重要

test測試代碼,注意這里是放的開發人員的測試代碼,與測試人員無關

作為一名開發人員,需要對自己的代碼質量負責,不能完全依賴測試QA

功能開發之后,需要先自測,自測通過才交給測試人員

注意??文件夾的顏色也是有區別-藍色與綠色的java。當然可以在下圖去設置

在當前頁面我們和前面學的Servlet不同,首先Spring自己帶Tomcat。

其次和我們之前前往的路徑也不同,原因就是看下面的日志,他寫的ContentPath為""即空。

現在的Spring完全就不需要我們自己去下載Tomcat,給我們進行的一個封裝,但是實際使用的還是http協議

Spring Boot是幫助我們快速構建項目的

Springmvc是其中Boot的一個模塊,能用這個項目進行jAVAweb項目開發,就是一個Springmvc的一個項目,是基于Servlet進行改進的

MVC其實可以看成一種思想,通過Spring進行實現稱為SpringMVC,但是當前階段,MVC概念又發生了一些變化,后端人員不涉及前端頁面的開發,所以也就沒有view層,view現在又有了一層解釋,之前返回的視圖,現在更像是返回視圖的數據。

學習SpringMVC

建立連接 -@RequestMapping ? ? ? ? ?路由映射

訪問地址,類的路徑+方法路徑(比如下面在類的前面添加了一個RequestMapping,那么類也會有路徑了,/可以省略,但是推薦不要省略(標準-前加/后不加)

RequestMapping支持Post和Get都可以

@RequestMapping("/hello")
@RestController
public class HelloController {
//此時就限定必須使用Get這個方法
//注解沒有寫屬性名字,默認就是value@RequestMapping(value = "/sayhi",method = RequestMethod.GET)public String sayHi(){return "hi,SpringBoot";}
}
請求 ? ? ? ?
1.傳遞單個參數

底層邏輯:從請求的參數中,獲取參數名為name的值,并且給name賦值

2.多個參數

多個參數也是一樣,順序無所謂,注意??哈我說的是age可以和那個name換

但是如果使用基本基本類型,必須要學會傳值,不傳值就會報錯。所以開發的時候我們統一建議使用包裝類

后端參數重命名-必定需要傳的(如果使用了重命名-就必須要使用@RequestParam注解里的名字。假如你與注解的名字不同,則會報400的錯誤

如果我們像下圖一樣進行改動,那么雖然不會報錯,但是會傳不過來參數,即默認的空

  public  String m5(@RequestParam(value = "name",required = false) String username){return "接收到的參數:"+username;}

以上寫的,就是在web交互,也就可以說是SpringMVC

注意哈url后面的問號查詢字符串

3.傳遞數組

當我們請求中,同一個參數有多個的時候

4.傳遞一個集合,但是這里我們傳遞的時候發生了500的錯誤

5開頭的通常是服務端發生錯誤

4開頭的往往是客戶端發生錯誤

如果看到5開頭的錯誤,第一反應去看后端日志,后端日志從下往上看,一段一段的看,先看最后一段的首行

他的意思是,他的默認是傳遞一個數組,而不是一個集合,所以需要一個注釋,來聲明它是一個集合,這樣,他就會可以用集合了

 @RequestMapping("/m6")public  String m7(@RequestParam List<String> listParam){return "接收到的參數ListParam:"+listParam+"長度"+listParam.size();}

簡單介紹JSON

本質上是一個字符串,表示對象的字符串,通常稱為JSON字符串

假如要傳遞注解,就要使用一個RequestBody

public  String m4(@RequestBody Person person){return "接收到的參數:"+person.toString();}

獲取URL中的參數

可以獲取一個,也可以獲取多個獲取多個就要自己去填寫,但是說需要注意他們的順序,而且選擇了順序之后,就需要往請求里面填寫東西(不能少填寫)

把文件傳遞到,當地的文件夾中,相當于我們平時下載的

 public String m10(@RequestPart MultipartFile file) throws IOException {System.out.println(file.getOriginalFilename());file.transferTo(new File("/Users/lcl/Desktop/py/" +file.getOriginalFilename()));return "success";}

回顧Cookie和Session

Http是無狀態的->http沒有記憶功能的,現在的請求和過一會的請求,同樣的請求參數,得到的結果是一樣的->處理邏輯是一樣的,而不是指數據。

Cookie是客戶端機制,Session是服務器端機制 ,他們會常常結合在一起使用。

Http是無狀態的-http沒有記憶功能,現在請求和過一會的請求,同樣的請求參數,得到的結果是一樣的->處理邏輯是一樣

Cookie(相當于是一個學生證,能夠查到你的信息)

理解Session(服務器機制,根據你的xx,有你的信息就能夠查到你)

首先先要理解什么是會話???????

在計算機領域,會話是一個客戶與服務器之間不中斷的請求響應,服務器能夠識別出來請求來自同一個用戶,當一個未知的用戶向Web應用程序發送第一個請求時,就開始了一個會話,當用戶明確結束會話或服務器有一個時限內,沒有收到任何用戶的任何請求的時候,會話就結束了。

Cookie和Session的區別

Cookie是客戶端保存信息的一種機制,Session是服務器端保存用戶信息的一種機制

Cookie和Session之間主要通過SessionId關聯起來的,SessionId是Cookie和Session之間的橋梁

Cookie和Session經常會在一起配合使用,但不是必須配合

獲取Cookie的兩種方式
下面是兩種方式拿到Cookie,第一種是拿到全部的Cookie. 
@RequestMapping("/getCookie")public String getCookie(HttpServletRequest request){Cookie[]cookies= request.getCookies();
//        for(Cookie cookie:cookies){
//            System.out.println(cookie.getName()+":"+cookie.getValue());
//        }if (cookies!=null) {Arrays.stream(cookies).forEach(cookie -> {System.out.println(cookie.getName() + ":" + cookie.getValue());});}return "獲取cookie成功";}//使用注解的第二個方式,只能一個一個拿@RequestMapping("/getCookie2")
public String getCookie2(@CookieValue String bite,@CookieValue String aaa){return "cookie存取的值"+bite+",aaa"+aaa;}
設置Session的方式
 public String setSession(HttpServletRequest request){HttpSession session= request.getSession();session.setAttribute("username","zhangsan");return "success";}
獲取Session的問題
//方法1:(原始版本,剛開始session為空。)
@RequestMapping("/getSession")public String getSession(HttpServletRequest request){HttpSession session= request.getSession(false);if(session!=null){String username=(String) session.getAttribute("username");return "登錄用戶"+username;}return "session為空";
}
方法2:
@RequestMapping("/getSession2")
//默認是一個必須傳遞的參數,所以加上false(這樣你不傳遞參數也不會報錯)
public  String getSession2(@SessionAttribute (required = false) String username){return "username:"+username;
}
方法3: Spring有一個內置的對象,和第一種方式相像,可以直接使用HttpSession等同于第一種的那個
request.Session(true)
@RequestMapping("/getSession3")
//內置對象,在需要的時候,加上即可,不需要的時候可以不寫
public String getSesson3(HttpSession session){String username=(String) session.getAttribute("username");return "登入用戶"+username;
}
獲取Http請求中的Header信息
@RequestMapping("/getHeader")
public  String getHeader(HttpServletRequest request){
//User-Agent相當于是一個keyString userAgent= request.getHeader("User-Agent");return "userAgent"+userAgent;
}
@RequestMapping("/getHeader2")
public String getHeader(@RequestHeader("User-Agent")String userAgent){return "userAgent"+userAgent;
}

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

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

相關文章

js檢測dom變化的方法:MutationObserver

前言 檢測一個原生dom的變化,如一個div的顏色,大小,所在位置,內部元素的屬性是否變化,更深層dom樹上的變化等等。 都可以使用一個window上暴露出來的一個api:MutationObserver 語法 官方地址:MutationObserver.MutationObserver() - Web API 接口參考 | MDN 使用new Mutat…

【大數據】Docker部署HMS(Hive Metastore Service)并使用Trino訪問Minio

本文參考鏈接置頂&#xff1a; Presto使用Docker獨立運行Hive Standalone Metastore管理MinIO&#xff08;S3&#xff09;_hive minio_BigDataToAI的博客-CSDN博客 一. 背景 團隊要升級大數據架構&#xff0c;需要摒棄hadoop&#xff0c;底層使用Minio做存儲&#xff0c;應用…

干貨 | 攜程酒店基于血緣元數據的數據流程優化實踐

作者簡介 九號&#xff0c;攜程數據技術專家&#xff0c;關注數據倉庫架構、數據湖、流式計算、數據治理。 一、背景 元數據MetaData狹義的解釋是用來描述數據的數據&#xff0c;廣義的來看&#xff0c;除了業務邏輯直接讀寫處理的那些業務數據&#xff0c;所有其它用來維持整個…

kafka詳細講解與安裝

Kafka是一種分布式流處理平臺&#xff0c;具有高吞吐量、可擴展性和容錯性。它最初由LinkedIn開發&#xff0c;現已成為Apache軟件基金會的頂級項目。Kafka廣泛應用于實時數據流處理、日志收集、消息隊列等場景。 以下是關于Kafka的簡要講解和安裝步驟&#xff1a; 一、Kafka…

ubuntu22.04 arrch64版操作系統編譯zlmediakit

腳本 系統沒有cmake&#xff0c;需要通過apt先進行下載&#xff0c;下面的腳本已經包含了 # 安裝依賴 gcc-c.x86_64 這個不加的話會有問題 sudo yum -y install gcc gcc-c libssl-dev libsdl-dev libavcodec-dev libavutil-dev ffmpeg git openssl-devel gcc-c.x86_64 ca…

csrf漏洞修復

漏洞說明&#xff1a;通過篡改請求頭中的Referer值依舊能夠訪問到接口。 通過http請求頭里面的Referer隨意訪問接口 通過下面兩個代碼類程序來實現你的程序不會被攻擊&#xff0c;里面有兩個實體&#xff0c;如果你感覺這個程序對你有用&#xff0c;聯系我&#xff0c;我私發…

CentOS 7 安裝 Weblogic 14 版本

安裝JDK程序 注意&#xff1a;安裝weblogic前&#xff0c;先安裝JDK&#xff01;&#xff08;要求jdk(1.7以上)&#xff09;&#xff1a; 一、創建用戶組weblogic及用戶weblogic groupadd weblogic useradd -g weblogic weblogic二、將下載好的jdk及weblogic上傳至/home/webl…

2分鐘快速實現非邏輯卷磁盤擴容

在虛擬機環境中&#xff0c;您可以擴展虛擬硬盤的大小而不影響數據。以下是擴展 /dev/sdb 磁盤從200G到500G并擴展 /dev/sdb1 分區到新大小的步驟&#xff1a; 關閉相關服務&#xff1a;確保沒有服務正在訪問 /app 分區。 關閉虛擬機&#xff1a;關閉您要更改磁盤大小的虛擬機…

「首屆廣州百家新銳企業」名單出爐!數說故事遴選入圍

11月20日&#xff0c;由中共廣州市委統戰部、市工商聯、市工信局、市國資委、市科技局聯合主辦的首屆廣州百家新銳企業融通創新交流會在廣州成功舉辦。 為推動廣州市中小民營企業的創新發展&#xff0c;踐行新發展理念&#xff0c;厚植廣州產業根基&#xff0c;現場發布首屆廣…

qt實現播放視屏的時候,加載外掛字幕(.srt文件解析)

之前用qt寫了一個在windows下播放視頻的軟件&#xff0c;具體介紹參見qt編寫的視頻播放器&#xff0c;windows下使用&#xff0c;精致小巧_GreenHandBruce的博客-CSDN博客 后來發現有些視頻沒有內嵌字幕&#xff0c;需要外掛字幕&#xff0c;這時候&#xff0c;我就想著把加載…

SELinux零知識學習二十六、SELinux策略語言之類型強制(11)

接前一篇文章:SELinux零知識學習二十五、SELinux策略語言之類型強制(10) 二、SELinux策略語言之類型強制 3. 訪問向量規則 AV規則就是按照對客體類別的訪問許可指定具體含義的規則,SELinux策略語言目前支持四類AV規則: allow:表示允許主體對客體執行允許的操作。nevera…

docker compose啟動多個服務,如何查看多個服務的日志

使用docker-compose的--scale啟動多個服務&#xff0c;如何查看多個服務的日志 docker-compose -f yml路徑 logs -f --tail 100第一個-f指定yml路徑&#xff0c;不然會報錯誤no configuration file provided: not found 第二個-f是ogs的參數&#xff0c;表示實時刷新&#xff…

YOLOv5結合華為諾亞VanillaNet Block模塊

???YOLOv5實戰寶典--星級指南:從入門到精通,您不可錯過的技巧 ??-- 聚焦于YOLO的 最新版本, 對頸部網絡改進、添加局部注意力、增加檢測頭部,實測漲點 ?? 深入淺出YOLOv5:我的專業筆記與技術總結 ??-- YOLOv5輕松上手, 適用技術小白,文章代碼齊全,僅需 …

力扣labuladong一刷day19天花式遍歷

力扣labuladong一刷day19天花式遍歷 文章目錄 力扣labuladong一刷day19天花式遍歷一、48. 旋轉圖像二、54. 螺旋矩陣三、59. 螺旋矩陣 II 一、48. 旋轉圖像 題目鏈接&#xff1a;https://leetcode.cn/problems/rotate-image/ 思路&#xff1a;把矩陣向右旋轉90度&#xff0c;要…

完美解決AttributeError: ‘NoneType‘ object has no attribute ‘append‘

文章目錄 一、原始代碼二、修改后的代碼--最后一行代碼append進行了修改總結 一、原始代碼 logits_list [] # 創建一個空列表來存儲每個logitslabels_list []for i, batch in enumerate(test_tasks):with torch.no_grad():logits, labels, loss, acc self.fast_adapt(batc…

斯坦福大學引入FlashFFTConv來優化機器學習中長序列的FFT卷積

斯坦福大學的FlashFFTConv優化了擴展序列的快速傅里葉變換(FFT)卷積。該方法引入Monarch分解&#xff0c;在FLOP和I/O成本之間取得平衡&#xff0c;提高模型質量和效率。并且優于PyTorch和FlashAttention-v2。它可以處理更長的序列&#xff0c;并在人工智能應用程序中打開新的可…

【Python百寶箱】Python中的音視頻處理: 探索多樣化的庫和工具

Python中的音視頻處理: 探索多樣化的庫和工具 前言 在數字化時代&#xff0c;音視頻處理不僅僅是娛樂產業的需求&#xff0c;還滲透到了教育、醫療、安防等多個領域。Python作為一門強大而靈活的編程語言&#xff0c;為開發人員提供了豐富的資源來處理和分析音視頻數據。本文…

SQL Server Profiler基礎使用

文章目錄 SQL Server Profiler基礎使用簡介如何打開直接打開Microsoft SQL Server Management Studio工具欄打開 配置跟蹤新建跟蹤跟蹤屬性配置常規配置事件選擇 啟動跟蹤跟蹤時執行腳本跟蹤記錄 暫停跟蹤停止跟蹤 SQL Server Profiler基礎使用 簡介 一個圖形界面工具&#x…

逆矩陣相關性質與例題

1.方陣的行列式&#xff1a;就是將方陣中的每一個元素轉換至行列式中。 1.性質一&#xff1a;轉置方陣的行列式等于轉置前的行列式。&#xff08;對標性質&#xff1a;行列式與它的轉置行列式相等&#xff09; 2.性質二&#xff1a;|ka||a|*k的n次方&#xff0c;n為方陣階數。 …

芯片設計—低功耗isolation cell

&#xff08;一&#xff09;低功耗isolation cell的目的 低功耗架構設計需要前后端拉通規劃&#xff0c;前端設計有PMU功耗管理單元&#xff0c;比如A模塊電壓常開&#xff0c;B模塊電壓可關斷&#xff0c;那么請思考&#xff0c;當B模塊關斷電壓后&#xff0c;B模塊輸出到A模…