如果您已經完成(或接近完成)學習 Java SE,那麼是時候考慮下一步如何征服 Java 開發人員的職業了。 第 1 部分。學習 Spring 和 JavaEE 之前需要了解的內容 - 1 一方面,您已經對 Java 有了很好的了解:您知道如何使用 IDE、編寫程序等等。但是接下來您應該如何處理您的程序呢?你如何讓它們更酷並“將它們釋放到世界上”?很明顯,是時候開始研究企業技術了。現在樂趣開始了。您決定從哪個技術堆棧入手並不重要。無論是 JavaEE 還是 Spring,您可能會遇到很多遠遠超出您理解範圍的東西。在 Java 基礎知識和高級技術之間,還存在知識的中間步驟,必須採取該步驟才能在閱讀大量文檔時保持自我控制和自信。 所以,是為您提供進一步學習JavaEE或Spring所需的最低限度的理論知識。本材料分為7個部分:
  1. 我們將稍微談談網絡。
  2. 我們將檢查客戶端-服務器和三層架構。
  3. 我們將探討 HTTP/HTTPS 協議。
  4. 我們將學習您需要了解的關於 Maven 的一切。
  5. 我們正在談論日誌記錄。
  6. 關於 servlet 容器。
  7. 最後,關於 MVC。

第 1 部分。我們將稍微談談網絡。

讓我們從最重要的事情開始,談談每個社交網絡、Web 服務和 Web 應用程序、即時通訊工具和簡單網站的構建基礎 — 網絡(在本系列文章的上下文中,術語“網絡”表示互聯網) . 網絡由大量計算機組成:它們相互連接並且能夠通信。了解它們是如何做到這一點很重要,因為 Web 應用程序將信息從一台計算機發送到另一台計算機。

OSI模型

開放系統互連 (OSI) 模型創建了一種構建網絡的分層方法。它清楚地顯示了同一網絡的實體如何以及在什麼層可以相互交互。這個模型總共包含 7 層:
7 應用
6個 推介會
5個 會議
4個 運輸
3個 網絡
2個 數據鏈接
1個 身體的
例如,將模型分解為抽象層允許從事傳輸層工作的開發人員不必考慮網絡層和會話層級別的實現細節。這種方法也用於編程。 讓我們考慮 OSI 模型的所有層,並確定我們感興趣的層:
  1. 物理層——這一層處理物理定律以及如何將它們用於我們的目的。例如,創建電纜並將它們鋪設到網絡中的實體。

    我們對這一層不感興趣。

  2. 數據鏈路層——該層負責向網絡節點傳輸數據,並為物理對象創建數據傳輸通道。

    我們對該層不感興趣,除非您想為建立數據鏈路的硬件編寫固件。

  3. 網絡層——該層用於確定各個網絡用戶的地址和到他們的路由。了解更多關於該層的詳細信息(即網絡地址)是有價值的。

    網絡地址由特殊協議定義:最常見的是 IPv4(Internet 協議版本 4)。這是網絡程序員需要用來聯繫另一個網絡用戶的協議。

    IPv4 地址由以句點分隔的四個字節值組成,例如:192.0.2.235。您應該記住這些值是字節,這意味著它們位於 0..255 範圍內。

    IP 地址又分為幾類。我們不能簡單地給自己分配一個漂亮的數字組合,但我們不會在這裡深入。了解 IP 地址唯一標識網絡用戶並可用於聯繫該用戶就足夠了。

  4. 傳輸層——這一層負責將信息傳遞給收件人。使用各種協議來實現這一點。目前,我們對它們不感興趣。我們對出現在這一層的端口的概念更感興趣。

    端口負責識別計算機上的特定應用程序。例如,假設您用 Java 編寫了一個聊天應用程序,將其安裝在 2 台計算機上,並希望向您的好友發送消息。你的消息被打包,發送到一個特定的 IP 地址,並傳遞給你的伙伴,但他的計算機不知道如何處理收到的信息,因為它不知道應該由哪個應用程序來處理你的消息。當網絡實體進行通信時,端口用於指示應由哪個應用程序處理信息。

    端口是 0 到 65535 範圍內的數字。它被添加到冒號後的 IP 地址:192.0.2.235:8080。但是您不能使用指定範圍內的所有端口:其中一些端口是為操作系統保留的,其他端口通常用於特定目的。我們不會深入研究不同端口的用途。現在,了解它們在網絡通信過程中的作用就足夠了。

  5. 會話層——該層創建和管理通信會話。在這一層,應用程序可以進行交互,發送服務級請求。我們需要知道的是,在這一層,兩個用戶之間打開了一個會話,我們必須對會話進行操作。

    會話是在兩個用戶之間建立連接時創建的實體。它可以存儲有關用戶的必要信息以及與用戶交互的歷史記錄。一個重要的細節是,當信息交換停止時,會話不會消失。相反,它會在一段時間內保持其狀態,因此用戶可以在休息後繼續交換信息。

    如果應用程序同時與多個用戶通信,則會建立相應數量的連接(以及會話)。每個會話都有一個唯一標識符 (ID),它允許應用程序區分與之通信的用戶。

  6. 表示層——該層負責編碼/解碼數據。顯然,如果我們需要將字符串“Hello web”發送給另一個用戶,首先會將其轉換(編碼為)二進制代碼,然後再發送。到達收件人後,消息被轉換回(解碼),收件人可以看到原始字符串。這些操作發生在表示層。

  7. 應用層是我們最感興趣的層。它允許應用程序與網絡通信。在這一層,我們接收和發送消息,並向服務和遠程數據庫發出請求。

    這一層使用了許多協議:POP3、FTP、SMTP、XMPP、RDP、SIP、TELNET,當然還有 HTTP/HTTPS。協議是我們在通信時遵守的通用協議。我們一定會單獨提供 HTTP/HTTPS 的詳細討論。

第 1 部分。學習 Spring 和 JavaEE 之前需要了解的內容 - 2我們不需要知道模型的每一層是如何工作的。最主要的是理解我們在編寫 Web 應用程序時必須使用的元素的操作背後的原理,即:
  • IP 地址——用戶在網絡中的地址
  • 端口——特定用戶應用程序的地址
  • 會話——在兩個用戶之間的整個通信期間存在的實體
  • 應用程序協議 (HTTP/HTTPS) — 這些是我們在撰寫和發送消息時將遵循的規則。
例如,當我們訪問在線商店時,我們會指明其地址和端口。在我們第一次訪問時,會創建一個會話。商店可以在會話中記錄信息。例如,商店可能會保存有關我們留在購物車中的商品的信息。如果我們關閉在線商店的選項卡,稍後再返回,我們的商品仍將在購物車中,因為它們已保存在會話中。當然,我們通過 HTTP/HTTPS 協議從商店收到的所有信息,我們的瀏覽器知道如何處理它。您可能會反對,說您從未在瀏覽器中輸入地址和端口,您可能是部分正確的。您所做的只是輸入由 DNS 服務器轉換的域名。讓我們更好地了解這裡的內容。

DNS(域名系統)

正如我們已經了解到的,每個網絡用戶都有一個唯一的地址。如果我們談論的是應用程序,那麼它的唯一地址將是IPv4-address:port。如果您知道此地址,則可以直接訪問該應用程序。想像一下,我們編寫了一個實時顯示所有國家/地區平均氣溫的 Web 應用程序。我們將其部署在地址為 226.69.237.119、端口 8080 的服務器上。為了能夠接收到我們的信息,用戶必須在瀏覽器中輸入 5 個數字:226.69.237.119:8080。人們不喜歡記住一組數字:我們中的許多人不能記住兩個以上的電話號碼。這就是為什麼域名系統被發明。我們可以為我們的地址創建一個“別名”,例如 world-temperature.com。用戶無需使用由五個難記數字組成的地址來尋找我們,而是可以在瀏覽器的地址欄中輸入我們的域名。有將域名映射到真實地址的DNS 服務器。例如,當用戶在瀏覽器中輸入 codegym.cc 時,她的請求會發送到 DNS 服務器,由 DNS 服務器將其轉換為實際地址。 第 1 部分。學習 Spring 和 JavaEE 之前需要了解的內容 - 4這對我們來說很重要,因為我們的應用程序將通過域名和真實地址調用遠程服務。我們需要了解,無論哪種情況,服務都是相同的。就這樣吧!在本文中,我們了解了網絡的基礎知識,這將在您開始學習 Web 編程時派上用場。下一次我們將了解什麼是客戶端-服務器架構,以及為什麼理解它如此重要。 第 2 部分。我們來談談軟件架構 第 3 部分。HTTP/HTTPS 第 4 部分。Maven 的基礎知識 第 5 部分。Servlets 和 Java Servlet API。編寫一個簡單的 Web 應用程序 第 6 部分。Servlet 容器 第 7 部分。介紹 MVC(模型-視圖-控制器)模式