1. 簡介
1.1 什么是Web服務器
Web服務器是一個應用程序(軟件),對HTTP協議的操作進行封裝,使得程序員不必直接對協議進行操作,讓Web開發更加便捷。主要功能是"提供網上信息瀏覽服務"。
Web服務器是安裝在服務器端的一款軟件,將來我們把自己寫的Web項目部署到Web Tomcat服務器軟件中,當Web服務器軟件啟動后,部署在Web服務器軟件中的頁面就可以直接通過瀏覽器來訪問了。
1.2 Web服務器軟件使用步驟
- 準備靜態資源。
- 下載安裝Web服務器軟件。
- 將靜態資源部署到Web服務器上。
- 啟動Web服務器使用瀏覽器訪問對應的資源。
上述內容在演示的時候,使用的是Apache下的Tomcat軟件,至于Tomcat軟件如何使用,后面會詳細的講到。而對于Web服務器來說,實現的方案有很多,Tomcat只是其中的一種,而除了Tomcat以外,還有很多優秀的Web服務器,比如:
1.3 認識Tomcat
- Tomcat是Apache軟件基金會一個核心項目,是一個開源免費的輕量級Web服務器,支持Servlet/JSP少量JavaEE規范。
- 概念中提到了JavaEE規范,那什么又是JavaEE規范呢?
JavaEE:Java Enterprise Edition,Java企業版。指Java企業級開發的技術規范總和。包含13項技術規范:JDBC、JNDI、EJB、RMI、JSP、Servlet、XML、JMS、Java IDL、JTS、JTA、JavaMail、JAF。 - 因為Tomcat支持Servlet/JSP規范,所以Tomcat也被稱為Web容器、Servlet容器。Servlet需要依賴Tomcat才能運行。
- Tomcat的官網:從官網上可以下載對應的版本進行使用。
Tomcat的LOGO
1.4 總結
- Web服務器的作用:
- 封裝HTTP協議操作,簡化開發。
- 可以將Web項目部署到服務器中,對外提供網上瀏覽服務。
- Tomcat是一個輕量級的Web服務器,支持Servlet/JSP少量JavaEE規范,也稱為Web容器,Servlet容器。
2. 基本使用
2.1 下載
直接從官網下載
右邊往下滑
2.2 安裝
Tomcat是一個綠色版軟件,直接解壓即可
- 自己選擇磁盤目錄目,將Tomcat軟件安裝包(我這里選擇的是11.0.9版本)進行解壓縮,會得到一個
apache-tomcat-11.0.9
的目錄,Tomcat就已經安裝成功。
注意,Tomcat在解壓縮的時候,解壓所在的目錄可以任意,但最好解壓到一個不包含中文和空格的目錄,因為后期在部署項目的時候,如果路徑有中文或者空格可能會導致程序部署失敗。 - 打開
apache-tomcat-11.0.9
目錄就能看到如下目錄結構,每個目錄中包含的內容需要認識下:
bin:目錄下有兩類文件,一種是以.bat
結尾的,是Windows系統的可執行文件,一種是以.sh
結尾的,是Linux系統的可執行文件。
webapps:就是以后項目部署的目錄,當發布Web應用時,默認情況下會將Web應用的文件存放于此目錄中。
work:Tomcat把由JSP生成的Servlet放于此目錄下。
Tomcat是用Java語言編寫的,所以依賴的都是些jar包。
到此,Tomcat的安裝就已經完成。
2.3 卸載
卸載比較簡單,可以直接刪除目錄即可。
2.4 啟動
在apache-tomcat-11.0.9\bin目錄下找到startup.bat
,雙擊就會啟動Tomcat。
啟動后,通過瀏覽器訪問 http://localhost:8080
能看到Apache Tomcat的內容就說明Tomcat已經啟動成功。
注意: 啟動的過程中,控制臺有中文亂碼,這是因為Tomcat輸出的日志信息是UTF-8編碼,而我們Windows控制臺是GBK的編碼,所以控制臺輸出會產生亂碼,需要修改 apache-tomcat-11.0.9\conf 目錄下的 logging.prooperties 文件中的參數:
把java.util.logging.ConsoleHandler.encoding = UTF-8 中的 UTF-8 改為 GBK。
2.5 關閉
關閉有三種方式:
- 直接x掉運行窗口:強制關閉(不建議)
- 運行apache-tomcat-11.0.9\bin目錄下的
shutdown.bat
:正常關閉 - 直接在運行窗口中按ctrl+c:正常關閉
將來在正常關閉的情況下,可以執行一些資源釋放的邏輯性處理,如果是強制關閉,這些方法就執行不了了。
2.6 配置
修改端口
- Tomcat默認的端口是8080,要想修改Tomcat啟動的端口號,需要修改 conf/server.xml 中如下圖中的port的參數。
注:如果將Tomcat端口號改為80,則將來訪問Tomcat時,將不用輸入端口號,即輸入
localhost
即可,與localhost:80
效果一樣。因為HTTP協議默認端口號為80,即使不寫端口號,也默認端口號為80。
啟動時可能出現的錯誤
- Tomcat的端口號取值范圍是0-65535之間任意未被占用的端口,如果設置的端口號被占用,啟動的時候就會包如下的錯誤:
出現這樣的錯誤后,我們只需找到對應的應用程序,將其關掉,再啟動Tomcat就可以了。 - Tomcat啟動的時候,啟動窗口一閃而過:需要檢查JAVA_HOME環境變量是否正確配置。
因為Tomcat是由Java語言編寫的,如果要運行Tomcat就需要當前電腦有JDK環境,去尋找JAVA_HOME安裝目錄,如果JAVA_HOME未正確配置,就找不到當前電腦中的JDK。
2.7 部署
-
Tomcat部署項目:
- 將項目放置到webapps目錄下,即部署完成。這里我有一個示例項目:
其中有如下文件
直接將hello文件夾放置到webapps目錄下,就部署成功了。
- 通過瀏覽器訪問
http://localhost:端口號/hello/a.html
(端口號默認為8080,如果端口號設置為80則可以把:80
省略),能看到下面的內容就說明項目已經部署成功。
但是呢隨著項目的增大,項目中的資源也會越來越多,項目在拷貝的過程中也會越來越費時間,該如何解決呢?
- 將項目放置到webapps目錄下,即部署完成。這里我有一個示例項目:
-
一般JavaWeb項目會被打包成war包,然后將war包放到Webapps目錄下,Tomcat會自動解壓縮war文件,這里我有一個haha.war包:
- 將haha.war包拷貝到webapps目錄下。
- Tomcat檢測到war包后會自動完成解壓縮,在webapps目錄下就會多一個haha目錄。
- 通過瀏覽器訪問
http://localhost:端口號/haha/a.html
,(端口號默認為8080,如果端口號設置為80則可以把:80
省略),能看到下面的內容就說明項目已經部署成功。
3. Maven創建Web項目
介紹完Tomcat的基本使用后,我們來學習在IDEA中如何創建Maven Web項目,學習這種方式的原因是以后Tomcat中運行的絕大多數都是Web項目,而使用Maven工具能更加簡單快捷的把Web項目給創建出來,所以Maven的Web項目具體如何來構建呢?想要了解普通Java項目是如何構建Web項目的見:Java創建Web項目
在真正創建Maven Web項目之前,我們先要知道Web項目長什么樣子,具體的結構是什么?
3.1 Web項目結構
Web項目的結構分為:開發中的項目和開發完可以部署的Web項目,這兩種項目的結構是不一樣的,我們一個個來介紹下:
- Maven Web項目結構:開發中的項目
Maven Web的項目與之前Maven Java的項目區別就是多了webapp目錄,這是Web項目特有的目錄,這個目錄下放了一些對應Web的資源。這些目錄下的文件將來就可以對外提供服務,別人就可以訪問到了。
Web項目在pom文件中打包方式設置為war包的方式:
- 開發完成部署的Web項目
其實就是把webapp目錄下的資源
- 開發項目通過執行Maven打包命令package,打包完的war包就放在target目錄下,可以將獲取到war包部署到的Tomcat的webapps目錄下,就可以來運行了。
- 編譯后的Java字節碼文件和resources的資源文件,會被放到WEB-INF下的classes目錄下。
- pom.xml中依賴坐標對應的jar包,會被放入WEB-INF下的lib目錄下。
3.2 創建Maven Web項目
介紹完Maven Web的項目結構后,接下來使用Maven來創建Web項目,創建方式有兩種:使用骨架和不使用骨架。
3.2.1 使用骨架
具體的步驟包含:
- 創建Maven項目。
- 選擇使用Web項目骨架。
- 輸入Maven項目坐標創建項目。
- 確認Maven相關的配置信息后,完成項目創建。
- 刪除pom.xml中多余內容。
- 補齊Maven Web項目缺失的目錄結構。
- 創建Maven項目
- 選擇使用Web項目骨架
- 輸入Maven項目坐標創建項目
- 確認Maven相關的配置信息后,完成項目創建
- 刪除pom.xml中多余內容,只留下面的這些內容,注意打包方式 jar和war的區別
- 補齊Maven Web項目缺失的目錄結構,默認沒有java和resources目錄,需要手動完成創建補齊(右擊main -> New -> Directory -> 快捷選擇java或resources創建):
最終的目錄結果如下
3.2.2 不使用骨架
具體的步驟包含:
- 創建Maven項目。
- 選擇不使用Web項目骨架。
- 輸入Maven項目坐標創建項目。
- 在pom.xml設置打包方式為war。
- 補齊Maven Web項目缺失webapp的目錄結構。
- 補齊Maven Web項目缺失WEB-INF/web.xml的目錄結構。
- 創建Maven項目
- 選擇不使用Web項目骨架
- 輸入Maven項目坐標創建項目
- 在pom.xml設置打包方式為war,默認是不寫,代表打包方式為jar
- 補齊Maven Web項目缺失的Web資源目錄webapp的目錄結構
- 補齊Maven Web項目缺失WEB-INF/web.xml的目錄結構,如果補齊目錄結構WEB-INF/web.xml時路徑寫錯了,可以直接把補齊的目錄結構WEB-INF/web.xml手動拖到webapp下
- 補充完后,最終的項目結構如下:
上述兩種方式,創建的web項目,都不是很全,需要手動補充內容,至于最終采用哪種方式來創建Maven Web項目,都是可以的,根據各自的喜好來選擇使用即可。
4. IDEA使用Tomcat
Maven Web項目創建成功后,通過Maven的package命令可以將項目打包成war包,將war文件拷貝到Tomcat的webapps目錄下,啟動Tomcat就可以將項目部署成功,然后通過瀏覽器進行訪問即可。
然而我們在開發的過程中,項目中的內容會經常發生變化,如果按照上面這種方式來部署測試,是非常不方便的。
如何在IDEA中能快速使用Tomcat呢?
在IDEA中集成使用Tomcat有兩種方式,分別是集成本地Tomcat和Tomcat Maven插件
4.1 集成本地Tomcat
將本地安裝好的Tomcat集成到IDEA中,完成項目部署,具體的實現步驟:
-
打開添加本地Tomcat的面板
-
指定本地Tomcat的安裝路徑
-
修改Tomcat的名稱,此步驟可以不改,只是讓名字看起來更有意義,HTTP port中的端口也可以進行修改,比如把8080改成80
-
將開發項目部署項目到Tomcat中
擴展內容:xxx.war 和 xxx.war exploded這兩種部署項目模式的區別?- war模式是將WEB工程打成war包,把war包發布到Tomcat服務器上。
- war exploded模式是將WEB工程以當前文件夾的位置關系發布到Tomcat服務器上。
- war模式部署成功后,Tomcat的webapps目錄下會有部署的項目內容。
- war exploded模式部署成功后,Tomcat的webapps目錄下沒有,而使用的是項目的target目錄下的內容進行部署。
- 建議大家都選war模式進行部署,更符合項目部署的實際情況。
-
部署成功后,就可以啟動項目,為了能更好的看到啟動的效果,可以在webapp目錄下添加a.html頁面
點擊啟動Tomcat
-
啟動成功后,可以通過瀏覽器進行訪問測試
IDEA打開瀏覽器,訪問的是當前這個項目的根目錄
要想訪問里面的資源,比如剛剛添加的html頁面,直接在后面輸入a.html -> 回車
-
最終的注意事項
若想修改項目最終訪問地址,點擊Deployment,在下面Application context中修改
4.2 Tomcat Maven插件
在IDEA中使用本地Tomcat進行項目部署,相對來說步驟比較繁瑣,所以我們需要一種更簡便的方式來替換它,那就是直接使用Maven中的Tomcat插件來部署項目,具體的實現步驟,只需要兩步,分別是:
- 在pom.xml中添加Tomcat插件的依賴坐標,坐標添加完成后,就相當與在Maven項目中集成了一個內置的Tomcat。
(可在pom.xml文件中按Alt+Insert -> 選擇Plugin Template 快捷創建插件模板,然后填寫坐標)
- 使用Maven Helper插件快速啟動項目,選中項目,右鍵 -> Run Maven -> tomcat7:run。
注意:
- 如果選中項目并右鍵點擊后,看不到Run Maven和Debug Maven,這個時候就需要在IDEA中下載Maven Helper插件,具體的操作方式為: File -> Settings -> Plugins -> 搜索Maven Helper -> Install,安裝完后按照提示重啟IDEA,就可以看到了。
- Maven Tomcat插件目前只有Tomcat7版本,沒有更高的版本可以使用。
- 使用Maven Tomcat插件,如果要想修改Tomcat的端口和訪問路徑,可以直接修改pom.xml,如下:
<build><plugins><!--Tomcat插件 --><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><configuration><port>8080</port><!--訪問端口號 --><!--項目訪問路徑未配置訪問路徑: http://localhost:8080/tomcat-demo2/a.html配置/后訪問路徑: http://localhost:8080/a.html如果配置成 /hello,訪問路徑會變成什么?答案: http://localhost:80/hello/a.html--><path>/</path></configuration></plugin></plugins>
</build>