Tomcat基本使用

什么是Web服務器
web服務器的定義
其實并沒有標準定義,一般認為Web服務器一般指網站服務器,是指駐留于因特網上某種型別計算機的程式,可以向瀏覽器等Web客戶端提供檔案,也可以放置網站檔案,讓全世界瀏覽;可以放置資料檔案,讓全世界下載,

Web服務器的特點
- 服務器是一種被動程式:只有當Internet上運行其他計算機中的瀏覽器發出的請求時,服務器才會回應,
- 服務器一般使用HTTP(超文本傳輸協議)與客戶機瀏覽器進行資訊交流,這就是人們常把它們稱為HTTP服務器的原因,
- Web服務器不僅能夠存盤資訊,還能在用戶通過Web瀏覽器提供的資訊的基礎上運行腳本和程式
什么是Tomcat
Tomcat是由Apache軟體基金會屬下Jakarta專案開發的Servlet容器,是開發和除錯JSP程式的首選,實作了對Servlet和JavaServer Page的支持,并提供Web服務器的一些特有功能,
Tomcat是一款開源輕量級Web應用服務器,是一款優秀的Servlet容器實作,
Servlet(Server Applet)是Java Servlet的簡稱,稱為小服務程式或服務連接器,用Java撰寫的服務器端程式,具有獨立于平臺和協議的特性,主要功能在于互動式地瀏覽和生成資料,生成動態Web內容,
Servlet嚴格來講是指Java語言實作的一個介面,一般情況下我們說的Servlet是指任何實作了這個Servlet介面的類,
- 實體化并呼叫init()方法初始化該 Servlet,一般 Servlet 只初始化一次(只有一個物件)
- service()(根據請求方法不同呼叫doGet() 或者 doPost(),此外還有doHead()、doPut()、doTrace()、doDelete()、doOptions()、destroy()),
- 當 Server 不再需要 Servlet 時(一般當 Server 關閉時),Server 呼叫 Servlet 的 destroy() 方法,
簡單總結下,tomcat是一個中間件,在B/S架構中,瀏覽器發出的http請求經過tpmcat中間件,轉發到最終的目的服務器上,回應訊息再通過tomcat回傳給瀏覽器,
tomcat所做的事情主要有:開啟監聽埠監聽用戶的請求,決議用戶發來的http請求然后訪問到你指定的應用系統,然后你回傳的頁面經過tomcat回傳給用戶,
Apache,Nginx和Tomcat的區別
- Apache全稱是 Apache Http Server Project, Tomcat全稱是 Apache Tomcat,
- Apache和 Nginx用于處理靜態資源, tomcat用來處理動態資源,
- Apache和Nginx相比,Nginx適合做前端服務器,適合做負載均衡,
一般情況下,使用的時候,都是 Apache+Tomcat一起使用或者 Nginx+tomcat一起使用,
典型的Servlet的處理流程
- 第一個到達服務器的HTTP請求被委派到Servlet容器,
- Servlet容器在呼叫service()方法之前加載Servlet,
- 然后Servlet容器處理由多個執行緒產生的多個請求,每個執行緒執行一個單一的Servlet實體的service()方法,
Tomcat版本介紹
| Tomcat版本 | 6 | 7 | 8 | 8.5 | 9 |
|---|---|---|---|---|---|
| JDK | ≥5.0 | ≥6.0 | ≥7.0 | ≥7.0 | ≥8.0 |
| Servlet | 2.5 | 3 | 3.1 | 3.1 | 4 |
| JSP | 2.1 | 2.2 | 2.3 | 2.3 | 2.3 |
| EL | 2.1 | 2.2 | 3 | 3 | 3 |
| WebScoket | N/A | 1.1 | 1.1 | 1.1 | 1.1 |
Servlet規范
Servlet 2.X
專案目錄結構必須要有WEB-INF,web.xml等檔案夾和檔案,在web.xml中配置servlet,filter,listener,以web.xml為java web專案的統一入口,
Servlet 3.x
專案中可以不需要WEB-INF,web.xml等檔案夾和檔案,在沒有web.xml檔案的情況下,通過注解實作servlet,filter,listener的宣告,當使用注解時,容器自動進行掃描,
8.5版本特點
Tomcat8.5進行了大量的代碼重構,對比與7.0的版本,也符合Tomcat未來的代碼架構體系,但是Tomcat的核心和主體架構還是一直保持這樣的,
- 支持Servlet3.1
- 默認采用NIO,移除BIO
- 支持NIO2(AIO)
- 支持HTTP/2協議
- 默認采用異步日志處理
為什么要使用8.5的版本,首先這個版本比較新,因為太老的版本比如6.0的版本Servlet不支持3所以會導致部署SpringBoot等專案有問題,同時這個版本是在9.0出現以后發布的一個中間版本,主體架構延續8.0,同時又實作了部分9.0的新特性,
Tomcat啟動
Tomcat 下載
Tomcat下載地址:https://tomcat.apache.org/download-80.cgi

一般啟動
startup.bat 啟動 Tomcat
- 通常下載解壓版即可,解壓后可以直接使用,安裝版使用不靈活,
- 直接到 %Tomcat_HOME%/bin 目錄下面運行 startup.bat ( linux 中是 startup.sh )檔案即可開啟 Tomcat,默認埠 8080,瀏覽器輸入 localhost:8080 即可訪問,
- 這樣做的好處是能直接從視窗中實時的看到專案中所有輸出的內容,以及拋出的例外與錯誤等,適合于除錯階段
- Windws 系統中可以將 startup.bat 創建快捷方式,然后放到啟動檔案夾中,這樣就會開機自起,

啟動日志如下

啟動成功可以訪問到的Tomcat首頁 http://localhost:8080/

為什么有這個默認首頁:Tomcat“買一送一”的思想,默認Tomcat啟動后加載webapps中的專案

IDEA中啟動
IDEA中配置Tomcat
- 點擊Run—EDit Configurations…

- 點擊左側“+”號,找到Tomcat Server—Local
若是沒有找到Tomcat Server 可以點擊最后一行 34 items more

- 在Tomcat Server -> Unnamed -> Server -> Application server專案下,點擊 Configuration ,找到本地 Tomcat 服務器,再點擊 OK按鈕,

IDEA發布專案
- 點擊Deployment選項卡配置需要發布的服務

- 選擇需要發布的war

- 然后點擊ok就可以了

- 運行專案

- 然后就可以通過瀏覽器訪問頁面了

嵌入式啟動
SpringBoot中一個main方法嵌入式啟動Tomcat
COPY@SpringBootApplication
@Import(MybatisConfig.class)
public class AdminApplication {
//相當于啟動了Tomcat的8080埠
public static void main(String[] args) {
SpringApplication.run(AdminApplication.class, args);
}
}

Tomcat關閉
第一種:Ctrl+C鍵 關閉Tomcat服務器
第二種:點擊Tomcat視窗的右上角關閉按鈕 (暴力停止服務器)
第三種:找到tomcat目錄/bin/shutdown.bat檔案,雙擊執行關閉Tomcat,
Tomcat專案部署
隱式部署
直接丟檔案夾、war、jar到webapps目錄,tomcat會根據檔案夾名稱自動生成虛擬路徑,簡單,但是需要重啟Tomcat服務器,包括要修改埠和訪問路徑的也需要重啟,
顯式部署
添加context元素
在Tomcat的conf目錄下的server.xml中的Host加入一個Context(指定路徑和檔案地址)
COPY<Context path="/test" docBase="D:/work/spring_mvc_test.war" />

即/test這個虛擬路徑映射到了D:/work/spring_mvc_test目錄下(war會解壓成檔案),修改完servler.xml需要重啟tomcat 服務器,
創建xml檔案
在Tomcat的conf/Catalina/localhost中創建xml檔案,訪問路徑為檔案名
在localhost目錄下新建demo.xml
COPY<Context docBase="D:/work/spring_mvc_test" />
不需要寫path,虛擬目錄就是檔案名demo,path默認為/demo,添加demo.xml不需要重啟 tomcat服務器,
三種方式比較
- 隱式部署:可以很快部署,需要人手動移動Web應用到webapps下,在實際操作中不是很人性化
- 添加context元素 : 配置速度快,需要配置兩個路徑,如果path為空字串,則為預設配置,每次修改server.xml檔案后都要重新啟動Tomcat服務器,重新部署.
- 創建xml檔案:服務器后臺會自動部署,修改一次后臺部署一次,不用重復啟動Tomcat服務器,該方式顯得更為智能化,
本文由
傳智教育博學谷狂野架構師教研團隊發布,如果本文對您有幫助,歡迎
關注和點贊;如果您有任何建議也可留言評論或私信,您的支持是我堅持創作的動力,轉載請注明出處!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/547117.html
標籤:其他
