<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
談到 “湯姆貓”,大家可能更多想到的是大名鼎鼎的貓和老鼠
事實上,Java 世界中的 “湯姆貓” 完全不是一回事,但是同樣大名鼎鼎
Tomcat 是一個 HTTP 伺服器
HTTP 協定我們也可以認為是基於 TCP
HTTP 伺服器,就是在 TCP 伺服器的基礎上,加上了一些額外的功能:
能夠解析請求中的 HTTP 報文,把請求轉換成結構化資料(物件),也能很方便的構造 HTTP 響應
HTTP 伺服器提供了一組 API,方便程式猿直接呼叫,來操作 HTTP 協定,從而簡化程式猿的開發工程
HTTP 伺服器,是屬於很大的類別
這個分類下面,其中包含著很多很多具體的實現,Tomcat 只是其中的一種 (Java 圈子裡,最知名的一種) 還有 Nginx
Tomcat HTTP 伺服器,按照 HTTP 協定的格式來解析請求,,呼叫使用者指定的相關程式碼,並且按照 HTTP 響應的格式來構造返回資料
Tomcat 官網:Apache Tomcat
Apache 是一個組織,就是開發維護 Tomcat 的那個組織,Apache 是開源社群中一個非常有影響力的組織
org 也是一個常見的頂級域名,org 字尾的都表示是一個非營利組織的域名,咱們平時看到的都是 .com… .cn
Tomcat 的版本,會和 JDK 以及 Servlet 的版本都是密切繫結在一起的,我們使用 Tomcat 8 的版本
解壓縮:
bin:啟停指令碼
.bat
字尾的檔案,是 windows 的批次檔。.sh
字尾的檔案,是linux 的 shell 指令碼的檔案startup.bat
答案是肯定的!!
Tomcat 其實是基於 Java 實現的,Java跨平臺
conf:Tomcat 的組態檔
xml
的格式來組織的比如想修改下 tomcat 的埠號,tomcat 預設繫結的是 8080 埠
logs :紀錄檔
webapps:
war
字尾的檔案 (也是一種壓縮包格式),tomcat 會自動把這個 war
解壓縮,得到一個目錄正因為,一個 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 也稱為容器了……
…….
所以未來看到容器這個詞的時候,一定要擦亮眼睛,仔細的結合上下文,來分析分析,當前這個"容器" 到底是啥,不要把不同的容器混為一談!
執行 startup.bat
看到這句話,說明你的 tomcat 啟動成功
中間的亂碼,是由於統一編碼方式
Tomcat 內部使用的編碼方式,是 utf8 (utf8 就是咱們當下最主流的編碼方式)
但是,咱們使用的 windows 是 "簡體中文版” 預設的字元集是 GBK,cmd 這個程式,也是跟隨了系統的字元集
資料是按照 utf8 來構造的,但是 cmd 在顯示的時候按照了 GBK 的方式來解析,勢必就會出現亂碼!!!
把 cmd 字元編碼改成 utf8 並不容易,cmd 自身沒有提供設定字元集的功能,需要修改電腦的登入檔
Windows 系統的總的設定中心(總指揮部),謹慎修改!!!
Tomcat 還有其他的方式:
閃退原因:
(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 換個埠
[外連圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(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,以
開頭的都是內網ip,內網IP 只能在區域網內部使用,不能被其他區域網直接存取
除非你連上我的路由器,在同一個區域網裡你才能存取我的主機
因此,要想讓 tomcat 真正做到讓頁面被外面的人存取,就需要能夠搞一個外網IP,買一個雲伺服器,就有了一個外網IP !!!
當前 chrome 會把所有的不是 HTTPS 的都標記成 “不安全”,
咱們的 tomcat 也是當然支援 HTTPS (需要額外設定,尤其是你得申請證書
雖然咱們部署了頁面到 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 是一個 Java 世界中,非常知名的 “工程管理工具” / “構建工具”
核心功能:
1.管理依賴
2.構建 / 編譯(也是在呼叫 jdk )
3.打包
jar
或者 war
jar
就是一個特殊的壓縮包,類似於 rar,裡面就是把各種 .class
檔案放到一起了Java 中常見的程式釋出方式
maven 存在的意義就是能夠直接把這些操作串起來,一氣呵成
咱們寫程式碼,也是有很多的依賴的 (當前階段,依賴的東西不多)
比如前面寫 JDBC 程式碼的時候,當時就下載了一個 mysql 的驅動包~~ 寫程式碼的時候,也可能是有關係很複雜的依賴~~
A-> B -> C ->D
如果你是手動管理這個依賴,這個過程就會相當蛋疼!!! 不光你得研究清楚,每個庫都依賴哪些其他庫
而且還得研究清楚,這些依賴之間的版本是怎麼關聯的
為了解決上述的依賴問題,很多程式語言都引入了自己的包管理工具 (自動解決依賴)
Java:Maven Gradle
Python:pip
JS:npm
各種語言都有…
但是除了 C++ … 目前為止,C++ 官方還沒有提供這樣的一個包管理工具,第三方的包管理工具是有,但是問題都很多… 沒有一個像Maven 這種這麼成熟的工具~~
咱們當前用的 maven,隔壁 C++ 的小孩們都饞哭了~~
如何下載安裝 maven ?
網上有很多下載安裝 maven 的教學,大家千萬不要去參考!!!
咱們的做法其實就是啥也不幹就行了 ( IDEA 內建了現成的 maven )
“不打等於上分”
搭配 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
使用 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!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45