JavaWeb基礎-HTTP協議、請求協議、響應協議

一. HTTP協議

? ? ? ? 1. HTTP協議:Hyper Text Transfer Protocol,超文本傳輸協議,規定了瀏覽器和服務器之間數據傳輸的規則

? ? ? ? 2. HTTP協議特點:

? ? ? ? ? ? ? ? ① 基于TCP協議:面向鏈接,安全

? ? ? ? ? ? ? ? ② 基于請求-響應模型的:一次請求對應一次響應

? ? ? ? ? ? ? ? ③ HTTP協議是無狀態的協議:對于事物處理沒有記憶能力,每次請求-響應都是獨立的(缺點:多次請求間數據不能共享;優點:速度快)

二. HTTP-請求協議

? ? ? ? 1. 請求數據格式

? ? ? ? 請求方式-get請求參數在請求行中,沒有請求體(如:localhost:8080/hello?name=卡莎);get請求大寫在瀏覽器中是有限制的。

? ? ? ? 請求方式-post請求參數在請求體中;post請求大小是沒有限制的

? ? ? ? 2. 請求數據獲取

? ? ? ? ? ? ? ? (1) web服務器(Tomcat)對HTTP協議的請求數據進行解析,并進行了封裝(HttpServletRequest),在調用Controller方法的時候傳遞給了該方法。這樣,就使得程序員不必直接對協議進行操作,web開發更加便捷

package com.example;import jakarta.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class RequestController {@RequestMapping("/request")public String request(HttpServletRequest request){//1.獲取請求方式System.out.println("獲取請求方式" + request.getMethod());//2.獲取URL地址System.out.println("獲取URL地址" +request.getRequestURL());System.out.println("獲取URI地址" +request.getRequestURI());//3.獲取請求協議System.out.println("獲取請求協議" +request.getProtocol());//4.獲取請求參數-name.ageSystem.out.println("獲取請求參數" +request.getParameter("name"));System.out.println("獲取請求參數" +request.getParameter("age"));//5.獲取請求頭-AcceptSystem.out.println("獲取請求頭Accept" +request.getHeader("Accept"));return "OK";}
}

三. HTTP-響應協議

? ? ? ? 1. 響應數據格式

? ? ? ? ?2. 響應數據設置

? ? ? ? ? ? ? ? 1. web服務器對HTTP協議的響應數據進行了封裝(HttpServletResponse),并在調用Controller方法的時候傳遞給了該方法。這樣就使得程序員不必直接對協議進行操作,讓Web開發更加便捷

package com.example;import jakarta.servlet.http.HttpServletResponse;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.io.IOException;@RestController
public class ResponseController {/** 方式一 原始HttpServletResponse* */@RequestMapping("/response")public void response(HttpServletResponse response) throws IOException {//1.設置響應狀態碼response.setStatus(HttpServletResponse.SC_OK);//2.設置響應頭response.setHeader("Content-Type","text/html");//3.設置響應體response.getWriter().write("<h1>Hello Response</h1>");}/** 方式二:spring 設置響應數據* */@RequestMapping("/response2")public ResponseEntity<String> responseEntity() {//鏈式編程return ResponseEntity.status(HttpServletResponse.SC_OK).header("Content-Type","text/html").body("<h1>Hello ResponseEntity</h1>");}
}

??

? ? ? ? 注意:響應狀態碼 和 響應頭如果沒有特殊要求的話,通常不手動設定。服務器會根據請求處理的邏輯,自動設置響應狀態碼和響應頭

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

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

相關文章

search_fields與filterset_fields的使用

在Django中&#xff0c;search_fields 和 filterset_fields 可以在視圖類中使用&#xff0c;尤其是在 Django REST Framework (DRF) 中。它們分別用于實現搜索和過濾功能。以下是它們在視圖類中的具體使用方法。 1. search_fields 在視圖類中的使用 search_fields 是 DRF 中 S…

數據建模流程: 概念模型>>邏輯模型>>物理模型

數據建模流程 概念模型 概念模型是一種高層次的數據模型&#xff0c;用于描述系統中的關鍵業務概念及其之間的關系。它主要關注業務需求和數據需求&#xff0c;而不涉及具體的技術實現細節。概念模型通常用于在項目初期幫助業務人員和技術人員達成共識&#xff0c;確保對業務需…

在 Ubuntu 中用 Docker 安裝 RAGFlow

一、安裝 1.前提條件 CPU > 4 核 RAM > 16 GB Disk > 50 GB Docker > 24.0.0 & Docker Compose > v2.26.1 安裝docker&#xff1a;在Ubuntu中安裝Docker并配置國內鏡像 2.設置 vm.max_map_count #設置 vm.max_map_count 不小于 262144# 查看 sysctl vm.…

Java隨機生成n位驗證碼

Java學習筆記 今天寫一個隨機生成n位的驗證碼&#xff0c;包含字母大小寫和數字&#xff0c;直接見代碼。 package com.itheima.hello;// 生成一個隨機位數的驗證碼 public class ScannerDemo1 {public static void main(String[] args){System.out.println(getCode(4));Syst…

go復習目錄

全部都是博主的學習筆記&#xff0c;放著鏈接用的&#xff0c;自己收藏&#xff0c;包含基礎內容、go三方包、vue、數據結構、web框架、設計模式、docker、go連接kafka、redis、grpc、中間件 文章目錄 基礎內容go三方包vue數據結構web框架設計模式dockergo連接kafkaredisgrpc中…

23種設計模式-創建型模式-抽象工廠

文章目錄 簡介場景問題1. 風格一致性失控2. 對象創建硬編碼3. 產品族管理失效 解決總結 簡介 抽象工廠是一種創建型設計模式&#xff0c;可以生成相關對象系列&#xff0c;而無需指定它們的具體類。 場景 假設你正在寫一個家具店模擬器。 你的代碼這些類組成&#xff1a; 相…

案例:網絡命名空間模擬隔離主機場景

場景描述 假設我們需要在同一臺物理機上模擬兩臺獨立的主機&#xff08;Host A 和 Host B&#xff09;&#xff0c;它們分別位于不同的網絡命名空間中&#xff0c;并通過虛擬以太網對&#xff08;veth pair&#xff09;進行通信。目標是展示網絡命名空間的隔離性和跨命名空間的…

新聞發布時間抽取(二)

1. 再論抽取方法 在前一期實驗中&#xff0c;對gne組件進行分析和完善&#xff0c;對三種時間抽取的方法進行了實驗對比。 在對抽取結果進行個例分析的過程中&#xff0c;我發現此前實驗存在幾個問題&#xff1a; 抽取的1000篇新聞存在一定的重復&#xff0c;經過ID去重大約減…

算法基礎——棧

一、棧的概念 棧是?種只允許在?端進?數據插?和刪除操作的線性表。 進?數據插?或刪除的?端稱為棧頂&#xff0c;另?端稱為棧底。不含元素的棧稱為空棧。進棧就是往棧中放?元素&#xff0c;出棧就是將元素彈出棧頂。 二、棧的模擬實現 1. 創建 本質還是線性表&#…

Android11至15系統定制篇

Android 11至15系統定制核心要點解析 一、Android 11關鍵定制特性 ?分區存儲強制化? 公共目錄&#xff08;如Downloads、Pictures&#xff09;與應用專屬目錄分離&#xff0c;應用更新后無法通過requestLegacyExternalStorage繞過限制?1。需申請MANAGE_EXTERNAL_STORAGE權限…

macOS 使用 enca 識別 文件編碼類型(比 file 命令準確)

文章目錄 macOS 上安裝 enca基本使用起因 - iconv關于 enca安裝 Encaenca & enconv 其它用法 macOS 上安裝 enca brew install enca基本使用 enca filepath.txt示例 $ enca 動態規劃算法.txt [0] Simplified Chinese National Standard; GB2312CRLF line terminat…

線段樹與掃描線 —— 詳解算法思想及其C++實現

目錄 一、線段樹&#xff08;Segment Tree&#xff09; 基本概念 結構 操作 示例代碼 二、掃描線&#xff08;Sweep Line&#xff09; 基本概念 應用場景 示例代碼&#xff08;矩形面積并集&#xff09; 三、總結 一、線段樹&#xff08;Segment Tree&#xff09; 基本…

匯編代碼中嵌入回調函數的優化說明

一、概述 在 PowerPC 的匯編代碼中&#xff0c;我們需要實現調用 C 函數&#xff08;例如回調函數&#xff09;&#xff0c;并傳遞參數。本文將詳細介紹如何通過一系列步驟完成這一目標&#xff0c;包括代碼示例和詳細的注釋。 二、調用 C 函數的基本步驟及代碼 1. 保存工作寄…

Uni-App 雙欄聯動滾動組件開發詳解 (電梯導航)

本文基于提供的代碼實現一個左右聯動的滾動組件&#xff0c;以下是詳細的代碼解析與實現原理說明&#xff1a; <!--雙欄聯動滾動組件 - 技術解析功能特性&#xff1a;1. 左側導航欄與右側內容區雙向聯動2. 自適應容器高度3. 平滑滾動定位4. 動態內容位置計算 --> <te…

軟考復習-傳輸介質與編碼

傳輸介質 雙絞線 傳輸距離100一200m&#xff0c;即網線&#xff0c;有多種分類 UTP非屏蔽雙絞線 STP屏蔽雙絞線 線序標準有兩種為&#xff1a; T568A標準&#xff1a;綠白、綠、橙白、藍、藍白、橙、棕白、棕 T568B標準&#xff1a;橙白、橙、綠白、藍、藍白、綠、棕白、…

論文閱讀筆記:Denoising Diffusion Probabilistic Models (3)

論文閱讀筆記&#xff1a;Denoising Diffusion Probabilistic Models (1) 論文閱讀筆記&#xff1a;Denoising Diffusion Probabilistic Models (2) 論文閱讀筆記&#xff1a;Denoising Diffusion Probabilistic Models (3) 4、損失函數逐項分析 可以看出 L L L總共分為了3項…

PyTorch 面試題及參考答案(精選100道)

目錄 PyTorch 的動態計算圖與 TensorFlow 的靜態計算圖有何區別?動態圖的優勢是什么? 解釋張量(Tensor)與 NumPy 數組的異同,為何 PyTorch 選擇張量作為核心數據結構? 什么是 torch.autograd 模塊?它在反向傳播中的作用是什么? 如何理解 PyTorch 中的 nn.Module 類?…

#C8# UVM中的factory機制 #S8.1.4# 約束的重載

今天,復習一下《UVM實戰》一書中的 關于約束的重載 章節學習。 一 問題引導 文件:src/ch8/section8.1/8.1.2/rand_mode/my_transaction.sv4 class my_transaction extends uvm_sequence_item; …17 constraint crc_err_cons{18 crc_err == 1b0;19 }20 const…

空調遙控器低功耗單片機方案

RAMSUN空調遙控器采用先進的32位低功耗單片機作為核心控制器&#xff0c;通過優化軟件算法和硬件設計&#xff0c;實現了空調遙控器的低功耗運行。單片機集成了多種功能模塊&#xff0c;包括紅外發射、按鍵掃描、電源管理等&#xff0c;有效降低了整體功耗。同時&#xff0c;該…

結構型——代理模式

結構型——代理模式 代理模式指的是通過創建一個代理來控制對原始對象的訪問。代理在客戶端與實際對象之間充當“中介” 特點 訪問控制&#xff1a;代理對象可以控制對實際對象的訪問&#xff0c;從而實現對訪問權限的控制。延遲加載&#xff1a;代理對象可以在實際對象被調…