最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

IDEA構(gòu)建JavaWeb項(xiàng)目并通過Tomcat成功運(yùn)行解讀

 更新時(shí)間:2026年03月25日 10:35:42   作者:雷神樂樂  
這篇文章主要介紹了IDEA構(gòu)建JavaWeb項(xiàng)目并通過Tomcat成功運(yùn)行方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

一、Tomcat簡(jiǎn)介

Web服務(wù)器通常由硬件和軟件共同構(gòu)成。

  • 硬件:電腦,提供服務(wù)供其它客戶電腦訪問
  • 軟件:電腦上安裝的服務(wù)器軟件,安裝后能提供服務(wù)給網(wǎng)絡(luò)中的其他計(jì)算機(jī),將本地文件映射成一個(gè)虛擬的url地址供網(wǎng)絡(luò)中的其他人訪問。

常見的JavaWeb服務(wù)器:

  • Tomcat(Apache):當(dāng)前應(yīng)用最廣的JavaWeb服務(wù)器
  • Jetty:更輕量級(jí)、更靈活的servlet容器
  • JBoss(Redhat紅帽):支持JavaEE,應(yīng)用比較廣EJB容器 –> SSH輕量級(jí)的框架代替
  • GlassFish(Orcale):Oracle開發(fā)JavaWeb服務(wù)器,應(yīng)用不是很廣
  • Resin(Caucho):支持JavaEE,應(yīng)用越來越廣
  • Weblogic(Orcale):要錢的!支持JavaEE,適合大型項(xiàng)目
  • Websphere(IBM):要錢的!支持JavaEE,適合大型項(xiàng)目

Tomcat是Apache 軟件基金會(huì)(Apache Software Foundation)的Jakarta 項(xiàng)目中的一個(gè)核心項(xiàng)目,由Apache、Sun 和其他一些公司及個(gè)人共同開發(fā)而成。最新的Servlet 和JSP 規(guī)范總是能在Tomcat 中得到體現(xiàn),因?yàn)門omcat 技術(shù)先進(jìn)、性能穩(wěn)定,而且免費(fèi),因而深受Java 愛好者的喜愛并得到了部分軟件開發(fā)商的認(rèn)可,成為目前比較流行的Web 應(yīng)用服務(wù)器。

Tomcat 版本和Servlet版本之間的對(duì)應(yīng)關(guān)系:

Servlet VersionTomcat VersionJDK Version
6.111.0.x17 and later
6.010.1.x11 and later
5.010.0.x (superseded)8 and later
4.09.0.x8 and later
3.18.5.x7 and later
3.18.0.x (superseded)7 and later
3.07.0.x (archived)6 and later (7 and later for WebSocket)

二、Tomcat安裝步驟

注意:安裝Tomcat之前要安裝JDK!

官網(wǎng):https://tomcat.apache.org/

1.選擇分支下載

進(jìn)入該網(wǎng)址:https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.34/bin/

2.點(diǎn)擊下載zip安裝包

3.解壓到?jīng)]有中文、

空格和特殊字符的目錄下

4.雙擊bin目錄下的startup.bat腳本啟動(dòng)Tomcat

會(huì)彈出一個(gè)Dos窗口,這個(gè)就是Tomcat服務(wù)器

如果你下載的Tomcat是10版本,Dos窗口打印的中文可能會(huì)有亂碼,解決方式如下:

Tomcat——config——logging.properties文件:修改編碼格式為GBK

5.瀏覽器訪問Tomcat

瀏覽器地址欄輸入:http://localhost:8080/

出現(xiàn)下面的頁(yè)面,就說明Tomcat服務(wù)器訪問成功。

6.關(guān)閉Tomcat服務(wù)器

8080端口只能被占用一次 重復(fù)啟動(dòng)時(shí) 會(huì)報(bào)錯(cuò) 端口占用 無法正常啟動(dòng)

關(guān)閉tomcat時(shí) 建議使用腳本關(guān)閉 主動(dòng)釋放端口 直接殺進(jìn)程 端口釋放不及時(shí) 有時(shí)候會(huì)卡主端口 長(zhǎng)時(shí)間不釋放

建議用腳本關(guān)閉

三、Tomcat目錄介紹

bin:該目錄下存放的是二進(jìn)制可執(zhí)行文件,如果是安裝版,那么這個(gè)目錄下會(huì)有兩個(gè)exe文件:tomcat8.exe、tomcat8w.exe,前者是在控制臺(tái)下啟動(dòng)Tomcat,后者是彈出GUI窗口啟動(dòng)Tomcat;如果是解壓版,那么會(huì)有startup.bat和shutdown.bat文件,startup.bat用來啟動(dòng)Tomcat,但需要先配置JAVA_HOME環(huán)境變量才能啟動(dòng),shutdown.bat用來停止Tomcat;

conf:這是一個(gè)非常非常重要的目錄,這個(gè)目錄下有四個(gè)最為重要的文件:

server.xml:配置整個(gè)服務(wù)器信息。例如修改端口號(hào)。默認(rèn)HTTP請(qǐng)求的端口號(hào)是:8080

修改啟動(dòng)端口號(hào):conf/server.xml

tomcat-users.xml:存儲(chǔ)tomcat用戶的文件,這里保存的是tomcat的用戶名及密碼,以及用戶的角色信息??梢园粗撐募械淖⑨屝畔⑻砑觮omcat用戶,然后就可以在Tomcat主頁(yè)中進(jìn)入Tomcat Manager頁(yè)面了;

<tomcat-users xmlns="http://tomcat.apache.org/xml"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
              version="1.0">	
	<role rolename="admin-gui"/>
	<role rolename="admin-script"/>
	<role rolename="manager-gui"/>
	<role rolename="manager-script"/>
	<role rolename="manager-jmx"/>
	<role rolename="manager-status"/>
	<user 	username="admin" 
			password="admin" 
			roles="admin-gui,admin-script,manager-gui,manager-script,manager-jmx,manager-status"
	/>
</tomcat-users>
  • web.xml:部署描述符文件,這個(gè)文件中注冊(cè)了很多MIME類型,即文檔類型。這些MIME類型是客戶端與服務(wù)器之間說明文檔類型的,如用戶請(qǐng)求一個(gè)html網(wǎng)頁(yè),那么服務(wù)器還會(huì)告訴客戶端瀏覽器響應(yīng)的文檔是text/html類型的,這就是一個(gè)MIME類型??蛻舳藶g覽器通過這個(gè)MIME類型就知道如何處理它了。當(dāng)然是在瀏覽器中顯示這個(gè)html文件了。但如果服務(wù)器響應(yīng)的是一個(gè)exe文件,那么瀏覽器就不可能顯示它,而是應(yīng)該彈出下載窗口才對(duì)。MIME就是用來說明文檔的內(nèi)容是什么類型的!
  • context.xml:對(duì)所有應(yīng)用的統(tǒng)一配置,通常我們不會(huì)去配置它。
  • lib:Tomcat的類庫(kù),里面是一大堆jar文件。如果需要添加Tomcat依賴的jar文件,可以把它放到這個(gè)目錄中,當(dāng)然也可以把應(yīng)用依賴的jar文件放到這個(gè)目錄中,這個(gè)目錄中的jar所有項(xiàng)目都可以共享之,但這樣你的應(yīng)用放到其他Tomcat下時(shí)就不能再共享這個(gè)目錄下的jar包了,所以建議只把Tomcat需要的jar包放到這個(gè)目錄下;
  • logs:這個(gè)目錄中都是日志文件,記錄了Tomcat啟動(dòng)和關(guān)閉的信息,如果啟動(dòng)Tomcat時(shí)有錯(cuò)誤,那么異常也會(huì)記錄在日志文件中。
  • temp:存放Tomcat的臨時(shí)文件,這個(gè)目錄下的東西可以在停止Tomcat后刪除!
  • webapps:存放web項(xiàng)目的目錄,其中每個(gè)文件夾都是一個(gè)項(xiàng)目;如果這個(gè)目錄下已經(jīng)存在了目錄,那么都是tomcat自帶的項(xiàng)目。其中ROOT是一個(gè)特殊的項(xiàng)目,在地址欄中訪問:http://127.0.0.1:8080,沒有給出項(xiàng)目目錄時(shí),對(duì)應(yīng)的就是ROOT項(xiàng)目。http://localhost:8080/examples,進(jìn)入示例項(xiàng)目。其中examples"就是項(xiàng)目名,即文件夾的名字。

項(xiàng)目的訪問路徑與項(xiàng)目的部署目錄可以不一致,可以在IDEA中配置:

  • work:運(yùn)行時(shí)生成的文件,最終運(yùn)行的文件都在這里。通過webapps中的項(xiàng)目生成的!可以把這個(gè)目錄下的內(nèi)容刪除,再次運(yùn)行時(shí)會(huì)生再次生成work目錄。當(dāng)客戶端用戶訪問一個(gè)JSP文件時(shí),Tomcat會(huì)通過JSP生成Java文件,然后再編譯Java文件生成class文件,生成的java和class文件都會(huì)存放到這個(gè)目錄下。
  • LICENSE:許可證。
  • NOTICE:說明文件。

四、WEB項(xiàng)目的標(biāo)準(zhǔn)結(jié)構(gòu)

一個(gè)標(biāo)準(zhǔn)的可以用于發(fā)布的WEB項(xiàng)目標(biāo)準(zhǔn)結(jié)構(gòu)如下:

app 本應(yīng)用根目錄

  • static 非必要目錄,約定俗成的名字,一般在此處放靜態(tài)資源 (css js img)

WEB-INF 必要目錄,必須叫WEB-INF,受保護(hù)的資源目錄,瀏覽器通過url不可以直接訪問的目錄

  • classes 必要目錄,src下源代碼,配置文件,編譯后會(huì)在該目錄下,web項(xiàng)目中如果沒有源碼,則該目錄不會(huì)出現(xiàn)
  • lib 必要目錄,項(xiàng)目依賴的jar編譯后會(huì)出現(xiàn)在該目錄下,web項(xiàng)目要是沒有依賴任何jar,則該目錄不會(huì)出現(xiàn)
  • web.xml 必要文件,web項(xiàng)目的基本配置文件。較新的版本中可以沒有該文件,但是學(xué)習(xí)過程中還是需要該文件

index.html 非必要文件,index.html/index.htm/index.jsp為默認(rèn)的歡迎頁(yè)

在tomcat的webapps目錄下新建app文件,具體文件結(jié)構(gòu)如下:

訪問login.html:

訪問regist.html:

訪問static/img/logo.jpg:

如果在WEB-INF目錄下放一張圖片,圖片無法訪問:

五、WEB項(xiàng)目部署的三種方式

(一)方式一——直接將編譯好的項(xiàng)目放在webapps目錄下

上面已經(jīng)演示過。

(二)方式二——war包放在webapps目錄下

將編譯好的項(xiàng)目打成war包放在webapps目錄下,tomcat啟動(dòng)后會(huì)自動(dòng)解壓war包(其實(shí)和第一種一樣)

  • 在tomcat的conf下創(chuàng)建Catalina/localhost目錄,并在該目錄下準(zhǔn)備一個(gè)app.xml文件

<!-- 
    path: 項(xiàng)目的訪問路徑,也是項(xiàng)目的上下文路徑,就是在瀏覽器中,輸入的項(xiàng)目名稱
    docBase: 項(xiàng)目在磁盤中的實(shí)際路徑
 -->
<Context path="/app" docBase="D:\mywebapps\app" />
  • 啟動(dòng)tomcat訪問測(cè)試即可

url的組成部分和項(xiàng)目中資源的對(duì)應(yīng)關(guān)系:

tomcat的webapps目錄默認(rèn)給我們提供了如下項(xiàng)目:

瀏覽器訪問項(xiàng)目名,有沒有輸入index.html都是默認(rèn)展示這一頁(yè)

ROOT項(xiàng)目比較特殊,它的部署目錄和訪問路徑不一致,訪問方式如下:

瀏覽器地址不需要寫ROOT:http://localhost:8080/index.jsp

(三)IDEA中開發(fā)并部署運(yùn)行WEB項(xiàng)目

IDEA可以配置多個(gè)Tomcat,點(diǎn)擊+號(hào)還可以繼續(xù)新增

六、IDEA中開發(fā)并部署運(yùn)行WEB項(xiàng)目

1.創(chuàng)建一個(gè)空項(xiàng)目或空模塊

2.配置Web Application

如果你的Tomcat版本是10以上,需要先做這一步:

再重新勾選Web Application,選擇5.0版本

3.搭建內(nèi)部框架

刪除index.jsp

Java代碼寫在src中,網(wǎng)頁(yè)代碼寫在web目錄下:

新增日程管理一期的login.html和regist.html到web下,新增static目錄,下面放多個(gè)目錄和文件

當(dāng)前項(xiàng)目的jar包必須放在WEB-INF下的lib目錄中

4.構(gòu)建項(xiàng)目

選擇要build的項(xiàng)目進(jìn)行Build

  • resources和src文件編譯后的文件,放在classes中;
  • web對(duì)應(yīng)demo01_web01_war_exploded,demo01_web01_war_exploded就是可以在Tomcat中發(fā)布的app;
  • static和WEB-INF對(duì)應(yīng)demo01_web01_war_exploded下的static和WEB-INF;

build部分的步驟也可以跳過,在這里配置完成后直接啟動(dòng)項(xiàng)目即可:

5.運(yùn)行Tomcat項(xiàng)目

6.瀏覽器訪問

停止服務(wù),刪除out文件,再重新啟動(dòng),瀏覽器輸入url,也可以成功訪問,IDEA會(huì)自動(dòng)進(jìn)行build

Catalina log亂碼問題解決:

Tomcat10以上版本可能會(huì)出現(xiàn)亂碼問題,修改config目錄下的logging.properties文件的編碼即可。

七、IDEA部署并運(yùn)行JavaWeb項(xiàng)目的原理

構(gòu)建好的項(xiàng)目并不會(huì)放在Tomcat安裝目錄的webapps中,防止污染本地安裝的Tomcat,而是放在Tomcat生成的副本中

Tomcat磁盤上的軟件按照Tomcat副本中的配置文件進(jìn)行運(yùn)行,這樣既不會(huì)污染本地安裝的Tomcat軟件,創(chuàng)建的副本也很小。

IDEA部署并運(yùn)行項(xiàng)目的原理

  • idea并沒有直接進(jìn)將編譯好的項(xiàng)目放入tomcat的webapps中

  • idea根據(jù)關(guān)聯(lián)的tomcat,創(chuàng)建了一個(gè)tomcat副本,將項(xiàng)目部署到了這個(gè)副本中

  • idea的tomcat副本在C:\Users\Administrator\AppData\Local\JetBrains\IntelliJIdea2022.2\tomcat\中

  • idea的tomcat副本并不是一個(gè)完整的tomcat,副本里只是準(zhǔn)備了和當(dāng)前項(xiàng)目相關(guān)的配置文件而已

  • idea啟動(dòng)tomcat時(shí),是讓本地tomcat程序按照tomcat副本里的配置文件運(yùn)行

  • idea的tomcat副本部署項(xiàng)目的模式是通過conf/Catalina/localhost/*.xml配置文件的形式實(shí)現(xiàn)項(xiàng)目部署的

C:\Users\Administrator\AppData\Local\JetBrains\IntelliJIdea2022.2\tomcat\35d71a34-4fc7-4686-917a-b4aca77b806a\conf\Catalina\localhost目錄下的*.xml文件:

<Context path="/web01" docBase="G:\develop\workspace\atguigujavaweb\one\basecode\out\artifacts\demo01_web01_war_exploded" />

八、Tomcat支持熱部署

當(dāng)想要修改代碼時(shí),不需要重啟Tomcat服務(wù),點(diǎn)擊熱部署按鈕即可。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 一文詳解Java過濾器攔截器實(shí)例逐步掌握

    一文詳解Java過濾器攔截器實(shí)例逐步掌握

    這篇文章主要為大家介紹了Java過濾器攔截器實(shí)例詳解逐步掌握,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • 基于Feign傳輸對(duì)象無法接收參數(shù)的問題

    基于Feign傳輸對(duì)象無法接收參數(shù)的問題

    這篇文章主要介紹了基于Feign傳輸對(duì)象無法接收參數(shù)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • SpringBoot?+?Redis如何解決重復(fù)提交問題(冪等)

    SpringBoot?+?Redis如何解決重復(fù)提交問題(冪等)

    在開發(fā)中,一個(gè)對(duì)外暴露的接口可能會(huì)面臨瞬間的大量重復(fù)請(qǐng)求,本文就介紹了SpringBoot + Redis如何解決重復(fù)提交問題,具有一定的參考價(jià)值,感興趣的可以了解一下
    2021-12-12
  • Java面試之如何獲取客戶端真實(shí)IP

    Java面試之如何獲取客戶端真實(shí)IP

    這篇文章主要給大家介紹了關(guān)于Java面試之如何獲取客戶端真實(shí)IP的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(19)

    Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(19)

    下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧,希望可以幫到你
    2021-07-07
  • 簡(jiǎn)單了解Java位域的一些知識(shí)

    簡(jiǎn)單了解Java位域的一些知識(shí)

    這篇文章主要介紹了簡(jiǎn)單了解Java位域的一些知識(shí),這個(gè)概念是在 Effective Java中了解到的, 可以通過EnumSet來代替位域這種方式表達(dá),需要的朋友可以參考下
    2019-07-07
  • java迭代器和for循環(huán)優(yōu)劣詳解

    java迭代器和for循環(huán)優(yōu)劣詳解

    在本篇文章里小編給大家整理的是一篇關(guān)于java迭代器和for循環(huán)優(yōu)劣詳解內(nèi)容,對(duì)此有興趣的朋友們可以學(xué)習(xí)參考下。
    2021-01-01
  • jar命令的用法詳解

    jar命令的用法詳解

    這篇文章主要介紹了jar命令的用法,非常實(shí)用,需要的朋友可以參考下
    2014-08-08
  • 詳解Java?ReentrantReadWriteLock讀寫鎖的原理與實(shí)現(xiàn)

    詳解Java?ReentrantReadWriteLock讀寫鎖的原理與實(shí)現(xiàn)

    ReentrantReadWriteLock讀寫鎖是使用AQS的集大成者,用了獨(dú)占模式和共享模式。本文和大家一起理解下ReentrantReadWriteLock讀寫鎖的實(shí)現(xiàn)原理,需要的可以了解一下
    2022-10-10
  • Java中多個(gè)線程交替循環(huán)執(zhí)行的實(shí)現(xiàn)

    Java中多個(gè)線程交替循環(huán)執(zhí)行的實(shí)現(xiàn)

    有些時(shí)候面試官經(jīng)常會(huì)問,兩個(gè)線程怎么交替執(zhí)行呀,本文就來詳細(xì)的介紹一下Java中多個(gè)線程交替循環(huán)執(zhí)行的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-01-01

最新評(píng)論

湘阴县| 乌兰察布市| 小金县| 郎溪县| 陵川县| 溧水县| 星子县| 招远市| 衡山县| 安陆市| 广水市| 惠州市| 徐闻县| 渝中区| 云浮市| 谷城县| 临颍县| 七台河市| 邹城市| 彭泽县| 通州市| 任丘市| 高邑县| 阿克苏市| 临泽县| 北海市| 铜陵市| 手游| 壤塘县| 信阳市| 页游| 通海县| 广德县| 永靖县| 察雅县| 三明市| 舟曲县| 丰城市| 平利县| 罗田县| 宜良县|