關于JavaWeb的總結筆記

  • JavaWeb

    • 基礎

      • 描述

        • Web服務器的作用是接受客戶端的請求,給客戶端響應

      • 服務器的使用

        • Tomcat(最常用的)

        • JBoss

        • Weblogic

        • Websphere

      • JavaWeb的三大組件

        • Servlet

          • 主要負責接收并處理來自客戶端的請求,隨后生成響應結果。例如,在處理用戶登錄請求時,Servlet 能夠驗證用戶輸入的賬號和密碼是否正確,并依據驗證結果返回相應提示信息給客戶端。

        • JSP

          • 基于 HTML 頁面嵌入 Java 代碼片段或表達式,從而實現動態網頁內容的生成與展示。以顯示商品列表頁面為例,借助 JSP 可從數據庫獲取商品數據,并在頁面中動態呈現商品名稱、價格等信息。

        • JavaBean

          • 是一種Java的對象用于封裝數據例如:可創建一個 JavaBean 類封裝用戶的姓名、年齡、性別等屬性及其相關的獲取和設置方法。

      • 服務器相應碼

        • 404 Not Found

          • 含義:服務器無法找到客戶端請求的資源。這可能是因為資源不存在、URL 拼寫錯誤等原因

        • 500 Internal Server Error

          • 服務器在處理客戶端請求時發生了內部錯誤。這可能是由于代碼錯誤、服務器配置錯誤、數據庫故障等原因導致的。

        • 503 Service Unavailable

          • 服務器暫時無法處理客戶端請求,通常是由于服務器過載、維護或者其他臨時故障導致的。

    • Servlet

      • 三種實現方式

        • 實現Servlet接口

          • 需要重寫的方法

          • 接口方法的詳解init() Servlet在創建的過程中自動調用的方法 。 service()處理客戶端請求的方法。Servlet的每調用一次,service()方法就執行一次。 getServletInfo() 放回Servlet的描述信息。 destroy()服務端任務結束,調用該方法摧毀Servlet的對象。

        • 繼承GenericServlet類

          • GenericServlet類 幫我們把其他四個方法都實現類, 只留下一個抽象service() 讓我們重寫

        • 繼承HttpServlet類(最推薦的方式)只需要重寫doGet()和doPost()方式說明:兩種方式都是來處理客戶端發送來的請求,寫在服務端,是Javaweb處理業務的邏輯的核心代碼代碼,由程序員來完成。可以實現登錄、注冊等基礎業務。

      • Servlet的生命周期:

        • Servlet對象會在第一次訪問的時候由tomcat自動創立,并調用init()初始化方法,而且 一個Servlet類型,服務器只創建一個實例對象 。之后每次訪問都會調用Servlet()方法。在服務器結束后調用destroy()摧毀Servlet

    • 請求(request)與響應(response)

      • 一個JavaWeb響應的整個流程

      • requset

        • request概述

          • 在客戶端發出每個請求時,服務器都會創建一個request對象,并把請求數據封裝到request中,然后在調用Servlet.service()方法時傳遞給service()方法,這說明在service()方法中可以通過request對象來獲取請求數據。

        • 作用

          • 封裝了請求頭數據; 封裝了請求正文數據,如果是GET請求,那么就沒有正文; request是一個域對象,可以把它當成Map來添加獲取數據; request提供了請求轉發和請求包含功能

        • 兩種請求的區別 Get請求: 直接在瀏覽器地址欄輸入網址 使用<a href=""/> 也是get請求 使用提交表單form, method沒有寫, 寫get Post請求: 使用提交表單form, method =“post”get 請求,post請求區別: get請求,請求參數通過url傳遞, post請求: 通過請求體傳遞參數 get請求不安全, 有敏感字段, 一定不能使用get, post請求安全一些 get請求無法傳遞文件參數, 提交文件必須使用post請求 get請求參數有大小限制: 4KB, post請求沒有限制

        • request域的方法

          • void setAttribute(String name, Object value):用來存儲一個對象

          • servletContext.setAttribute(“xxx”, “XXX”),在request中保存了一個域屬性,域屬性名稱為xxx,域屬性的值為XXX。

          • Object getAttribute(String name):用來獲取request中的數據,當前在獲取之前需要先去存儲才行

          • void removeAttribute(String name):用來移除request中的域屬性

        • 請求轉發

          • 概念:客戶一個請求,都表示由多個Servlet共同來處理一個請求。例如Servlet1來處理請求,然后Servlet1又轉發給Servlet2來繼續處理這個請求。如果在AServlet中請求轉發到BServlet,那么在AServlet中就不允許再輸出響應體,即不能再使用response.getWriter()和response.getOutputStream()向客戶端輸出,這一工作應該由BServlet來完成

      • response

        • 概念

          • response是響應對象,向客戶端輸出響應正文(響應體)可以使用response的響應流

        • 字符編碼

          • 在使用response.getWriter()時需要注意默認字符編碼為ISO-8859-1,如果希望設置字符流的字符編碼為utf-8,可以使用response.setCharaceterEncoding(“utf-8”)來設置。這樣可以保證輸出給客戶端的字符都是使用UTF-8編碼的!

        • 關于重定向

          • 當你訪問http://www.sun.com時,你會發現瀏覽器地址欄中的URL會變成http://www.oracle.com/us/sun/index.htm,這就是重定向了。重定向是服務器通知瀏覽器去訪問另一個地址,即再發出另一個請求。

          • 重定向是兩次請求; 重定向的URL可以是其他應用,不局限于當前應用; 重定向的響應頭為302,并且必須要有Location響應頭; 重定向就不要再使用response.getWriter()或response.getOutputStream()輸出數據,不然可能會出現異常;

      • 請求轉發與重定向比較

        • - 請求轉發是一個請求,而重定向是兩個請求; - 請求轉發后瀏覽器地址欄不會有變化,而重定向會有變化,因為重定向是兩個請求; - 請求轉發的目標只能是本應用中的資源,重定向的目標可以是其他應用; - 請求轉發對AServlet和BServlet的請求方法是相同的,即要么都是GET,要么都是POST,因為請求轉發是一個請求; - 重定向的第二個請求一定是GET; - 請求轉發是在服務端內部執行的,而重定向是在客戶端執行的.

    • Cookie

      • 概念

        • Cookie就是一個鍵和一個值構成的,隨著服務器端的響應發送給客戶端瀏覽器。然后客戶端瀏覽器會把Cookie保存起來,當下一次再訪問服務器時把Cookie再發送給服務器。

      • 創建方式

        • response.addCookie(cookie)

      • 注意

        • - Cookie大小上限為4KB; - 一個服務器最多在客戶端瀏覽器上保存20個Cookie; - 一個瀏覽器最多保存300個Cookie;

      • 應用案例

        • 用戶身份驗證和會話管理:通過 Cookie 可以記錄用戶的登錄狀態。比如,用戶登錄成功后,服務器會設置一個包含用戶 ID 或登錄令牌的 Cookie。在用戶訪問網站的其他頁面時,服務器通過檢查這個 Cookie 來確定用戶是否已經登錄,避免用戶在每個頁面都需要重新輸入登錄信息。

    • 過濾器(Filter)

      • 概念

        • 當用戶請求某個Servlet時,會先執行部署在這個請求上的Filter,如果Filter“放行”,那么會繼承執行用戶請求的Servlet;如果Filter不“放行”,那么就不會執行用戶請求的Servlet。

      • 實現案例

        • 過濾器就是寫一個類,實現Filter接口。需要在web.xml部署Filter: <filter> <filter-name>helloFilter</filter-name> <filter-class>cn.itcast.filter.HelloFilter</filter-class> </filter> <filter-mapping> <filter-name>helloFilter</filter-name> <url-pattern>/index.jsp</url-pattern> </filter-mapping>

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

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

相關文章

生成式引擎優化(GEO)核心解析:下一代搜索技術的演進與落地策略

最新統計數據聲稱&#xff0c;今天的 Google 搜索量是 ChatGPT 搜索的 373 倍&#xff0c;但我們大多數人都覺得情況恰恰相反。 那是因為很多人不再點擊了。他們在問。 他們不是瀏覽搜索結果&#xff0c;而是從 ChatGPT、Claude 和 Perfasciity 等工具獲得即時的對話式答案。這…

網編數據庫小練習

搭建服務器客戶端&#xff0c;要求 服務器使用 epoll 模型 客戶端使用多線程 服務器打開數據庫&#xff0c;表單格式如下 name text primary key pswd text not null 客戶端做一個簡單的界面&#xff1a;1&#xff1a;注冊2&#xff1a;登錄無論注冊還是登錄&#xff0c;…

理解 PS1/PROMPT 及 macOS iTerm2 + zsh 終端配置優化指南

終端提示符&#xff08;Prompt&#xff09;是我們在命令行中與 shell 交互的關鍵界面&#xff0c;它不僅影響工作效率&#xff0c;也影響終端顯示的穩定和美觀。本文將結合 macOS 上最流行的 iTerm2 終端和 zsh shell&#xff0c;講解 PS1/PROMPT 的核心概念、常見配置技巧&…

Laravel 原子鎖概念講解

引言 什么是競爭條件 (Race Condition)&#xff1f; 在并發編程中&#xff0c;當多個進程或線程同時訪問和修改同一個共享資源時&#xff0c;最終結果會因其執行時序的微小差異而變得不可預測&#xff0c;甚至產生錯誤。這種情況被稱為“競爭條件”。 例子1&#xff1a;定時…

83、形式化方法

形式化方法&#xff08;Formal Methods&#xff09; 是基于嚴格數學基礎&#xff0c;通過數學邏輯證明對計算機軟硬件系統進行建模、規約、分析、推理和驗證的技術&#xff0c;旨在保證系統的正確性、安全性和可靠性。以下從核心思想、關鍵技術、應用場景、優勢與挑戰四個維度展…

解決 Ant Design v5.26.5 與 React 19.0.0 的兼容性問題

#目前 Ant Design v5.x 官方尚未正式支持 React 19&#xff08;截至我的知識截止日期2023年10月&#xff09;&#xff0c;但你仍可以通過以下方法解決兼容性問題&#xff1a; 1. 臨時解決方案&#xff08;推薦&#xff09; 方法1&#xff1a;使用 --legacy-peer-deps 安裝 n…

算法與數據結構(課堂2)

排序與選擇 算法排序分類 基于比較的排序算法&#xff1a; 交換排序 冒泡排序快速排序 插入排序 直接插入排序二分插入排序Shell排序 選擇排序 簡單選擇排序堆排序 合并排序 基于數字和地址計算的排序方法 計數排序桶排序基數排序 簡單排序算法 冒泡排序 void sort(Item a[],i…

跨端分欄布局:從手機到Pad的優雅切換

在 UniApp X 的世界里&#xff0c;我們常常需要解決一個現實問題&#xff1a; “手機上是全屏列表頁&#xff0c;Pad上卻要左右分欄”。這時候&#xff0c;很多人會想到 leftWindow 或 rightWindow。但別急——這些方案 僅限 Web 端&#xff0c;如果你的應用需要跨平臺&#xf…

華為服務器管理工具(Intelligent Platform Management Interface)

一、核心功能與技術架構 硬件級監控與控制 全維度傳感器管理:實時監測 CPU、內存、硬盤、風扇、電源等硬件組件的溫度、電壓、轉速等參數,支持超過 200 種傳感器類型。例如,通過 IPMI 命令ipmitool sdr elist可快速獲取服務器傳感器狀態,并通過正則表達式提取關鍵指標。 遠…

Node.js Express keep-alive 超時時間設置

背景介紹隨著 Web 應用并發量不斷攀升&#xff0c;長連接&#xff08;keep-alive&#xff09;策略已經成為提升性能和資源復用的重要手段。本文將從原理、默認值、優化實踐以及潛在風險等方面&#xff0c;全面剖析如何在 Node.js&#xff08;Express&#xff09;中正確設置和應…

學習C++、QT---30(QT庫中如何自定義控件(自定義按鈕)講解)

每日一言你比想象中更有韌性&#xff0c;那些看似艱難的日子&#xff0c;終將成為勛章。自定義按鈕我們要知道自定義控件就需要我們創建一個新的類加上繼承父類&#xff0c;但是我們還要注意一個點&#xff0c;就是如果我們是自己重頭開始造控件的話&#xff0c;那么我們就直接…

【補充】Linux內核鏈表機制

專題文章&#xff1a;Linux內核鏈表與Pinctrl數據結構解析 目標&#xff1a; 深入解析Pinctrl子系統中&#xff0c;struct pinctrl如何通過內核鏈表&#xff0c;來組織和管理其多個struct pinctrl_state。 1. 問題背景&#xff1a;一個設備&#xff0c;多種引腳狀態 一個復雜的…

本地部署Dify、Docker重裝

需要先安裝一個Docker&#xff0c;Docker就像是一個容器&#xff0c;將部署Dify的空間與本地環境隔離&#xff0c;避免因為本地環境的一些問題導致BUG。也確保了環境的統一&#xff0c;不會出現在自己的電腦上能跑但是移植到別人電腦上就跑不通的情況。那么現在就開始先安裝Doc…

【每天一個知識點】非參聚類(Nonparametric Clustering)

ChatGPT 說&#xff1a;“非參聚類”&#xff08;Nonparametric Clustering&#xff09;是一類不預先設定聚類數目或數據分布形式的聚類方法。與傳統“參數聚類”&#xff08;如高斯混合模型&#xff09;不同&#xff0c;非參聚類在建模過程中不假設數據來自于已知分布數量的某…

人形機器人CMU-ASAP算法理解

一原文在第一階段&#xff0c;用重定位的人體運動數據在模擬中預訓練運動跟蹤策略。在第二階段&#xff0c;在現實世界中部署策略并收集現實世界數據來訓練一個增量&#xff08;殘差&#xff09;動作模型來補償動態不匹配。&#xff0c;ASAP 使用集成到模擬器中的增量動作模型對…

next.js刷新頁面時二級菜單展開狀態判斷

在 Next.js 中保持二級菜單刷新后展開狀態的解決方案 在 Next.js 應用中&#xff0c;當頁面刷新時保持二級菜單的展開狀態&#xff0c;可以通過以下幾種方法實現&#xff1a; 方法1&#xff1a;使用 URL 參數保存狀態&#xff08;推薦&#xff09; import { useRouter } from n…

網絡基礎DAY13-NAT技術

NAT技術internet接入方式&#xff1a;ADLS技術&#xff1a;能夠將不同設備的不同信號通過分離器進行打包之后再internet中傳輸&#xff0c;到另一端的分離器之后再進行分離。傳輸到不同的設備中去。常見光纖接入方式internet接入認證方式&#xff1a;PPPoE&#xff1a;先認證再…

HBuilderX中設置 DevEco Studio路徑,但是一直提示未安裝

前言&#xff1a; HBuilderX中設置 DevEco Studio路徑&#xff0c;但是一直提示未安裝。 報錯信息&#xff1a; 檢測到鴻蒙工具鏈&#xff0c;請在菜單“工具->設置->運行配置”中設置鴻蒙開發者工具路徑為 DevEco Studio 的安裝路徑&#xff0c;請參考 報錯原因…

什么是GNN?——聚合、更新與循環

在傳統的深度學習中&#xff0c;卷積神經網絡&#xff08;CNN&#xff09;擅長處理網格結構數據&#xff08;如圖像&#xff09;&#xff0c;循環神經網絡&#xff08;RNN&#xff09;擅長處理序列數據&#xff08;如文本&#xff09;。但當數據以圖的形式存在時&#xff08;如…

深入解析 Django REST Framework 的 APIView 核心方法

在 Python 3 中&#xff0c;Django 的 APIView 類是 Django REST Framework&#xff08;DRF&#xff09;中用于構建 API 視圖的核心基類。它提供了一個靈活的框架來處理 HTTP 請求&#xff0c;并通過一系列方法支持認證、權限檢查和請求限制等功能。self.perform_authenticatio…