Java學習筆記-Day52 JavaWeb、Tomcat、Servlet

金海湖底有寶藏發表於2020-12-23




一、基本概念

1、網路應用


網路應用,可以分為C/S和B/S兩種:

(1)C/S結構 是Client/Server(客戶機/伺服器)的簡稱,桌面應用程式採用的多是這種結構。例如:QQ

(2)B/S結構 是Browser/Server(瀏覽器/伺服器)的簡稱,特點是客戶端無需安裝特定的軟體,只需要安裝一個瀏覽器就可以與系統進行互動。例如:百度

C/S需要安裝客戶端軟體,但是操作往往更為便捷。B/S不需要安裝客戶端軟體,但是使用者體驗往往不如C/S好,安全性也較C/S要低。

RIA 是“Rich Internet Applications”的縮寫,意為富客戶端網路應用。RIA的主要目標:基於B/S結構,只要有瀏覽器就可以使用,在瀏覽器裡實現與客戶端軟體類似的體驗。例如:可以區域性重新整理、可以拖拽等。Web前端工程師較多關注RIA技術。

JavaEE:採用B/S結構,需要在伺服器中安裝Tomcat軟體。

2、Web站點和Web應用


(1)Web站點( Web Site ),也被稱為Web網站和靜態網頁(HTML頁面),該站點只用於顯示網頁,不提供服務。

(2)Web應用( Application ),也被稱為動態網站(動態地更新網頁的內容),通過瀏覽器訪問的應用程式,從而為使用者提供相關的服務。

動態網站的含義是網站內容的動態化,而不僅是網頁上是否具有動畫,靜態是建立動態網頁的基礎,靜態網頁由網頁設計師產生可供瀏覽器瀏覽的內容,而動態網站由網站程式設計人員編寫程式來動態產生網頁。靜態網頁一般以html作為副檔名,而動態的網站一般是由ASP、JSP、PHP或ASP.NET等伺服器端程式語言構建的,網站的內容由臺資料庫儲存,因此副檔名一般是asp、jsp、php或aspx。

3、HTTP伺服器和Web應用伺服器


(1)HTTP伺服器:也稱為Web伺服器,主要功能是提供網上資訊瀏覽服務,例如Apache、Nginx、IIS是比較常用的HTTP伺服器。使用瀏覽器訪問Web站點或者Web應用,則必須通過HTTP伺服器。

(2)Web應用伺服器:Web應用伺服器能夠執行伺服器上的應用程式,並將結果返回給客戶端瀏覽器。例如,Tomcat就是一種Web應用伺服器。通常情況下,Web應用伺服器兼具HTTP伺服器的部分功能。

Web站點只需要瀏覽資訊,所以只需要HTTP伺服器即可。Web應用需要HTTP伺服器及Web應用伺服器,因為不僅需要瀏覽資訊,還需要執行應用程式。很多Web應用伺服器都兼具HTTP伺服器的部分功能,因此使用Web應用伺服器即可。

可以使用Servlet和JSP開發Web應用,Servlet和JSP是JavaEE中的Web元件,Web元件都需要執行在Web應用伺服器上。

二、Tomcat

1、簡介


選用Apache軟體基金會的Tomcat做為應用伺服器,也稱為Servlet容器(Container)。Tomcat開源、免費,在中小型系統和併發訪問使用者不是很多的場合下被普遍使用,是開發和除錯Servlet/JSP程式的首選。

(1)下載:下載地址為 http://tomcat.apache.org/,採用Tomcat9.0版本。

(2)安裝:下載到的是一個壓縮包,解壓縮即可。注意:解壓路徑不要包含中文或空格等

2、Tomcat的目錄結構


(1)bin目錄:用於存放 Tomcat的啟動、停止等批處理指令碼和Shell指令碼。
(2)conf目錄:用於存放 Tomcat的相關配置檔案。
(3)lib目錄:Tomcat伺服器依賴庫目錄,包含Tomcat伺服器執行環境依賴jar包。
(4)logs目錄:Tomcat預設的日誌存放路徑。
(5)temp目錄:存放tomcat在執行過程中產生的臨時檔案。
(6)webapps目錄:Tomcat預設的Web應用部署目錄。
(7)work目錄:存放Web應用JSP程式碼生成和編譯後產生的class檔案目錄。

3、Tomcat的配置


Tomcat啟動前需安裝jdk,並配置好jdk的環境變數JAVA_HOME。

可以通過conf目錄中的server.xml的Connector標籤的port屬性修改埠號,埠號預設為8080。修改後需要重新啟動Tomcat。

在這裡插入圖片描述

可以通過bin目錄中的startup.bat檔案啟動Tomcat,通過shutdown.bat關閉Tomcat。通過startup.bat檔案啟動Tomcat,則會出現一個命令視窗,該命令視窗關閉後,Tomcat也會關閉。

如果出現亂碼,則是因為Tomcat的編碼格式與系統的編碼格式不一致。需要修改conf目錄下的logging.properties的ConsoleHandler.encoding為GBK (不區分大小寫)。

在這裡插入圖片描述

4、eclipse配置Tomcat


(1)window -> preference -> Server ->RuntimeEnvironment -> add -> Apache Tomcat v9.0 -> Next -> JRE(電腦上安裝的jdk) -> Finish。

(2)window -> preference -> Web Server -> Server and Runtime -> Tomcat v9.0 Server -> Apply。

(3)window -> show views -> servers ->單擊藍色文字 -> 選擇 Tomcat v9.0 server -> Finish -> 雙擊出現的黑色文字 -> 在Server Locations中選擇use Tomcat installation -> 在Deploy path 中填寫 webapps。

5、建立動態Web專案


步驟:右鍵 -> New -> other -> Web -> Dynamic Web project ( 動態Web專案 ) -> Next -> Dynamic web module version(3.0) -> Next ->Generate web.xml deployment descriptor 打勾-> Finish。

目錄結構:① src:用來存放java、servlet ② WebContent:存放html、css、js、jsp

6、部署和移除

6.1、部署


在Tomcat v9.0 Server at localhost 右鍵 -> Add and Remove -> 選擇專案 -> Add -> Finish。這時候會將eclipse的web專案部署到Tomcat的webapps中。在webapps中的web專案結構與eclipse專案的目錄結構是不同的。

可通過 127.0.0.1:8080/專案名/檔名(html檔案、jsp檔案或servlet檔案)檢視網頁內容。

6.2、移除


在Tomcat v9.0 Server at localhost 右鍵 -> Add and Remove -> 選擇專案 -> Remove -> Finish。這時候會將Tomcat的webapps中對應的專案移除,而eclipse中的專案不受影響,依然存在。

6.3、JSP檔案


JSP是包含Java程式碼的html檔案,用來展示資料。雖然servlet和jsp都能展示資料,但是通常不會使用servlet顯示資料,而是使用jsp來展示資料。

新建JSP檔案:在WebContent目錄右鍵 -> new -> JSP File -> Finish。

在JSP檔案總,快捷鍵 ctrl+shift+o 是無效的,而快捷鍵 Alt+/ 是有效的。

JSP中的語法:

(1)指令:用來導包和做一些文件的設定。語法:<%@指令 %>

<%@page import="com.etc.bs.service.BlogService"%>
<%@page language="java" contentType="text/html; charset=UTF-8"	pageEncoding="UTF-8"%>

(2)小指令碼:用來編寫Java程式碼。語法:<% Java程式碼 %>

<%
	System.out.println("小指令碼");
	System.out.println("Java程式碼");
%>

(3)表示式:用來做頁面輸出。語法:<%=表示式%>

	<% String s = "this.is jsp"%>
	<%=s%>

JSP中的執行過程:jsp檔案通過Tomcat翻譯成java檔案(servlet),java檔案再通過虛擬機器編譯成class位元組碼檔案。實際上響應給瀏覽器的是位元組碼檔案,所以有時候第一次載入網頁時可能比較慢,而後面再載入網頁時速度較快,生成的java檔案和位元組碼檔案都在Tomcat根目錄的work目錄之中。

Jar包的配置:Jar放到WebContent/WEB-INF/lib中,正常會自動加入構建路徑。可以在javaResources-> Libraries->Web App Libraries 檢視是否構建。

jdbc的DBUtil工具類需要載入驅動 class.forName("com.mysql.cj.jdbc.Driver");

Web專案的程式碼寫好之後,需要重新啟動Tomcat Service,同時要關注控制檯的輸出資訊。

三、Servlet

1、簡介


Servlet是一個java的類,這個類必須繼承於 javax.servlet.http.HttpServlet類。通常在web專案中新建一個名為controller的包來存放servlet檔案。

在這裡插入圖片描述

2、生命週期


Servlet是單例模式,當使用者第一次從瀏覽器請求訪問Servlet時,對應的Servlet的生命週期為:

(1)Tomcat 呼叫 Servlet 的構造方法,建立該類的物件。
(2)Tomcat 呼叫 JavaEE API 中的初始化方法:先呼叫有引數的init方法,再呼叫無參的init方法,進行初始化工作。(init方法只執行一次)
(3)初始化成功後,呼叫服務方法,通過判斷請求方式,呼叫相應的 doXxx 方法,如 doGet、doPost 等方法。(服務方法執行多次)
(4)doXxx 方法正常返回後,即提供服務結束。
(5)Tomcat 根據使用情況,在適當的時機銷燬 Servlet 物件,銷燬前呼叫 destroy 方法。
(6)垃圾回收finalize方法(虛擬機器呼叫,只執行一次)。

相關文章