參考自北京動力節點的視頻教程:https://www.bilibili.com/video/av14548279/?p=1
1、Java XE
Java SE 是做電腦上運行的軟件。
Java EE 是用來做網站的-(我們常見的JSP技術)
Java ME 是做手機軟件的。
2、B/S架構與C/S架構


3、三協議四角色

- HTTP協議:
- Servlet協議:
- 若程序員要開發完成某一具體業務的服務端程序,則必須實現Servlet接口,使用ServletAPI進行數據傳遞。
- Servlet協議四JavaEE協議的一部分。
- JavaEE協議即進行JavaWeb開發的一套API,除了Servlet協議外,還包含JSP協議、JSTL協議、JPA協議等。
- JDBC協議:
- 服務器端程序按照JDBC協議中規定的方式可以連接並操作數據庫。
- JDBC協議(接口)的實現,均由數據庫廠商完成,放於數據庫廠商提供的數據庫驅動jar包中了。
- 所以,我們連接不同的數據庫,就需要導入不同的數據庫驅動jar包。
4、Tomcat服務器

- 重量級服務器:實現了javaEE規范。
- 輕量級服務器:實現了javaEE規范中的Servlet/JSP,沒有大面積實現JavaEE規范,所以叫輕量級的服務器。
- 因為Tomcat不是重量級服務器,所以不能稱之為JavaEE容器。
5、Tomcat的運行環境配置

- Tomcat6及其后版本可以只安裝JRE而不安裝JDK。若Tomcat安裝的本機作為服務器,則這台電腦可不安裝JDK而只安裝JRE
- 目前的Tomcat的安裝不再需要配置環境變量CATALINA_HOME,因為在\tomcat-9\bin的startup.bat中有一行代碼:
6、Tomcat的啟動與訪問
- 雙擊打開bin目錄下的startup.bat文件啟動Tomcat。相反shutdown.bat文件來關閉Tomcat服務。
- 若環境變量JAVA_HOME沒有設置正確,則會導致啟動失敗。
- 在cmd命令行中,可以獲取命令出錯的原因。
- 通過瀏覽器訪問http://localhost:8080,若訪問成功,則表明tomcat啟動成功。
- localhost是本地DNS解析的127.0.0.1的域名,打開本機的名稱為hosts文件就可以看到。該文件在Windows系統中一般位於如下位置:C:\Windows\System32\drivers\etc
- 若安裝了Tomcat的本機作為服務器,讓局域網中的其他電腦來進行訪問,則需要讓其他電腦知道安裝Tomcat的電腦的IP地址,讓其他電腦通過IP來訪問Tomcat服務器。
7、項目(應用)的結構
7.1、總覽
- 項目文件夾(應用)所在目錄下可以直接存放資源文件,如.html、.jpg等,也可以將其放入到子目錄中訪問。
- 在/WEB-INF/下可以包含web.xml配置文件,定義請求URI與所要訪問的Servlet間的映射關系、指定歡迎頁面等。
- 在/WEB-INF/可以包含子目錄lib,用於存放當前web應用所使用的外部Jar包。
- 若Web項目中包含Servlet代碼,則servlet的字節碼必須存放在的當前應用所在子目錄/WEB-INF/classes下。
- /WEB-INF/目錄中的資源不能被瀏覽器直接訪問。
- 項目目錄下的各個文件夾及特殊文件的名稱及其大小寫都是Java EE規范規定好的,固定死的。
7.2、實際操作1
假設 web項目文件夾(myweb) 里有 一個html文件hello.html 和 一個圖片文件car1.jpg,將
myweb文件夾放在...\tomcat-9\webapps\ 下,啟動tomcat,然后
- 在瀏覽器里訪問 http://localhost:8080/myweb/hello.html 就可以加載該html文件;
- 在瀏覽器里訪問 http://localhost:8080/myweb/car1.jpg就可以訪問該圖片,右擊可以下載圖片到本地。
7.3、實際操作2

- 在瀏覽器里訪問 http://localhost:8080/myweb/ 就可以直接加載hello.html文件;
- <welcome-file-list>歡迎文件列表,表示默認訪問的“資源文件”(hello.html和car1.jpg都是資源文件)。
- xml文件是一種文本文件,里面放的都是標簽,是W3C制定的一種規范。xml(可擴展標記語言)是html的擴展。
8、War包的使用
由於項目的開發一般是在本地進行的,項目的規模可能比較大(文件比較大),這就需要對項目文件夾進行壓縮,War包因此而生。
它不僅是對文件夾的一種壓縮,而且是一個可執行文件,將其放到服務器的webapps目錄下可以自動解壓、部署。
注:war包被自動解壓部署后最好將其刪除,否則每次啟動tomcat都會將其解壓一次,浪費時間。
這是將web.war放置在webapps下第一次啟動Tomcat時啟動信息
在沒有刪除web.war時第二次啟動Tomcat時的啟動信息
9、War包的生成
- 生成war文件,需要在cmd下切換(cd)到項目的根目錄(cd D:\Tomcat-9\webapps\myweb),再使用命令:jar -cvf d:\abc\web1.war .
- cvf是命令參數,表示生成一個文檔、顯示生成過程、指定生成的文件名。
- d:\abc\web1.war為生成的文檔的存放路徑 及 文件名。
- 最后一個點號表示要將當前目錄(項目的根目錄)中所有內容進行打包。當然也可以將war包直接打包到當前目錄:jar -cvf web1.war .
- 生成war包還有一種簡單的方法,那就是在eclipse中直接生成war,操作也非常簡單,選中項目名稱,右擊->Export->WAR file,在彈出的窗口中進行設置輸出路徑即可。
9.1、War包其他功能及解釋
- 查看web1.war中都有哪些文件,可以使用命令:jar -tf web1.war
- 直接解壓web1.war文件,可以使用命令:jar -xvf web1.war
- 另外,也可使用winrar軟件選擇zip壓縮方式,並將壓縮文件后綴名改為war即可壓縮生成war文件;同樣使用winrar軟件可以強行打開war文件,或者強行解壓war文件
- 使用jar命令與winrar軟件的區別在於前者在壓縮文件的同時會生成MetaINF文件夾,內包含MANIFEST.MF文件。
9.2、何時使用war或者jar文件
當你的項目在沒有完全竣工的時候,不適合使用war文件,因為你的類會由於調試之類的經常改,這樣來回刪除、創建war文件很不爽,
最好是你的項目已經完成了,不改了,那么就打個war包吧
,這個時候一個war文件就相當於一個web應用程序鳥;而jar文件就是把類和一些相關的資源封裝到一個包中,便於程序中引用。
10、在Eclipse中創建一個Web項目
具體創建過程可以參考第6節。需要注意的有以下幾點:
- Eclipse運行Web項目時,啟動的是Tomcat的副本,而在計算機上安裝的Tomcat是沒有啟動的,此時在瀏覽器中是訪問不到http://localhost:8080/myweb/的
- Eclipse運行Web項目時,項目文件是放置在#Workspace#\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps里的,而不是放在Tomcat的安裝目錄下。項目在Eclipse中編譯完成后可以打成War包放在Tomcat的文件夾webapps下使用。
11、Tomcat核心
11.1、Service.xml內容解析

- autoDeploy=“true”表示在服務器運行的狀態下,將一個war放入當前目錄中,Tomcat會將其自動發布(部署)到服務器上,這使得在服務器不必重啟的情況下可以自動加載新的項目。
11.2、Tomcat的核心配置
Tomcat的核心配置都集中在Tomcat安裝目錄的conf\server.xml文件中,其核心結構如下圖所示。

- Server是服務器,一個服務器里可以包含多個服務(Service),Service提供的服務確切得說是服務引擎(Engine)提供的,Engine可以包含多個虛擬主機,默認包含本機localhost。localhost可以包含多個應用Context。
12、虛擬目錄的創建
12.1、方法一:配置service.xml文件。
只需在<Host/>標簽中添加一個子標簽<Context/>即可。

- 訪問時只需在瀏覽器的地址欄里輸入http://localhost:8080/myprimary 即可訪問位於d:/02-primary下的網頁
- 缺點:配置完成后需要重啟Tomcat。對於大型的網站,重啟服務器會造成大量經濟損失,所以不建議采用。
12.2、方法二:在主機目錄中添加配置。

- 可在localhost目錄下創建一個ooo.xml文件,在文件中輸入
- 訪問時只需在瀏覽器的地址欄里輸入http://localhost:8080/ooo 即可訪問位於d:/course/myweb2下的網頁。
- 這種方法不用重啟Tomcat,在創建ooo.xml文件時Tomcat會自動部署該文件,如下圖所示。
13、虛擬主機的創建
- 打開conf目錄下的server.xml文件,在</Engine>標簽之前添加:

- name代表虛擬主機的域名,
- appBase表示該域名下的應用(項目/網頁)所存放的目錄。如果使用絕對路徑,則可以將目錄設置在任意位置,默認位置是在Tomcat的安裝目錄下。
-
由於修改的server.xml文件,所以要重啟服務器。
- 打開C:\Windows\System32\drivers\etc\hosts文件,在最后一行加入:

然后在瀏覽器中輸入
http://mynewhost:8080/myweb/即可訪問。
- 瀏覽器會先對本機上hosts文件進行DNS解析,如果沒有找到,則去網絡服務商(聯通、電信)公司提供的DNS服務器上尋找該域名,如果還沒有找到則會去更高級的DNS服務器上尋找,知道找到該域名為止;如果找不到,則瀏覽器會提示“域名解析錯誤"
- 由於hosts文件將IP:127.0.0.1映射為多個域名,所以當使用IP訪問http://127.0.0.1:8080/myweb/回訪問誰呢?
- 瀏覽器默認訪問localhost下的應用,這在server.xml文件中有相關配置
- 如果將localhost改為mynewhost,則使用IP訪問時瀏覽器將默認方位mynewhost下的應用。
14、修改默認端口號

15、配置默認應用
設置之后,輸入
http://localhost可以直接訪問自己開發的應用,而不是tomcat的默認界面。
修改應用目錄名稱

- 每一個虛擬主機都有一個默認的應用,它放在ROOT目錄里面。
- 要想使自己開發的應用稱為默認應用,只需將其根目錄的名稱改為ROOT。
- 對於非默認的虛擬主機,例如上面的mynewhost,其應用的存放目錄在tomcat的安裝目錄下。若要配置mynewhost的默認應用,只需將D:\Tomcat-9\mywebapps下的某一應用改為ROOT
16、MangerApp的使用
后期的開發過程中,會有很多的應用(有些名稱會很長),如果在地址欄里一個一個輸入很讓人很手忙腳亂。tomcat為我們提供了Manger APP(應用管理器),它能幫我們把主機中所有的應用都列出來,只需要我們點擊該鏈接就可以了。

- 初次使用時,點擊上圖的"Manger APP",會彈出一個對話框,提示我們輸入用戶名和密碼
-
- 此時我們是沒有用戶名和密碼的,我們先點擊"取消",會彈出如下界面:
- 我們按照提示檢查位於D:\Tomcat-9\conf\下的tomcat-users.xml文件,在空白處寫入提示的內容(格式)
- 其中rolename代表該用戶的身份,username即用戶名,password即對應的密碼。roles可以對應多個身份,比如:
- <user username="tomcat" password="111111" roles="manager-script,manager-jmx,manager-status"/>
- 4個rolename的具體解釋(參考自https://blog.csdn.net/jinguangliu/article/details/45950279)
- manager-gui: 允許訪問HTML GUI和狀態頁
- manager-script: 允許訪問文本接口和狀態頁
- manager-jmx: 允許訪問JMX代理和狀態頁
- manager-status: 僅允許訪問狀態頁
- 修改好username和password之后,保存該tomcat-users.xml文件,再次利用賬號密碼登陸,可以看到如下界面
- 注意:對於非默認的虛擬主機,只需將D:\Tomcat-9\webapps\manager拷貝到對應的存放目錄下,然后在地址欄中輸入http://mynewhost:8080/manager,然后在彈出的對話框中輸入剛剛設置好的賬號和密碼就可以管理該虛擬目錄下的應用。