“我來了。根據要求,我現在將告訴您如何編寫您的第一個 Web 服務器。”

“網絡服務器就像一個操作系統。它本身並沒有價值。它之所以有價值,是因為你可以在它上面運行特殊的網絡程序(servlets)。

“正是這些 servlet 處理來自用戶的請求。”

“他們如何處理請求?我如何在網絡服務器中運行我的程序?”

“要編寫自己的 servlet,您的類必須繼承 HttpServlet 類。然後實現其 doGet() 和 doPost() 方法。當請求來自用戶時,Web 服務器創建您的 servlet 對象之一併調用其 doGet()方法。或者它調用 doPost() 方法,具體取決於來自瀏覽器的請求類型。”

“但是我的程序是如何進入網絡服務器的呢?”

“很簡單,你寫好程序,編譯好,放到你安裝Tomcat目錄下的一個特殊文件夾裡。”

“Servlet 是一個龐大而有趣但獨立的主題。所以,我今天不會向您解釋它。我會告訴您一些其他的事情。”

“JSP 是一種非常有趣的 servlet 類型。它們有點像 PHP。”

“讓我們使用 JSP 編寫並運行最簡單的 Web 程序。”

“開始吧!我準備好了。”

“那我們開始吧。”

第 1 步:創建一個新的 Web 項目

運行一個簡單的 Web 應用程序 - 1

“完畢。”

第 2 步:將模塊類型設置為 Java 模塊。將應用程序類型設置為Web 應用程序並指定JDK。

運行一個簡單的 Web 應用程序 - 2

“完畢。”

第 3 步:為其命名項目

運行一個簡單的 Web 應用程序 - 3

“完畢。”

“你應該看到一個新的空項目。”

“幾乎是空的。它會包含一個名為 index.jsp 的文件。找到它。”

第 4 步:找到 JSP 文件

運行一個簡單的 Web 應用程序 - 4

“找到了。”

“太好了。這是我們可以編寫 servlet 代碼的地方。”

“但讓我們先稍微配置一下 IntelliJ IDEA。”

“您可以直接從 IntelliJ IDEA 在 Tomcat 中運行 servlet。如果需要,還可以調試它們。基本上,它超級方便而且很棒。到時候您會很感激的。”

“我相信你。那麼接下來呢?”

“我們將‘教’IntelliJ IDEA 如何在 Tomcat 中運行我們的 Web 模塊(我們的應用程序)。”

第 5 步:在菜單中選擇“編輯配置”

運行一個簡單的 Web 應用程序 - 5

“完畢。”

第 6 步:通過單擊加號創建新配置

運行一個簡單的 Web 應用程序 - 6

“完畢。”

第 7 步:指示要運行的內容(Tomcat 服務器、本地)

運行一個簡單的 Web 應用程序 - 7

“在名稱字段中為配置指定一個名稱,該名稱已標記為紅色。”

“Tomcat 將在其上啟動 servlet 的端口以綠色指示。”

“我們還需要告訴 IntelliJ IDEA Tomcat 所在的位置。單擊 Configure 按鈕……”

步驟 8:創建運行配置

運行一個簡單的 Web 應用程序 - 8

“現在需要選擇Tomcat所在的文件夾:”

第 9 步:指定 Tomcat 的位置

運行一個簡單的 Web 應用程序 - 9 運行一個簡單的 Web 應用程序 - 10 運行一個簡單的 Web 應用程序 - 11

“完畢。”

“你應該得到這樣的東西:”

第 10 步:結果配置

運行一個簡單的 Web 應用程序 - 12

“現在我們需要將我們的項目連接到 Tomcat。”

有太多事情要做。我有這麼詳細的說明真是太好了。”

“你打賭!我為我的朋友試試。”

“現在按下 Fix 按鈕,IDEA 將自行完成所有操作。”

第十一步:IDEA連接項目和Tomcat

運行一個簡單的 Web 應用程序 - 13

“完畢。”

“太好了,再提一句,估計8080端口已經被佔用了,畢竟Tomcat剛安裝就開始運行了。”

“IntelliJ IDEA 可以將 servlet 添加到正在運行的項目中,但為了簡單起見,目前它每次都會啟動一個新的 Tomcat 服務器。”

“那麼,我們要運行幾個 Tomcats 嗎?”

“是的。而且每個都需要自己的端口。所以,讓我們在項目設置中將端口 8080 更改為端口 8888。”

“四個八。我喜歡。”

第 12 步:將端口更改為 8888

運行一個簡單的 Web 應用程序 - 14

“完畢。”

“太好了。我們完成了設置。”

“下一個是什麼?”

“現在讓我們稍微更改一下 index.jsp 文件”

“在那裡寫點東西,例如,«Power to crustaceans!»”

第 13 步:更改 index.jsp

運行一個簡單的 Web 應用程序 - 15

“不,我寧願寫《機器人的力量!》”

“太好了。現在只剩下一點點要做了。”

第 14 步:運行 servlet 和 Tomcat

運行一個簡單的 Web 應用程序 - 16

“Tomcat 日誌和堆棧跟踪應該是可見的。日誌應該沒有錯誤。”

“像這樣的東西:”

第 15 步 - Tomcat 日誌

運行一個簡單的 Web 應用程序 - 17

“與此同時,IDEA 應該打開一個瀏覽器,其中包含您的 servlet 的 URL。”

“你應該得到這樣的東西:”

第 16 步:更改 index.jsp

運行一個簡單的 Web 應用程序 - 18

“是的。這就是我得到的。酷!”

“現在在瀏覽器中輸入以下 URL:”

http://localhost:8888/index.jsp

“沒有改變。”

“別這麼說。”

第 17 步:更改 index.jsp

運行一個簡單的 Web 應用程序 - 19

“現在瀏覽器顯示您在 IntelliJ IDEA 中看到的 index.jsp 文件。”

“我換的那個?”

“是的。”

“但是如果在瀏覽器的請求中只指定了域,而不是請求的其餘部分,那麼將調用默認處理程序。在我們的例子中,這是 index.jsp。”

“假設您有三個文件:index.jspapple.jspgoogle.jsp。以下是工作原理:”

要求 回复
http://localhost:8888 索引.jsp
http://localhost:8888/ 索引.jsp
http://localhost:8888/index.jsp 索引.jsp
http://localhost:8888/apple.jsp 蘋果.jsp
http://localhost:8888/ samsung.jsp 錯誤消息:未找到 Servlet
http://localhost:8888/google.jsp 谷歌.jsp
http://localhost:8888/索引 錯誤消息:未找到 Servlet

“我明白那個。”

“Bilaabo,長期以來你一直在說 JSP 很棒。但它們與普通的 HTML 頁面非常相似。一切都完全一樣。”

“嗯,不是全部。嘗試將以下文本添加到 JSP:”

JSP代碼
<%@ page contentType="text/html; charset=UTF-8" language="java" %>
<html>
<head>
<title>Amigo says hi</title>
</head>
<body>
<%--This is still HTML--%>
<%
// But I can write Java code here

String s = "Power to robots!";
for(int i=0; i<10; i++)
{
 out.println(s);
 out.println("<br>");
}

%>
<%--and this is HTML again--%>
</body>
</html>

“你可以在 JSP 頁面中嵌入 Java 代碼,它就會運行!

“JSP 頁面中的 Java 代碼稱為 scriptlet,包含在 <% 和 %> 標記中”

“哇哦。”

“好吧,我自己去寫幾個JSP頁面。”

“非常感謝你,比拉博。”

“謝謝你,我的朋友!”