一方面,您已經對 Java 有了很好的了解:您知道如何使用 IDE、編寫程序等等。但是接下來您應該如何處理您的程序呢?你如何讓它們更酷並“將它們釋放到世界上”?很明顯,是時候開始研究企業技術了。現在樂趣開始了。您決定從哪個技術堆棧入手並不重要。無論是 JavaEE 還是 Spring,您可能會遇到很多遠遠超出您理解範圍的東西。在 Java 基礎知識和高級技術之間,還存在知識的中間步驟,必須採取該步驟才能在閱讀大量文檔時保持自我控制和自信。 所以,是為您提供進一步學習JavaEE或Spring所需的最低限度的理論知識。本材料分為7個部分:
- 我們將稍微談談網絡。
- 我們將檢查客戶端-服務器和三層架構。
- 我們將探討 HTTP/HTTPS 協議。
- 我們將學習您需要了解的關於 Maven 的一切。
- 我們正在談論日誌記錄。
- 關於 servlet 容器。
- 最後,關於 MVC。
第 1 部分。我們將稍微談談網絡。
讓我們從最重要的事情開始,談談每個社交網絡、Web 服務和 Web 應用程序、即時通訊工具和簡單網站的構建基礎 — 網絡(在本系列文章的上下文中,術語“網絡”表示互聯網) . 網絡由大量計算機組成:它們相互連接並且能夠通信。了解它們是如何做到這一點很重要,因為 Web 應用程序將信息從一台計算機發送到另一台計算機。OSI模型
開放系統互連 (OSI) 模型創建了一種構建網絡的分層方法。它清楚地顯示了同一網絡的實體如何以及在什麼層可以相互交互。這個模型總共包含 7 層:| 7 | 應用 |
| 6個 | 推介會 |
| 5個 | 會議 |
| 4個 | 運輸 |
| 3個 | 網絡 |
| 2個 | 數據鏈接 |
| 1個 | 身體的 |
-
物理層——這一層處理物理定律以及如何將它們用於我們的目的。例如,創建電纜並將它們鋪設到網絡中的實體。
我們對這一層不感興趣。
-
數據鏈路層——該層負責向網絡節點傳輸數據,並為物理對象創建數據傳輸通道。
我們對該層不感興趣,除非您想為建立數據鏈路的硬件編寫固件。
-
網絡層——該層用於確定各個網絡用戶的地址和到他們的路由。了解更多關於該層的詳細信息(即網絡地址)是有價值的。
網絡地址由特殊協議定義:最常見的是 IPv4(Internet 協議版本 4)。這是網絡程序員需要用來聯繫另一個網絡用戶的協議。
IPv4 地址由以句點分隔的四個字節值組成,例如:192.0.2.235。您應該記住這些值是字節,這意味著它們位於 0..255 範圍內。
IP 地址又分為幾類。我們不能簡單地給自己分配一個漂亮的數字組合,但我們不會在這裡深入。了解 IP 地址唯一標識網絡用戶並可用於聯繫該用戶就足夠了。
-
傳輸層——這一層負責將信息傳遞給收件人。使用各種協議來實現這一點。目前,我們對它們不感興趣。我們對出現在這一層的端口的概念更感興趣。
端口負責識別計算機上的特定應用程序。例如,假設您用 Java 編寫了一個聊天應用程序,將其安裝在 2 台計算機上,並希望向您的好友發送消息。你的消息被打包,發送到一個特定的 IP 地址,並傳遞給你的伙伴,但他的計算機不知道如何處理收到的信息,因為它不知道應該由哪個應用程序來處理你的消息。當網絡實體進行通信時,端口用於指示應由哪個應用程序處理信息。
端口是 0 到 65535 範圍內的數字。它被添加到冒號後的 IP 地址:192.0.2.235:8080。但是您不能使用指定範圍內的所有端口:其中一些端口是為操作系統保留的,其他端口通常用於特定目的。我們不會深入研究不同端口的用途。現在,了解它們在網絡通信過程中的作用就足夠了。
-
會話層——該層創建和管理通信會話。在這一層,應用程序可以進行交互,發送服務級請求。我們需要知道的是,在這一層,兩個用戶之間打開了一個會話,我們必須對會話進行操作。
會話是在兩個用戶之間建立連接時創建的實體。它可以存儲有關用戶的必要信息以及與用戶交互的歷史記錄。一個重要的細節是,當信息交換停止時,會話不會消失。相反,它會在一段時間內保持其狀態,因此用戶可以在休息後繼續交換信息。
如果應用程序同時與多個用戶通信,則會建立相應數量的連接(以及會話)。每個會話都有一個唯一標識符 (ID),它允許應用程序區分與之通信的用戶。
-
表示層——該層負責編碼/解碼數據。顯然,如果我們需要將字符串“Hello web”發送給另一個用戶,首先會將其轉換(編碼為)二進制代碼,然後再發送。到達收件人後,消息被轉換回(解碼),收件人可以看到原始字符串。這些操作發生在表示層。
-
應用層是我們最感興趣的層。它允許應用程序與網絡通信。在這一層,我們接收和發送消息,並向服務和遠程數據庫發出請求。
這一層使用了許多協議:POP3、FTP、SMTP、XMPP、RDP、SIP、TELNET,當然還有 HTTP/HTTPS。協議是我們在通信時遵守的通用協議。我們一定會單獨提供 HTTP/HTTPS 的詳細討論。
我們不需要知道模型的每一層是如何工作的。最主要的是理解我們在編寫 Web 應用程序時必須使用的元素的操作背後的原理,即:
- IP 地址——用戶在網絡中的地址
- 端口——特定用戶應用程序的地址
- 會話——在兩個用戶之間的整個通信期間存在的實體
- 應用程序協議 (HTTP/HTTPS) — 這些是我們在撰寫和發送消息時將遵循的規則。
DNS(域名系統)
正如我們已經了解到的,每個網絡用戶都有一個唯一的地址。如果我們談論的是應用程序,那麼它的唯一地址將是IPv4-address:port。如果您知道此地址,則可以直接訪問該應用程序。想像一下,我們編寫了一個實時顯示所有國家/地區平均氣溫的 Web 應用程序。我們將其部署在地址為 226.69.237.119、端口 8080 的服務器上。為了能夠接收到我們的信息,用戶必須在瀏覽器中輸入 5 個數字:226.69.237.119:8080。人們不喜歡記住一組數字:我們中的許多人不能記住兩個以上的電話號碼。這就是為什麼域名系統被發明。我們可以為我們的地址創建一個“別名”,例如 world-temperature.com。用戶無需使用由五個難記數字組成的地址來尋找我們,而是可以在瀏覽器的地址欄中輸入我們的域名。有將域名映射到真實地址的DNS 服務器。例如,當用戶在瀏覽器中輸入 codegym.cc 時,她的請求會發送到 DNS 服務器,由 DNS 服務器將其轉換為實際地址。
這對我們來說很重要,因為我們的應用程序將通過域名和真實地址調用遠程服務。我們需要了解,無論哪種情況,服務都是相同的。就這樣吧!在本文中,我們了解了網絡的基礎知識,這將在您開始學習 Web 編程時派上用場。下一次我們將了解什麼是客戶端-服務器架構,以及為什麼理解它如此重要。 第 2 部分。我們來談談軟件架構 第 3 部分。HTTP/HTTPS 第 4 部分。Maven 的基礎知識 第 5 部分。Servlets 和 Java Servlet API。編寫一個簡單的 Web 應用程序 第 6 部分。Servlet 容器 第 7 部分。介紹 MVC(模型-視圖-控制器)模式
GO TO FULL VERSION