一 請求響應
1. 請求(Request)
客戶端向服務器發送的HTTP請求,通常包含以下內容:
-
請求行:HTTP方法(GET/POST等)、請求的URL、協議版本。
-
請求頭(Headers):客戶端信息(如瀏覽器類型、支持的語言)、Cookie、內容類型等。
-
請求體(Body):POST/PUT請求時攜帶的數據(如表單參數、JSON)。
在JavaWeb中的處理:
-
Servlet通過
HttpServletRequest
對象接收請求:
protected void doGet(HttpServletRequest request, HttpServletResponse response) {// 獲取請求參數(如URL中的參數)String username = request.getParameter("username");// 獲取請求頭信息String userAgent = request.getHeader("User-Agent");
}
2. 響應(Response)
服務器處理請求后返回給客戶端的HTTP響應,通常包含:
-
狀態行:狀態碼(如200成功、404未找到)、狀態描述。
-
響應頭(Headers):內容類型(如HTML/JSON)、Cookie、緩存控制等。
-
響應體(Body):返回的實際內容(如HTML頁面、JSON數據)。
在JavaWeb中的處理:
-
Servlet通過
HttpServletResponse
對象生成響應:
protected void doGet(HttpServletRequest request, HttpServletResponse response) {// 設置響應內容類型(如HTML或JSON)response.setContentType("text/html;charset=UTF-8");// 寫入響應內容PrintWriter out = response.getWriter();out.println("<h1>Hello, World!</h1>");// 設置響應狀態碼(可選)response.setStatus(200);
}
3. 常見場景
-
GET請求:獲取數據(如訪問網頁),參數通過URL傳遞。
-
POST請求:提交數據(如表單提交),參數通過請求體傳遞。
-
重定向:服務器返回302狀態碼,讓客戶端跳轉到新URL。
response.sendRedirect("/new-page.jsp");
返回JSON:常用于前后端分離項目。
response.setContentType("application/json;charset=UTF-8");
String json = "{\"name\":\"Tom\", \"age\":20}";
out.print(json);
4. 典型流程
-
客戶端發送HTTP請求到服務器(如訪問
/login
)。 -
服務器解析請求,交給對應的Servlet處理。
-
Servlet通過
request
獲取參數,執行業務邏輯(如查詢數據庫)。 -
Servlet通過
response
生成響應(返回頁面或數據)。 -
客戶端接收并渲染響應結果。
5 總結
-
請求(Request):客戶端向服務器要數據或提交數據。
-
響應(Response):服務器處理請求后返回結果。
-
JavaWeb通過
HttpServletRequest
和HttpServletResponse
對象封裝了HTTP協議的底層細節,開發者只需關注業務邏輯的實現。
二 BS架構與CS架構
1. BS架構(Browser/Server)
定義
用戶通過瀏覽器(如Chrome、Firefox)訪問應用,業務邏輯和數據存儲集中在服務器端,客戶端僅負責展示和簡單交互。
特點
-
客戶端:無需安裝額外軟件,只需瀏覽器。
-
服務器:負責核心邏輯、數據處理和存儲。
-
通信:基于HTTP/HTTPS協議,通過請求-響應模式交互。
優點
-
跨平臺:支持任何有瀏覽器的設備(PC、手機、平板)。
-
維護方便:只需更新服務器,客戶端自動同步。
-
低成本:無需開發和維護多平臺的客戶端。
-
輕量級:適合快速迭代的Web應用(如電商、博客)。
缺點
-
性能依賴網絡:弱網環境下體驗差。
-
功能受限:復雜操作(如3D渲染、本地硬件調用)支持有限。
-
安全性較低:易受XSS、CSRF等Web攻擊。
適用場景
-
Web應用(如在線辦公、電商網站)。
-
信息展示型系統(如新聞門戶、企業官網)。
-
輕量級交互需求(如表單提交、數據查詢)。
技術棧
-
前端:HTML/CSS/JavaScript、React/Vue等框架。
-
后端:Java/Python/PHP、Spring/Django/Node.js。
-
協議:HTTP/HTTPS、WebSocket。
2. CS架構(Client/Server)
定義
用戶需要安裝獨立的客戶端軟件,客戶端承擔部分業務邏輯,與服務器協同工作。
特點
-
客戶端:需安裝特定程序(如桌面應用、手機APP)。
-
服務器:負責核心數據和業務邏輯。
-
通信:通常基于TCP/UDP或自定義協議,支持實時交互。
優點
-
性能高:客戶端可處理復雜計算(如圖形渲染、本地緩存)。
-
功能強大:支持本地硬件操作(如攝像頭、打印機)。
-
離線可用:部分功能可在無網絡時使用(如本地數據庫)。
缺點
-
開發維護成本高:需適配多平臺(Windows/macOS/iOS/Android)。
-
更新復雜:需用戶手動升級客戶端版本。
-
依賴用戶設備:硬件兼容性可能存在問題。
適用場景
-
高性能需求應用(如大型游戲、視頻編輯軟件)。
-
本地硬件交互(如工業控制、醫療設備)。
-
企業級內部系統(如ERP、財務軟件)。
技術棧
-
客戶端:C++/C#(桌面)、Java/Kotlin(Android)、Swift(iOS)。
-
服務器:Java/Python/C++、MySQL/Oracle等數據庫。
-
通信協議:TCP/UDP、gRPC、自定義二進制協議。