Tomcat?與?maven?的安裝與使用教程
Tomcat
談到 “湯姆貓”,大家可能更多想到的是大名鼎鼎的貓和老鼠
事實上,Java 世界中的 “湯姆貓” 完全不是一回事,但是同樣大名鼎鼎
Tomcat 是一個 HTTP 服務(wù)器
- HTTP 協(xié)議就是 HTTP 客戶端和 HTTP 服務(wù)器之間的交互數(shù)據(jù)的格式
- 同時也通過 ajax 和 Java Socket 分別構(gòu)造了 HTTP 客戶端
- HTTP 服務(wù)器我們也同樣可以通過 Java Socket 來實現(xiàn),而 Tomcat 就是基于 Java 實現(xiàn)的一個開源免費,也是被廣泛使用的 HTTP 服務(wù)器
HTTP 協(xié)議我們也可以認為是基于 TCP
HTTP 服務(wù)器,就是在 TCP 服務(wù)器的基礎(chǔ)上,加上了一些額外的功能:
能夠解析請求中的 HTTP 報文,把請求轉(zhuǎn)換成結(jié)構(gòu)化數(shù)據(jù)(對象),也能很方便的構(gòu)造 HTTP 響應(yīng)
HTTP 服務(wù)器提供了一組 API,方便程序猿直接調(diào)用,來操作 HTTP 協(xié)議,從而簡化程序猿的開發(fā)工程
HTTP 服務(wù)器,是屬于很大的類別
這個分類下面,其中包含著很多很多具體的實現(xiàn),Tomcat 只是其中的一種 (Java 圈子里,最知名的一種) 還有 Nginx
Tomcat HTTP 服務(wù)器,按照 HTTP 協(xié)議的格式來解析請求,,調(diào)用用戶指定的相關(guān)代碼,并且按照 HTTP 響應(yīng)的格式來構(gòu)造返回數(shù)據(jù)
1、下載
Tomcat 官網(wǎng):Apache Tomcat
Apache 是一個組織,就是開發(fā)維護 Tomcat 的那個組織,Apache 是開源社區(qū)中一個非常有影響力的組織
org 也是一個常見的頂級域名,org 后綴的都表示是一個非營利組織的域名,咱們平時看到的都是 .com… .cn
Tomcat 的版本,會和 JDK 以及 Servlet 的版本都是密切綁定在一起的,我們使用 Tomcat 8 的版本
解壓縮:
2、重要目錄
bin:啟停腳本
.bat
后綴的文件,是 windows 的批處理文件。.sh
后綴的文件,是linux 的 shell 腳本的文件- 都是屬于一雙擊就能運行的程序
- 要想啟動 tomcat 就可以直接雙擊這個
startup.bat
- 既然這里包含了startup.sh,是否意味著當前咱們下載的這個壓縮包,在 linux 上也能直接運行呢??
答案是肯定的!!
Tomcat 其實是基于 Java 實現(xiàn)的,Java跨平臺
conf:Tomcat 的配置文件
- 是通過
xml
的格式來組織的
比如想修改下 tomcat 的端口號,tomcat 默認綁定的是 8080 端口
logs :日志
- 這個目錄中記錄了很多的日志
- 日志其實就是表示了 Tomcat 運行中的一些具體過程細節(jié),日志其實就是通過類似于 printIn 這樣的代碼打印出來的結(jié)果
webapps:
- 這個目錄中放的是咱們部署的 servlet 程序
- 每個 servlet 程序,都是一個
war
后綴的文件 (也是一種壓縮包格式),tomcat 會自動把這個war
解壓縮,得到一個目錄 - 每個 war 其實就對應(yīng)了一個 webapp (相當于是一個網(wǎng)站)
- 一個Tomcat 上,允許你同時部署多個 webapp (多個網(wǎng)站)
正因為,一個 Tomcat 上面可以同時部署多個 Servlet 程序,所以,也可以把 Tomcat 稱為 "Servlet 的容器”,或者簡稱為 “容器”
網(wǎng)上稱:Tomcat是一個容器 container… (經(jīng)常會見到的)
容器1:Java 集合類 => C++就稱為容器 => 間接的導(dǎo)致了有些 Java 程序猿也管集合類叫做容器
容器2:Tomcat 是 Servlet 的 容器,一個 Tomcat 上面可以承載多個webapp
容器3:Spring 可以管理很多很多個 Bean 對象,Spring 也可以稱為Bean 的容器
容器4:Docker 也是涉及到容器的概念,Docker 可以認為是輕量級的虛擬機 (軟件模擬出來的一個計算機),一個 docker 程序里,可以有多個 “輕量虛擬機”,每個輕量虛擬機里面又可以包含很多程序,就把這個輕量虛擬機稱為容器,進一步的也把 docker 也稱為容器了……
…….
所以未來看到容器這個詞的時候,一定要擦亮眼睛,仔細的結(jié)合上下文,來分析分析,當前這個"容器" 到底是啥,不要把不同的容器混為一談!
3、使用 Tomcat
3.1、啟動 Tomcat
運行 startup.bat
看到這句話,說明你的 tomcat 啟動成功
中間的亂碼,是由于統(tǒng)一編碼方式
Tomcat 內(nèi)部使用的編碼方式,是 utf8 (utf8 就是咱們當下最主流的編碼方式)
但是,咱們使用的 windows 是 "簡體中文版” 默認的字符集是 GBK,cmd 這個程序,也是跟隨了系統(tǒng)的字符集
數(shù)據(jù)是按照 utf8 來構(gòu)造的,但是 cmd 在顯示的時候按照了 GBK 的方式來解析,勢必就會出現(xiàn)亂碼!!!
把 cmd 字符編碼改成 utf8 并不容易,cmd 自身沒有提供設(shè)置字符集的功能,需要修改電腦的注冊表
Windows 系統(tǒng)的總的配置中心(總指揮部),謹慎修改!??!
Tomcat 還有其他的方式:
- 結(jié)合 IDEA來使用
- 在 Linux 上使用
閃退原因:
(1) 原因1 環(huán)境變量的問題
Tomcat 要想能運行,得能夠找到 JDK !!!
如何才能找到 JDK? 你的 JDK 到底安裝在系統(tǒng)的哪個位置上了
靠咱們之前最開始的時候配置的 “環(huán)境變量”
就是在描述當前咱們把JDK給裝到哪里去了~~,得讓Tomcat 找到JDK的位置,才能去調(diào)用嘛
如何解決這個問題? 需要能看到報錯提示!! 閃退了如何看到報錯提示???
方案就是把雙擊運行的腳本直接拖到 cmd 中來運行
如果這里的這一組環(huán)境變量,某個有問題,就會告訴你,是誰有問題
不一定是配一個就能好!!! 再重復(fù)上述步驟,看接下來報啥錯
類似于上述環(huán)境變量,其實 tomca 自身就在嘗試配置,一般來說,tomcat 就自動配好了,但是不排除有些情況下 tomcat 自動配置不生效,這個時候就可以手動配置了
(2) 原因2 端口號被占用了
Tomcat 是一個 HTTP 服務(wù)器,啟動的時候要綁定端口,一般是綁定兩個端口號:8080,8005
如果這個端口已經(jīng)被其他程序占用了,此時你啟動肯定是失效的!!(閃退)
最典型的情況:你已經(jīng)啟動了一個 tomcat,你再嘗試啟動第二個,第二個 tomcat 妥妥的失敗
第二個情況是很可能電腦上有別的程序占用了 8080 / 8005
比如 web 開發(fā),配置 windows 自帶的 IIS 服務(wù)器 (這個服務(wù)器默認端口也是 8080 ),如果 IIS 在運行中,tomcat 大概率啟動不了的,找到是哪個程序占用了 8080 / 8005,cmd 輸入 ,關(guān)閉對應(yīng)的程序或者給 tomcat 換個端口
3.2、使用瀏覽器訪問 Tomcat
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-KfT9PUki-1655171538703)(C:\Users\Gwen\Desktop\4e54eaf098194c2dad75cc911f2aab4d.png)]
一般你裝上了 tomcat 就會帶有這個歡迎頁面,127.0.0.1:8080
,看到這個頁面就說明tomcat 已經(jīng)成功啟動了
光看看歡迎頁面,沒什么意思,需要自己在 \webapps\ROOT
部署一些頁面到 tomcat 上去
通過 Tomcat 訪問:
是可以讓別人訪問你的 html 的,就是做網(wǎng)站的初衷
通過本地文件訪問:
這個方式僅限于,使用自己的主機來訪問,別人的主機想通過這種方式訪問你的 html 是做不到
那么此時能否讓別人訪問我的頁面?不能,這是因為 NAT => IPv4,內(nèi)網(wǎng)ip 和 外網(wǎng)ip 結(jié)合
此時我的 ip是 192.168.178.1,以
- 10.*
- 172.16.* - 172.31*
- 192.168.*
開頭的都是內(nèi)網(wǎng)ip,內(nèi)網(wǎng)IP 只能在局域網(wǎng)內(nèi)部使用,不能被其他局域網(wǎng)直接訪問
除非你連上我的路由器,在同一個局域網(wǎng)里你才能訪問我的主機
因此,要想讓 tomcat 真正做到讓頁面被外面的人訪問,就需要能夠搞一個外網(wǎng)IP,買一個云服務(wù)器,就有了一個外網(wǎng)IP !!!
當前 chrome 會把所有的不是 HTTPS 的都標記成 “不安全”,
咱們的 tomcat 也是當然支持 HTTPS (需要額外配置,尤其是你得申請證書
3.3、通過 webapps 目錄部署頁面
雖然咱們部署了頁面到 tomcat 上,但是這里還有個問題,當前如果頁面簡單還好,直接放到 ROOT 就行了
如果當前頁面比較復(fù)雜,(若干個 HTML,還依賴了一些 css,圖片,js…) 如果全都堆在這個 ROOT 目錄里,就非常不優(yōu)雅了
因此更好的做法,是在 webapps 里單獨創(chuàng)建一個目錄,把你的頁面部署到這個目錄中
將博客系統(tǒng)的代碼全部復(fù)制進來
出現(xiàn) 404,一般就是你訪問的資源不存在
- 請求的路徑不對
- 路徑雖然對,但是資源沒被服務(wù)器加載起來 [此處的原因,重啟下服務(wù)器才能加載資源]
通過這個 http://127.0.0.1:8080/blog102/blog_list.html,就會看到我們的博客頁面
壓縮這個 blog102,通過服務(wù)器,就可以讓別人訪問自己的頁面
以上內(nèi)容,都是基于 tomcat 來部署 “靜態(tài)頁面”
頁面內(nèi)容,是固定不變的
后面還需要學(xué)習基于 Tomcat 來生成動態(tài)頁面 (根據(jù)用戶輸入的不同,會得到不同的結(jié)果)
像搜狗主頁這種頁面就是靜態(tài)頁面
像搜狗的搜索結(jié)果頁,這種頁面就是動態(tài)頁面,用戶輸入不同的詞,得到的結(jié)果是不同的
web 開發(fā)主要的工作,其實還是在動態(tài)頁面這邊
接下來重點學(xué)習的,就是動態(tài)頁面的構(gòu)造
學(xué)習 Tomcat 給程序猿提供的這組用來操作 HTTP 的 API => Servlet
這里的 API 和 HTTP 協(xié)議緊密相關(guān)
正式學(xué)習 Servlet 之前,需要先學(xué)點前置知識 (HTTP 和 Tomcat 也算是 Servlet 的前置知識)
Maven
1、什么是 Maven ?
maven 是一個 Java 世界中,非常知名的 “工程管理工具” / “構(gòu)建工具”
核心功能:
1.管理依賴
- 就是指進行一個 A 操作 之前,要先進行一個 B 操作。例如你要結(jié)婚,先要有女朋友
- 再比如,editor.md,就依賴了 jquery,得先讓頁面加載 jquery,再加載 editor.md
2.構(gòu)建 / 編譯(也是在調(diào)用 jdk )
3.打包
- 把 java 代碼給構(gòu)造成
jar
或者war
jar
就是一個特殊的壓縮包,類似于 rar,里面就是把各種.class
文件放到一起了
Java 中常見的程序發(fā)布方式
maven 存在的意義就是能夠直接把這些操作串起來,一氣呵成
咱們寫代碼,也是有很多的依賴的 (當前階段,依賴的東西不多)
- 經(jīng)常會依賴標準庫
- 經(jīng)常依賴一些第三方庫,引入的一些其他 jar 包~~
比如前面寫 JDBC 代碼的時候,當時就下載了一個 mysql 的驅(qū)動包~~ 寫代碼的時候,也可能是有關(guān)系很復(fù)雜的依賴~~
A-> B -> C ->D
如果你是手動管理這個依賴,這個過程就會相當?shù)疤?!! 不光你得研究清楚,每個庫都依賴哪些其他庫
而且還得研究清楚,這些依賴之間的版本是怎么關(guān)聯(lián)的
為了解決上述的依賴問題,很多編程語言都引入了自己的包管理工具 (自動解決依賴)
Java:Maven Gradle
Python:pip
JS:npm
各種語言都有…
但是除了 C++ … 目前為止,C++ 官方還沒有提供這樣的一個包管理工具,第三方的包管理工具是有,但是問題都很多… 沒有一個像Maven 這種這么成熟的工具~~
咱們當前用的 maven,隔壁 C++ 的小孩們都饞哭了~~
如何下載安裝 maven ?
網(wǎng)上有很多下載安裝 maven 的教程,大家千萬不要去參考!!!
咱們的做法其實就是啥也不干就行了 ( IDEA 內(nèi)置了現(xiàn)成的 maven )
“不打等于上分”
2、使用 Maven
2.1、創(chuàng)建項目
搭配 IDEA 的使用方式:選擇 maven 的方式來創(chuàng)建項目
這幾個東西的用途就是,如果你寫了一個程序,你要發(fā)布到 maven 中央倉庫上,這三個參數(shù)就是你這個程序在中央倉庫的身份標識
下載 mysql 的驅(qū)動包,就是從 中央倉庫 搞的呀~~
Java 圈子里有很多的大佬實現(xiàn)了很多的第三方庫~~ 這么多第三方庫,組織形式就是把他們統(tǒng)一放到一個中央倉庫這里,方便用戶去查找
這個是創(chuàng)建好的項目的目錄結(jié)構(gòu)~~src/main/java
這個目錄用來放咱們的 java 代碼~~
src/main/resources
這個目錄用來放一些依賴的資源
src/test/java
這個目錄用來放單元測試的代碼~~ (暫時不涉及)
pom.xml
這個是maven 項目的核心配置文件,一個 maven 項目的司令部~~
——文件是使用 xml 這種格式來組織~~
創(chuàng)建好項目后,如何使用?
右標簽菜單,如果沒有,在 View-Tool Windows-Maven
這里羅列的這些內(nèi)容,其實都是可以通過 maven 來進行操作的
咱們用的最多的打包
打包不僅僅是完成打包,會執(zhí)行上面的所有操作~~
這里的打包結(jié)果一般是一個 jar
或者是一個 war
2.2、maven 管理依賴
使用 maven 幫我們下載并安裝第三方庫~~
以 mysql 驅(qū)動包為例
- 去中央倉庫上,找到 mysql 驅(qū)動包 Maven Repository MySQL Connector/J » 5.1.47 版本
- 把這里的 maven 標簽頁下的這個 xml 配置給復(fù)制下來~~
把這個內(nèi)容粘貼到 pom.xml
在 dependencies
標簽中,可以放多個 dependency 標簽,一個項目可以引入多個依賴
初始情況下的 pom.xml
可能沒有這個標簽,就需要手動創(chuàng)建一下
一般來說,maven 就會自動從中央倉庫那里來下載依賴了~~
—般會在右下角這里顯示一個下載的狀態(tài)~~
第一次使用的時候,可能會下載比較久,一旦下載好了之后,后續(xù)就能直接用了
(第一次使用的時候,mysql 和 版本啥的這幾個字是紅色的)
如果 idea 沒有自動觸發(fā)下載,手動點 maven 右上角的刷新按鈕
由于中央倉庫,服務(wù)器在國外~~ 下載速度可能會比較慢!!! 默認的源在國外,是不太穩(wěn)定的,如果你實在不行,也可以手動的把 maven 倉庫給配置成使用國內(nèi)的源 (使用國內(nèi)的中央倉庫),能用默認的源,就用默認的,默認的源大部分情況下是好的
出現(xiàn)了這條: Cannot resolve plugin org.apache.maven.plugins:maven-resources-plugin:2.6,把所有的文件刪除掉,再次執(zhí)行更新就能夠解決這個問題,這次終于成功了!
如果看到了下圖這個庫,說明就是引入成功了!!!
如果沒有這個庫,嘗試點擊右上角的那個刷新按鈕,你要注意右下角的下載的進度條~~
無論是 maven 還是其他的庫,都是通過同樣的方式來引入的,只要把對應(yīng)的 xml 片段(坐標) 拷貝到你的 pom.xml 中即可~~
到此這篇關(guān)于Tomcat與maven的安裝與使用的文章就介紹到這了,更多相關(guān)Tomcat與maven安裝內(nèi)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來源標注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。