Web服務器(Tomcat、項目部署)

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 總結

  1. Web服務器的作用:
    • 封裝HTTP協議操作,簡化開發。
    • 可以將Web項目部署到服務器中,對外提供網上瀏覽服務。
  2. 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省略),能看到下面的內容就說明項目已經部署成功。
      在這里插入圖片描述
      但是呢隨著項目的增大,項目中的資源也會越來越多,項目在拷貝的過程中也會越來越費時間,該如何解決呢?
  • 一般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 使用骨架

具體的步驟包含:

  1. 創建Maven項目。
  2. 選擇使用Web項目骨架。
  3. 輸入Maven項目坐標創建項目。
  4. 確認Maven相關的配置信息后,完成項目創建。
  5. 刪除pom.xml中多余內容。
  6. 補齊Maven Web項目缺失的目錄結構。
  1. 創建Maven項目
    在這里插入圖片描述
  2. 選擇使用Web項目骨架
    在這里插入圖片描述
  3. 輸入Maven項目坐標創建項目
    在這里插入圖片描述
  4. 確認Maven相關的配置信息后,完成項目創建
    在這里插入圖片描述
  5. 刪除pom.xml中多余內容,只留下面的這些內容,注意打包方式 jar和war的區別
    在這里插入圖片描述
  6. 補齊Maven Web項目缺失的目錄結構,默認沒有java和resources目錄,需要手動完成創建補齊(右擊main -> New -> Directory -> 快捷選擇java或resources創建):
    在這里插入圖片描述
    最終的目錄結果如下
    在這里插入圖片描述

3.2.2 不使用骨架

具體的步驟包含:

  1. 創建Maven項目。
  2. 選擇不使用Web項目骨架。
  3. 輸入Maven項目坐標創建項目。
  4. 在pom.xml設置打包方式為war。
  5. 補齊Maven Web項目缺失webapp的目錄結構。
  6. 補齊Maven Web項目缺失WEB-INF/web.xml的目錄結構。
  1. 創建Maven項目
    在這里插入圖片描述
  2. 選擇不使用Web項目骨架
    在這里插入圖片描述
  3. 輸入Maven項目坐標創建項目
    在這里插入圖片描述
  4. 在pom.xml設置打包方式為war,默認是不寫,代表打包方式為jar
    在這里插入圖片描述
  5. 補齊Maven Web項目缺失的Web資源目錄webapp的目錄結構
    在這里插入圖片描述
  6. 補齊Maven Web項目缺失WEB-INF/web.xml的目錄結構,如果補齊目錄結構WEB-INF/web.xml時路徑寫錯了,可以直接把補齊的目錄結構WEB-INF/web.xml手動拖到webapp下
    在這里插入圖片描述
  7. 補充完后,最終的項目結構如下:
    在這里插入圖片描述

上述兩種方式,創建的web項目,都不是很全,需要手動補充內容,至于最終采用哪種方式來創建Maven Web項目,都是可以的,根據各自的喜好來選擇使用即可。

4. IDEA使用Tomcat

Maven Web項目創建成功后,通過Maven的package命令可以將項目打包成war包,將war文件拷貝到Tomcat的webapps目錄下,啟動Tomcat就可以將項目部署成功,然后通過瀏覽器進行訪問即可。

然而我們在開發的過程中,項目中的內容會經常發生變化,如果按照上面這種方式來部署測試,是非常不方便的。

如何在IDEA中能快速使用Tomcat呢?

在IDEA中集成使用Tomcat有兩種方式,分別是集成本地TomcatTomcat Maven插件

4.1 集成本地Tomcat

將本地安裝好的Tomcat集成到IDEA中,完成項目部署,具體的實現步驟:

  1. 打開添加本地Tomcat的面板
    在這里插入圖片描述

  2. 指定本地Tomcat的安裝路徑
    在這里插入圖片描述

  3. 修改Tomcat的名稱,此步驟可以不改,只是讓名字看起來更有意義,HTTP port中的端口也可以進行修改,比如把8080改成80

  4. 將開發項目部署項目到Tomcat中
    在這里插入圖片描述
    擴展內容:xxx.war 和 xxx.war exploded這兩種部署項目模式的區別?

    • war模式是將WEB工程打成war包,把war包發布到Tomcat服務器上。
    • war exploded模式是將WEB工程以當前文件夾的位置關系發布到Tomcat服務器上。
    • war模式部署成功后,Tomcat的webapps目錄下會有部署的項目內容。
    • war exploded模式部署成功后,Tomcat的webapps目錄下沒有,而使用的是項目的target目錄下的內容進行部署。
    • 建議大家都選war模式進行部署,更符合項目部署的實際情況。
  5. 部署成功后,就可以啟動項目,為了能更好的看到啟動的效果,可以在webapp目錄下添加a.html頁面
    在這里插入圖片描述
    點擊啟動Tomcat
    在這里插入圖片描述

  6. 啟動成功后,可以通過瀏覽器進行訪問測試
    IDEA打開瀏覽器,訪問的是當前這個項目的根目錄
    在這里插入圖片描述
    要想訪問里面的資源,比如剛剛添加的html頁面,直接在后面輸入a.html -> 回車
    在這里插入圖片描述

  7. 最終的注意事項
    在這里插入圖片描述
    若想修改項目最終訪問地址,點擊Deployment,在下面Application context中修改
    在這里插入圖片描述

4.2 Tomcat Maven插件

在IDEA中使用本地Tomcat進行項目部署,相對來說步驟比較繁瑣,所以我們需要一種更簡便的方式來替換它,那就是直接使用Maven中的Tomcat插件來部署項目,具體的實現步驟,只需要兩步,分別是:

  1. 在pom.xml中添加Tomcat插件的依賴坐標,坐標添加完成后,就相當與在Maven項目中集成了一個內置的Tomcat。
    (可在pom.xml文件中按Alt+Insert -> 選擇Plugin Template 快捷創建插件模板,然后填寫坐標)
    在這里插入圖片描述
    在這里插入圖片描述
  2. 使用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>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/916204.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/916204.shtml
英文地址,請注明出處:http://en.pswp.cn/news/916204.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

list 介紹 及 底層

list的相關文檔&#xff1a;list - C Reference 一、list的介紹及使用 list中的接口比較多&#xff0c;此處類似&#xff0c;只需要掌握如何正確的使用&#xff0c;然后再去深入研究背后的原理&#xff0c;已達到可擴展的能力。以下為list中一些常見的重要接口。我們庫里的list…

HCIP MGRE實驗

一、實驗要求 1、R5為ISP&#xff0c;只能進行IP地址配置&#xff0c;其所有地址均配為公有Ip地址; 2、 R1和R5間使用PPP的PAP認證&#xff0c;R5為主認證方&#xff1b; R2與R5之間使用PPP的CHAP認證&#xff0c;R5為主認證方; R3與R5之間使用HDLC封裝; 3、R2、R3構建一…

基于PyTorch的多視角二維流場切片三維流場預測模型

基于PyTorch的多視角二維流場切片三維流場預測模型 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家&#xff0c;覺得好請收藏。點擊跳轉到網站。 1. 引言 計算流體動力學(CFD)在工程設計和科學研究中扮演…

全新輕量化PHP網盤搜索引擎系統源碼

內容目錄一、詳細介紹二、效果展示1.部分代碼2.效果圖展示三、學習資料下載一、詳細介紹 全新輕量化PHP網盤搜索引擎系統源碼 基于PHPMYSQL開發 一、多樣篩選功能&#xff1a;網站支持5類篩選功能&#xff0c;包括默認搜索、網盤類型、文件大小、時間排序以及網盤來源&#x…

C study notes[3]

文章目錄operatonsloopsreferencesoperatons the fundamental operators such as ,-,* in C language can be simply manipulated. int sum 5 3; // sum 8 int difference 10 - 4; // difference 6 int product 6 * 7; // product 42the operator / was left to in…

練習實踐-基礎設施-文件共享-windows和linux之間的文件共享-smb服務搭建

參考來源&#xff1a; 在線書籍-linux就該這么學-第12章 安裝軟件包 配置文件/etc/samba/smb.conf 運維對待配置文件的態度&#xff0c;非必要不增加 安裝完畢后打開Samba服務程序的主配置文件&#xff0c;好在參數并不多&#xff0c;只有37行。其中第17&#xff5e;22行代…

常用設計模式系列(十三)—組合模式

常用設計模式系列&#xff08;十三&#xff09;—組合模式 第一節 前言 hello大家好&#xff0c;今年已經過去了一半&#xff0c;年初立下的flag&#xff0c;不知道實現了沒有&#xff0c;你的flag改了多少次&#xff1f;無論自己的愿望是否完成&#xff0c;我們都應該懷揣著追…

字節碼操作工具——ByteBuddy應用(3)安全檢查

一、檢測方法名是否符合規范1、代碼&#xff08;1&#xff09;MethodLoggerAgentpackage com.example.agent;import net.bytebuddy.agent.builder.AgentBuilder; import net.bytebuddy.asm.Advice; import net.bytebuddy.matcher.ElementMatchers;import java.lang.instrument.…

NineData 數據庫 DevOps 全面支持 GaussDB,國產化管理再升級!

NineData 數據庫 DevOps 平臺現已全面兼容 GaussDB 全線產品&#xff08;包括 GaussDB 企業級、DWS 數據倉庫、openGauss 開源版&#xff09;&#xff0c;實現一站式管理。無論 GaussDB 實例部署在哪個環境&#xff0c;企業所有開發者都可以通過 NineData 統一訪問&#xff0c;…

C++ - 模板進階

一、非類型模板參數模板參數 分為 類型形參與 非類型形參。 類型形參&#xff1a;出現在模板參數列表中&#xff0c;跟在 class 或者 typename 之類的參數類型名稱。 非類型形參&#xff0c;就是用一個常量作為類(函數)模板的一個參數&#xff0c;在類(函數)模板中可將該參數…

【質量管理】軟件缺陷管理實施方案(專業版)

引言 方案目標與范圍 本方案以CMMI量化管理要求與ISO 9000質量體系為框架,核心目標是通過標準化缺陷管理流程實現缺陷全生命周期可控。具體包括:確保軟件缺陷在全生命周期中被及時發現與修復,減少其對軟件質量、發布計劃及用戶體驗的負面影響;以“零缺陷”為首要目標,針對…

Elasticsearch 講解及 Java 應用實戰:從入門到落地

在數據量爆炸的今天&#xff0c;傳統數據庫的查詢能力越來越難以滿足復雜的檢索需求。比如電商平臺的商品搜索&#xff0c;需要支持關鍵詞模糊匹配、多條件篩選、熱門度排序等功能&#xff0c;這時候 Elasticsearch&#xff08;簡稱 ES&#xff09;就成了最佳選擇。作為一款分布…

docker pull weaviate 國內拉取失敗的問題

我是校內網&#xff0c;嘗試了 改鏡像源 (cooragent) ruiyCJQ:~/sdb/B/cooragent$ sudo vim /etc/docker/daemon.json [sudo] password for ruiy: (cooragent) ruiyCJQ:~/sdb/B/cooragent$ sudo service docker restart (cooragent) ruiyCJQ:~/sdb/B/cooragent$ sudo docke…

Vue項目使用Univer Sheets

Univer Excel主頁鏈接&#xff1a;安裝步驟 1. 安裝 使用預設模式的包管理器安裝 - 預設模式&#xff1a;可以理解為開包即用的模式&#xff0c;省去很多配置&#xff0c;當然自由度不如插件模式 pnpm add univerjs/presets univerjs/preset-sheets-core2. 前端代碼 <te…

Python day24

浙大疏錦行 python day24 內容&#xff1a; 元組&#xff1a;類比于列表&#xff0c;不過元組的元素不能被修改&#xff0c;顯示也是從[]改為了()&#xff0c;其余操作則是和列表類似&#xff0c;且元組是有序的可迭代對象&#xff1a;即可以使用迭代器訪問的對象&#xff0c…

Three.js 動畫系統入門:Tween.js 與 AnimationMixer 的使用

引言 動畫是 Three.js 中增強 3D 場景動態效果的核心技術&#xff0c;能夠為用戶帶來沉浸式體驗。Three.js 支持通過 Tween.js 實現簡單的屬性動畫&#xff0c;以及通過 AnimationMixer 處理復雜的混合動畫和骨骼動畫。本文將深入探討如何使用 Tween.js 控制 Object3D 的屬性動…

裝修進度管理系統功能對比:主流工具9選

本文分享了9款常用的裝修進度管理軟件&#xff0c;包括&#xff1a;1.Worktile&#xff1b;2.中望軟件&#xff1b;3.三維家&#xff1b;4.Procore&#xff1b;5.易達裝修管理系統&#xff1b;6.裝修管家&#xff1b;7.Zoho Projects&#xff1b;8.中建君聯&#xff1b;9.一品裝…

深度學習篇---預訓練模型

在深度學習中&#xff0c;預訓練模型&#xff08;Pretrained Model&#xff09; 是提升開發效率和模型性能的 “利器”。無論是圖像識別、自然語言處理還是語音識別&#xff0c;預訓練模型都被廣泛使用。下面從概念、使用原因、場景、作用等方面詳細介紹&#xff0c;并結合 Pyt…

Redis ①⑦-分布式鎖

分布式鎖 分布式鎖是鎖的一種&#xff0c;都是為了解決多線程/多進程環境下&#xff0c;對共享資源的訪問沖突問題。 不過&#xff0c;像 Java 的 synchronized 或者 C 的 mutex 這種鎖&#xff0c;都是進程內的鎖&#xff0c;而分布式鎖則是跨越進程/機器的鎖。也就是可以針對…

OpenCV-圖像預處理?【圖像顏色空間轉換、灰度化實驗、二值化處理、鏡像翻轉 和 仿射變換】

文章目錄先言一、圖像顏色空間轉換1.RGB顏色空間2.顏色加法3.顏色加權加法4.HSV顏色空間5.圖像轉換&#xff08;cvtColor()&#xff09;二、灰度實驗1.灰度圖2.圖像灰度化&#xff08;最大值法&#xff09;3.圖像灰度化&#xff08;平均值法&#xff09;4.圖像灰度化&#xff0…