Tomcat基本使用 什麼是Web伺服器 web伺服器的定義 其實並沒有標准定義,一般認為Web伺服器一般指網站伺服器,是指駐留於網際網路上某種類型電腦的程式,可以向瀏覽器等Web客戶端提供文檔,也可以放置網站文件,讓全世界瀏覽;可以放置數據文件,讓全世界下載。 Web伺服器的特點 伺服器是一種被動 ...
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伺服器,該方式顯得更為智能化。
本文由
傳智教育博學谷狂野架構師
教研團隊發佈。如果本文對您有幫助,歡迎
關註
和點贊
;如果您有任何建議也可留言評論
或私信
,您的支持是我堅持創作的動力。轉載請註明出處!