首頁 > 軟體

Tomcat 與 maven 的安裝與使用教學

2022-06-15 14:02:39

Tomcat

談到 “湯姆貓”,大家可能更多想到的是大名鼎鼎的貓和老鼠

事實上,Java 世界中的 “湯姆貓” 完全不是一回事,但是同樣大名鼎鼎

Tomcat 是一個 HTTP 伺服器

  • HTTP 協定就是 HTTP 使用者端和 HTTP 伺服器之間的互動資料的格式
  • 同時也通過 ajax 和 Java Socket 分別構造了 HTTP 使用者端
  • HTTP 伺服器我們也同樣可以通過 Java Socket 來實現,而 Tomcat 就是基於 Java 實現的一個開源免費,也是被廣泛使用的 HTTP 伺服器

HTTP 協定我們也可以認為是基於 TCP
HTTP 伺服器,就是在 TCP 伺服器的基礎上,加上了一些額外的功能:
能夠解析請求中的 HTTP 報文,把請求轉換成結構化資料(物件),也能很方便的構造 HTTP 響應
HTTP 伺服器提供了一組 API,方便程式猿直接呼叫,來操作 HTTP 協定,從而簡化程式猿的開發工程

HTTP 伺服器,是屬於很大的類別
這個分類下面,其中包含著很多很多具體的實現,Tomcat 只是其中的一種 (Java 圈子裡,最知名的一種) 還有 Nginx

Tomcat HTTP 伺服器,按照 HTTP 協定的格式來解析請求,,呼叫使用者指定的相關程式碼,並且按照 HTTP 響應的格式來構造返回資料

1、下載

Tomcat 官網:Apache Tomcat

Apache 是一個組織,就是開發維護 Tomcat 的那個組織,Apache 是開源社群中一個非常有影響力的組織

org 也是一個常見的頂級域名,org 字尾的都表示是一個非營利組織的域名,咱們平時看到的都是 .com… .cn

Tomcat 的版本,會和 JDK 以及 Servlet 的版本都是密切繫結在一起的,我們使用 Tomcat 8 的版本

解壓縮:

2、重要目錄

bin:啟停指令碼

  • .bat 字尾的檔案,是 windows 的批次檔。.sh 字尾的檔案,是linux 的 shell 指令碼的檔案
  • 都是屬於一雙擊就能執行的程式
  • 要想啟動 tomcat 就可以直接雙擊這個 startup.bat
  • 既然這裡包含了startup.sh,是否意味著當前咱們下載的這個壓縮包,在 linux 上也能直接執行呢??

答案是肯定的!!
Tomcat 其實是基於 Java 實現的,Java跨平臺

conf:Tomcat 的組態檔

  • 是通過 xml 的格式來組織的

比如想修改下 tomcat 的埠號,tomcat 預設繫結的是 8080 埠

logs :紀錄檔

  • 這個目錄中記錄了很多的紀錄檔
  • 紀錄檔其實就是表示了 Tomcat 執行中的一些具體過程細節,紀錄檔其實就是通過類似於 printIn 這樣的程式碼列印出來的結果

webapps:

  • 這個目錄中放的是咱們部署的 servlet 程式
  • 每個 servlet 程式,都是一個 war字尾的檔案 (也是一種壓縮包格式),tomcat 會自動把這個 war 解壓縮,得到一個目錄
  • 每個 war 其實就對應了一個 webapp (相當於是一個網站)
  • 一個Tomcat 上,允許你同時部署多個 webapp (多個網站)

正因為,一個 Tomcat 上面可以同時部署多個 Servlet 程式,所以,也可以把 Tomcat 稱為 "Servlet 的容器”,或者簡稱為 “容器”
網上稱:Tomcat是一個容器 container… (經常會見到的)

容器1:Java 集合類 => C++就稱為容器 => 間接的導致了有些 Java 程式猿也管集合類叫做容器

容器2:Tomcat 是 Servlet 的 容器,一個 Tomcat 上面可以承載多個webapp

容器3:Spring 可以管理很多很多個 Bean 物件,Spring 也可以稱為Bean 的容器

容器4:Docker 也是涉及到容器的概念,Docker 可以認為是輕量級的虛擬機器器 (軟體模擬出來的一個計算機),一個 docker 程式裡,可以有多個 “輕量虛擬機器器”,每個輕量虛擬機器器裡面又可以包含很多程式,就把這個輕量虛擬機器器稱為容器,進一步的也把 docker 也稱為容器了……

…….

所以未來看到容器這個詞的時候,一定要擦亮眼睛,仔細的結合上下文,來分析分析,當前這個"容器" 到底是啥,不要把不同的容器混為一談!

3、使用 Tomcat

3.1、啟動 Tomcat

執行 startup.bat

看到這句話,說明你的 tomcat 啟動成功

中間的亂碼,是由於統一編碼方式
Tomcat 內部使用的編碼方式,是 utf8 (utf8 就是咱們當下最主流的編碼方式)
但是,咱們使用的 windows 是 "簡體中文版” 預設的字元集是 GBKcmd 這個程式,也是跟隨了系統的字元集
資料是按照 utf8 來構造的,但是 cmd 在顯示的時候按照了 GBK 的方式來解析,勢必就會出現亂碼!!!

把 cmd 字元編碼改成 utf8 並不容易,cmd 自身沒有提供設定字元集的功能,需要修改電腦的登入檔

Windows 系統的總的設定中心(總指揮部),謹慎修改!!!

Tomcat 還有其他的方式:

  • 結合 IDEA來使用
  • 在 Linux 上使用

閃退原因:

(1) 原因1 環境變數的問題

Tomcat 要想能執行,得能夠找到 JDK !!!
如何才能找到 JDK? 你的 JDK 到底安裝在系統的哪個位置上了

靠咱們之前最開始的時候設定的 “環境變數”

就是在描述當前咱們把JDK給裝到哪裡去了~~,得讓Tomcat 找到JDK的位置,才能去呼叫嘛

如何解決這個問題? 需要能看到報錯提示!! 閃退瞭如何看到報錯提示???
方案就是把雙擊執行的指令碼直接拖到 cmd 中來執行

如果這裡的這一組環境變數,某個有問題,就會告訴你,是誰有問題

不一定是配一個就能好!!! 再重複上述步驟,看接下來報啥錯

類似於上述環境變數,其實 tomca 自身就在嘗試設定,一般來說,tomcat 就自動配好了,但是不排除有些情況下 tomcat 自動設定不生效,這個時候就可以手動設定了

(2) 原因2 埠號被佔用了

Tomcat 是一個 HTTP 伺服器,啟動的時候要繫結埠,一般是繫結兩個埠號:8080,8005
如果這個埠已經被其他程式佔用了,此時你啟動肯定是失效的!!(閃退)
最典型的情況:你已經啟動了一個 tomcat,你再嘗試啟動第二個,第二個 tomcat 妥妥的失敗

第二個情況是很可能電腦上有別的程式佔用了 8080 / 8005
比如 web 開發,設定 windows 自帶的 IIS 伺服器 (這個伺服器預設埠也是 8080 ),如果 IIS 在執行中,tomcat 大概率啟動不了的,找到是哪個程式佔用了 8080 / 8005,cmd 輸入 ,關閉對應的程式或者給 tomcat 換個埠

3.2、使用瀏覽器存取 Tomcat

[外連圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-KfT9PUki-1655171538703)(C:UsersGwenDesktop4e54eaf098194c2dad75cc911f2aab4d.png)]

一般你裝上了 tomcat 就會帶有這個歡迎頁面,127.0.0.1:8080 ,看到這個頁面就說明tomcat 已經成功啟動了
光看看歡迎頁面,沒什麼意思,需要自己在 webappsROOT 部署一些頁面到 tomcat 上去

通過 Tomcat 存取:

是可以讓別人存取你的 html 的,就是做網站的初衷

通過本地檔案存取:

這個方式僅限於,使用自己的主機來存取,別人的主機想通過這種方式存取你的 html 是做不到

那麼此時能否讓別人存取我的頁面?不能,這是因為 NAT => IPv4,內網ip 和 外網ip 結合

此時我的 ip是 192.168.178.1,以

  • 10.*
  • 172.16.* - 172.31*
  • 192.168.*

開頭的都是內網ip,內網IP 只能在區域網內部使用,不能被其他區域網直接存取
除非你連上我的路由器,在同一個區域網裡你才能存取我的主機

因此,要想讓 tomcat 真正做到讓頁面被外面的人存取,就需要能夠搞一個外網IP,買一個雲伺服器,就有了一個外網IP !!!

當前 chrome 會把所有的不是 HTTPS 的都標記成 “不安全”,
咱們的 tomcat 也是當然支援 HTTPS (需要額外設定,尤其是你得申請證書

3.3、通過 webapps 目錄部署頁面

雖然咱們部署了頁面到 tomcat 上,但是這裡還有個問題,當前如果頁面簡單還好,直接放到 ROOT 就行了

如果當前頁面比較複雜,(若干個 HTML,還依賴了一些 css,圖片,js…) 如果全都堆在這個 ROOT 目錄裡,就非常不優雅了

因此更好的做法,是在 webapps 裡單獨建立一個目錄,把你的頁面部署到這個目錄中

將部落格系統的程式碼全部複製進來

出現 404,一般就是你存取的資源不存在

  • 請求的路徑不對
  • 路徑雖然對,但是資源沒被伺服器載入起來 [此處的原因,重啟下伺服器才能載入資源]

通過這個 http://127.0.0.1:8080/blog102/blog_list.html,就會看到我們的部落格頁面

壓縮這個 blog102,通過伺服器,就可以讓別人存取自己的頁面

以上內容,都是基於 tomcat 來部署 “靜態頁面”

頁面內容,是固定不變的
後面還需要學習基於 Tomcat 來生成動態頁面 (根據使用者輸入的不同,會得到不同的結果)
像搜狗主頁這種頁面就是靜態頁面
像搜狗的搜尋結果頁,這種頁面就是動態頁面,使用者輸入不同的詞,得到的結果是不同的

web 開發主要的工作,其實還是在動態頁面這邊

接下來重點學習的,就是動態頁面的構造
學習 Tomcat 給程式猿提供的這組用來操作 HTTP 的 API => Servlet

這裡的 API 和 HTTP 協定緊密相關

正式學習 Servlet 之前,需要先學點前置知識 (HTTP 和 Tomcat 也算是 Servlet 的前置知識)

Maven

1、什麼是 Maven ?

maven 是一個 Java 世界中,非常知名的 “工程管理工具” / “構建工具”

核心功能:

1.管理依賴

  • 就是指進行一個 A 操作 之前,要先進行一個 B 操作。例如你要結婚,先要有女朋友
  • 再比如,editor.md,就依賴了 jquery,得先讓頁面載入 jquery,再載入 editor.md

2.構建 / 編譯(也是在呼叫 jdk )

3.打包

  • 把 java 程式碼給構造成 jar 或者 war
  • jar 就是一個特殊的壓縮包,類似於 rar,裡面就是把各種 .class 檔案放到一起了

Java 中常見的程式釋出方式

maven 存在的意義就是能夠直接把這些操作串起來,一氣呵成

咱們寫程式碼,也是有很多的依賴的 (當前階段,依賴的東西不多)

  • 經常會依賴標準庫
  • 經常依賴一些第三方庫,引入的一些其他 jar 包~~

比如前面寫 JDBC 程式碼的時候,當時就下載了一個 mysql 的驅動包~~ 寫程式碼的時候,也可能是有關係很複雜的依賴~~
A-> B -> C ->D

如果你是手動管理這個依賴,這個過程就會相當蛋疼!!! 不光你得研究清楚,每個庫都依賴哪些其他庫
而且還得研究清楚,這些依賴之間的版本是怎麼關聯的

為了解決上述的依賴問題,很多程式語言都引入了自己的包管理工具 (自動解決依賴)

Java:Maven Gradle
Python:pip
JS:npm
各種語言都有…
但是除了 C++ … 目前為止,C++ 官方還沒有提供這樣的一個包管理工具,第三方的包管理工具是有,但是問題都很多… 沒有一個像Maven 這種這麼成熟的工具~~
咱們當前用的 maven,隔壁 C++ 的小孩們都饞哭了~~

如何下載安裝 maven ?
網上有很多下載安裝 maven 的教學,大家千萬不要去參考!!!
咱們的做法其實就是啥也不幹就行了 ( IDEA 內建了現成的 maven )
“不打等於上分”

2、使用 Maven

2.1、建立專案

搭配 IDEA 的使用方式:選擇 maven 的方式來建立專案

這幾個東西的用途就是,如果你寫了一個程式,你要釋出到 maven 中央倉庫上,這三個引數就是你這個程式在中央倉庫的身份標識

下載 mysql 的驅動包,就是從 中央倉庫 搞的呀~~
Java 圈子裡有很多的大佬實現了很多的第三方庫~~ 這麼多第三方庫,組織形式就是把他們統一放到一箇中央倉庫這裡,方便使用者去查詢

這個是建立好的專案的目錄結構~~
src/main/java 這個目錄用來放咱們的 java 程式碼~~

src/main/resources 這個目錄用來放一些依賴的資源

src/test/java 這個目錄用來放單元測試的程式碼~~ (暫時不涉及)

pom.xml 這個是maven 專案的核心組態檔,一個 maven 專案的司令部~~
——檔案是使用 xml 這種格式來組織~~

建立好專案後,如何使用?

右標籤選單,如果沒有,在 View-Tool Windows-Maven
這裡羅列的這些內容,其實都是可以通過 maven 來進行操作的

咱們用的最多的打包
打包不僅僅是完成打包,會執行上面的所有操作~~
這裡的打包結果一般是一個 jar 或者是一個 war

2.2、maven 管理依賴

使用 maven 幫我們下載並安裝第三方庫~~

以 mysql 驅動包為例

把這個內容貼上到 pom.xml

dependencies 標籤中,可以放多個 dependency 標籤,一個專案可以引入多個依賴

初始情況下的 pom.xml 可能沒有這個標籤,就需要手動建立一下

一般來說,maven 就會自動從中央倉庫那裡來下載依賴了~~
—般會在右下角這裡顯示一個下載的狀態~~

第一次使用的時候,可能會下載比較久,一旦下載好了之後,後續就能直接用了
(第一次使用的時候,mysql 和 版本啥的這幾個字是紅色的)

如果 idea 沒有自動觸發下載,手動點 maven 右上角的重新整理按鈕

由於中央倉庫,伺服器在國外~~ 下載速度可能會比較慢!!! 預設的源在國外,是不太穩定的,如果你實在不行,也可以手動的把 maven 倉庫給設定成使用國內的源 (使用國內的中央倉庫),能用預設的源,就用預設的,預設的源大部分情況下是好的

出現了這條: Cannot resolve plugin org.apache.maven.plugins:maven-resources-plugin:2.6,把所有的檔案刪除掉,再次執行更新就能夠解決這個問題,這次終於成功了!

如果看到了下圖這個庫,說明就是引入成功了!!!

如果沒有這個庫,嘗試點選右上角的那個重新整理按鈕,你要注意右下角的下載的進度條~~

無論是 maven 還是其他的庫,都是通過同樣的方式來引入的,只要把對應的 xml 片段(座標) 拷貝到你的 pom.xml 中即可~~

到此這篇關於Tomcat 與 maven 的安裝與使用的文章就介紹到這了,更多相關Tomcat 與 maven安裝內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com