亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Tomcat的安裝與使用及Maven與Servlet的使用教程

 更新時(shí)間:2023年07月06日 09:25:55   作者:韻秋梧桐  
這篇文章主要介紹了Tomcat的安裝與使用及Maven與Servlet的使用教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

一.Tomcat的下載與使用

1. Tomcat簡介

Tomcat是Apache軟件基金會(huì)(Apache Software Foundation)的Jakarta項(xiàng)目中的一個(gè)核心項(xiàng)目, 由Apache, Sun和其他一些公司及個(gè)人共同開發(fā)而成, 由于有了Sun的參與和支持, 最新的Servlet和JSP規(guī)范總是能在Tomcat中得到體現(xiàn), Tomcat5支持最新的Servlet 2.4和JSP 2.0規(guī)范.

因?yàn)門omcat技術(shù)先進(jìn), 性能穩(wěn)定, 而且免費(fèi), 因而深受Java愛好者的喜愛并得到了部分軟件開發(fā)商的認(rèn)可, 成為比較流行的Web應(yīng)用服務(wù)器.

Tomcat是一個(gè)HTTP服務(wù)器, HTTP服務(wù)器有很多種, 在Java領(lǐng)域中, Tomcat是最知名, 最廣泛使用的一個(gè), 本質(zhì)上是基于TCP服務(wù)器, 按照HTTP協(xié)議的約定來解析請求, 構(gòu)造響應(yīng).

2. 安裝和使用

下載與安裝:1??第一步, 瀏覽器中搜索Tomcat, 找到Tomcat官網(wǎng) https://tomcat.apache.org/

2??第二步, 根據(jù)你的環(huán)境, 選擇相應(yīng)版本下載即可, 需要知道的是Tomcat的版本和你使用的Servlet版本是有強(qiáng)相關(guān)的, 這里就下載Tomcat8了, 對應(yīng)的Servlet的版本就是3.1的.

img

3??第三步, 點(diǎn)進(jìn)去, 選擇zip文件點(diǎn)擊下載即可, 如果你有下載多個(gè)版本的需求, 也是可以的, Tomcat是純綠色的軟件, 直接解壓就能使用, 下載多個(gè)版本之間是互不影響的.

img

4??第四步, 找個(gè)你常用的目錄, 解壓即可, 點(diǎn)進(jìn)目錄, 你會(huì)得到下面一堆文件:

img

還要注意, Tomcat是基于Java實(shí)現(xiàn)的, 這就要求你的環(huán)境中必須要有jdk, 如果沒有Tomcat是跑不起來的.使用:5??第五步, 了解各目錄文件的作用

img

??bin目錄中放的是Tomcat相關(guān)的批處理文件, .bat文件表示Windows批處理文件, .sh文件表示Linux的shell腳本文件, 其中包含啟動(dòng)和關(guān)閉Tomcat的可執(zhí)行文件, 也就是說Tomcat也是可以在Linux上運(yùn)行的, 以startup命名的文件就是Tomcat啟動(dòng)程序, 以shutdown命名的文件就是Tomcat關(guān)閉程序.

img

??conf目錄中含有Tomcat的配置文件, 配置文件是xml類型的文件, 比如可以在server.xml文件可以配置Tomcat的端口號, 不修改的話默認(rèn)就是8080了.

img

??logs目錄主要用來儲存日志, Tomcat運(yùn)行的日志都在這里, 如果程序出問題了, 就需要看這里的日志來排產(chǎn)問題.??webapps目錄儲存我們部署的Serlvet程序, Servlet部署的程序是war結(jié)尾的壓縮包, Tomcat將一個(gè)war包解壓后就是一個(gè)webapp, 即一個(gè)網(wǎng)站, 一個(gè)Tomcat可以部署多個(gè)Servlet程序, 即多個(gè)網(wǎng)站, 所以就是webapps, 里面的每個(gè)目錄都代表一個(gè)獨(dú)立的網(wǎng)站.

temp, lib, work目錄用的不多, 就不作贅述了.

img

6??第六步, 啟動(dòng)Tomcat, 我們可以在bin目錄下找到startup.bat文件點(diǎn)擊在本地啟動(dòng)Tomcat, 然后直接訪問http://127.0.0.1:8080可訪問到Tomcat歡迎頁面(Tomcat自帶的一個(gè)webapp).

img

啟動(dòng)Tomcat的頁面圖如下, 出現(xiàn)類似org.apache.catalina.startup.Catalina.start Server startup in 936 ms的信息就表示啟動(dòng)成功了

img

可以看到這里控制臺有些是亂碼的, 這是因?yàn)槲覀兊腡omcat是在下Windows下啟動(dòng)的, Windows的默認(rèn)編碼是GBK, 我們可以可以修改以下配置conf/logging.properties, 然后關(guān)閉Tomcat后重新啟動(dòng).

當(dāng)然, 如果要將Tomcat配置到Linux環(huán)境下, 這里的配置還是需要改回UTF8的.

img

img

要注意, 當(dāng)啟動(dòng)一個(gè)Tomcat程序后再啟動(dòng)一個(gè)Tomcat程序會(huì)啟動(dòng)失敗, 因?yàn)槎丝谔?code>8080已經(jīng)被上一個(gè)Tomcat程序占用了.

img

7??第七步, 將項(xiàng)目部署到Tomcat, 所謂部署就是將我們的代碼拷貝到webapps目錄下即可, 然后在bin目錄找到startup.bat文件重新啟動(dòng)Tomcat, 最后訪問http://127.0.0.1:8080/部署文件的相對wepapps目錄的相對路徑進(jìn)行驗(yàn)證.

比如我的webapps目錄中有一個(gè)BlogSystem文件夾, 里面有一個(gè)login.html頁面文件, 我們現(xiàn)在要使用Tomcat訪問這個(gè)文件, 訪問的url就為http://127.0.0.1:8080/BlogSystem/login.html.

這里訪問的路徑組成為, ip:端口號, 后面的BlogSystem是我們的webapps下的目錄, 我們也稱為context path/application path, 再后面的路徑是我們的context path下要訪問的文件, 這種形式的訪問是通過網(wǎng)絡(luò)可以跨主機(jī)訪問的, 初學(xué)要注意與本地點(diǎn)文件打開訪問進(jìn)行區(qū)分.

img

訪問http://127.0.0.1:8080/BlogSystem/login.html結(jié)果如下,

img

不過我們這里在Tomcat部署的網(wǎng)頁, 是在局域網(wǎng)環(huán)境下, 只有在同一局域網(wǎng)下的設(shè)備才可以訪問, 如果是部署在外網(wǎng)IP下, 那么全世界的設(shè)備就都可以訪問了.

最后就是關(guān)閉Tomcat了, 一共有三種關(guān)閉方式:

  • Ctrl + C關(guān)閉
  • 直接點(diǎn)窗口右上角X號關(guān)閉
  • 使用bin目錄下的shutdown.bat關(guān)閉

這三種方式中, 第1, 2種是比較粗暴的關(guān)閉方式, 這種方式會(huì)直接殺死進(jìn)程; 第3種方式比較優(yōu)雅, Tomcat還會(huì)綁定一個(gè)8005管理端口, 是通過管理端口來關(guān)閉的, 會(huì)多做一些收尾工作; 但實(shí)際上, 第1, 2種關(guān)閉方式是更方便, 更常用的.

二.Maven的使用

Maven是專門用于管理和構(gòu)建Java項(xiàng)目的 “工程管理” 工具, 有規(guī)范目錄結(jié)構(gòu), 管理依賴, 構(gòu)建/編譯, 打包, 測試等功能, Maven是一個(gè)獨(dú)立的程序, 但不需要我們單獨(dú)下載安裝, IDEA中已經(jīng)直接集成了.

那么首先來介紹如何使用IDEA來使用Maven來引入的依賴, 以引入Servlet的為例.

1??第一步, 新建項(xiàng)目, 選擇Maven.

選中這里的Maven點(diǎn)擊Create就可以創(chuàng)建Maven管理的項(xiàng)目了,

img

項(xiàng)目創(chuàng)建好后會(huì)就會(huì)自動(dòng)創(chuàng)建如下目錄結(jié)構(gòu),

img

main目錄中放業(yè)務(wù)代碼, java目錄中放java代碼, resources目錄中放程序的依賴文件, test目錄下放測試代碼, pom.xml文件是Maven項(xiàng)目總的配置文件.

如果是首次使用Maven, 項(xiàng)目創(chuàng)建好了之后, 會(huì)在下面讀條, 從中央倉庫加載一些Maven的依賴, 由于Maven倉庫的服務(wù)器是在國外的, 下載的速度就可能比較慢; 如果實(shí)在太慢嘗試就更換下網(wǎng)絡(luò), 或者配置一下國內(nèi)鏡像的阿里云服務(wù)器再下載.

2??第二步, 引入依賴.

首先要知道坐標(biāo)的概念, Maven中的坐標(biāo)是資源的唯一標(biāo)識, 要使用坐標(biāo)來引入項(xiàng)目中所需要的依賴, Maven標(biāo)準(zhǔn)由以下幾個(gè)部分組成:

  • groupId: 定義當(dāng)前Maven項(xiàng)目隸屬組織名稱(通常是域名的反寫)
  • artifactId: 定義當(dāng)前Maven項(xiàng)目名稱(通常是模塊名稱, maven_project)
  • version: 定義當(dāng)前項(xiàng)目版本號
  • scope: 設(shè)置對應(yīng)jar包的作用范圍

這里以引入Servlet的依賴為例進(jìn)行介紹, 我們要去Maven中央倉庫(https://mvnrepository.com/), 搜索Servlet, 找到Servlet的jar包點(diǎn)進(jìn)去

img

img

點(diǎn)擊選擇3.1版本, 和tomcat8對應(yīng), 復(fù)制圖中位置的坐標(biāo)內(nèi)容.

img

把坐標(biāo)拷貝到項(xiàng)目的pom.xml文件中, 我們需要, 先創(chuàng)建一個(gè)dependencies標(biāo)簽, 是project標(biāo)簽的子標(biāo)簽, 可以放多個(gè)依賴, 把依賴依次拷貝到這個(gè)標(biāo)簽即可.

img

首次使用, 這里可能會(huì)爆紅, 說明依賴還沒有下載下來.當(dāng)這段代碼復(fù)制到pom.xml文件中, Maven就會(huì)自動(dòng)下載相應(yīng)的依賴文件, 沒有觸發(fā)自動(dòng)下載的話, 可以手動(dòng)刷新一下觸發(fā)下載, 當(dāng)依賴下載完成后, 也就不爆紅了.

img

這樣就引入依賴成功了.

img

三.Servlet

Servlet是一種實(shí)現(xiàn)動(dòng)態(tài)頁面的技術(shù), 要注意區(qū)分靜態(tài)頁面和動(dòng)態(tài)頁面:

  • 靜態(tài)頁面: 網(wǎng)頁內(nèi)容始終固定不變的(單純的html)
  • 動(dòng)態(tài)頁面: 用戶不同/時(shí)間不同/輸入?yún)?shù)不同時(shí)頁面的內(nèi)容會(huì)發(fā)生變化(html+后端交互數(shù)據(jù))

Servlet是Tomcat提供的一組API, 封裝了HTTP相關(guān)操作, 可以讓我們不必關(guān)注Socket, HTTP協(xié)議格式等細(xì)節(jié), 降低了Web開發(fā)的門檻, 提高開發(fā)效率.

Servlet主要進(jìn)行的工作:

  • 允許我們創(chuàng)建一個(gè)類, Tomcat收到某個(gè)特定路徑的HTTP請求時(shí), 執(zhí)行該類中的某個(gè)方法
  • 對HTTP請求進(jìn)行解析, 并將HTTP請求從一個(gè)字符串解析成一個(gè)HttpRequest對象
  • 我們只需要給指定的HttpResponse對象的一些屬性字段填寫, Servlet就會(huì)自動(dòng)的按照HTTP協(xié)議的方式構(gòu)造出一個(gè)HTTP響應(yīng)的字符串, 然后通過Socket寫回客戶端.

1. 第一個(gè)Servlet程序

那么下面就來寫一個(gè)Servlet程序, 我們使用Servlet來在寫一個(gè)hello world程序, 然后部署到Tomcat上, 此時(shí)通過瀏覽器去訪問, 就會(huì)在網(wǎng)頁上得到一個(gè)有hello world字符串的頁面.

1??第一步, 創(chuàng)建Maven項(xiàng)目, 創(chuàng)建步驟在上面介紹過了.

2??第二步, 引入Servlet依賴, 還是去參考上面寫的.

3??第三步, 創(chuàng)建目錄結(jié)構(gòu), 雖然Maven已經(jīng)幫我們自動(dòng)創(chuàng)建了一些目錄, 但是還不夠, 因?yàn)榇颂幬覀兪褂肕aven開發(fā)的是一個(gè)Web程序, 還需要一些額外的目錄.

main目錄里創(chuàng)建webapp目錄, 該目錄和java,resources并列

img

webapp目錄里面創(chuàng)建WEB-INF目錄.

img

WEB-INF目錄下創(chuàng)建web.xml文件.

img

web.xml寫入指定配置, 需要注意的是, 這里的代碼可能是爆紅的, 但在這里并不代表就是錯(cuò)的, IDEA中只是針對Java代碼能夠進(jìn)行比較準(zhǔn)確的分析和判定, 針對其他代碼, 如果標(biāo)紅, 是否是錯(cuò)的, 都不一定.

<!DOCTYPE web-app PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
    <display-name>Archetype Created Web Application</display-name>
</web-app>

這里相關(guān)的還要理解的是, Servlet程序中是沒有main方法的, 那么它是怎么跑起來的呢?這就和我們創(chuàng)建的這個(gè)web.xml有關(guān)了, 依靠這個(gè)文件, Tomcat就可以識別webapps目錄下哪些項(xiàng)目目錄是需要加載到服務(wù)器中的.

所以說, 這樣的目錄結(jié)構(gòu)是必須的, 使用Tomcat就得遵照人家的要求, 當(dāng)然也不是不可以改其他名稱, 是需要額外配置的.

4??第四步, 在Java目錄下編寫Servlet代碼.

  • 創(chuàng)建類HelloServlet, 繼承HttpServlet類(由Servlet API提供, 寫Servlet代碼一般都要繼承這個(gè)類).
  • 重寫doGet方法, 用來處理HTTP GET請求, 根據(jù)請求生成響應(yīng), 有HttpServletRequest req(TCP socket中讀出來的字符串,按照HTTP協(xié)議解析得到的對象), HttpServletResponse resp(空對象, 輸出型參數(shù), 要由我們?nèi)?gòu)造)兩個(gè)參數(shù), Tomcat服務(wù)器接收到GET或者POST請求時(shí)就會(huì)調(diào)用這里相應(yīng)的方法(不需要我們手動(dòng)調(diào)用).
  • 在方法里面寫業(yè)務(wù)邏輯代碼, 構(gòu)造出resp.
  • 加上WebServlet注解標(biāo)識路徑, 這個(gè)注解的作用是把當(dāng)前的類和一個(gè)HTTP請求的路徑關(guān)聯(lián)起來, 不同的路徑關(guān)聯(lián)的是不同類, 可以觸發(fā)不同的代碼 (注解是Java 中的特殊的類, Java專門定義了一種 “語法糖” 來實(shí)現(xiàn)注解, 作用是針對一個(gè)類/方法, 進(jìn)行額外的解釋說明, 賦予額外的含義).
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
// 把當(dāng)前的類和HTTP請求的路徑關(guān)聯(lián)起來
// 根據(jù)url中的路徑, 通過這個(gè)注解, 就可以確定調(diào)用服務(wù)器中的哪個(gè)類的方法
// 路徑和servlet是一一對應(yīng)關(guān)系
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 不要調(diào)用父類的構(gòu)造方法
        //super.doGet(req, resp);
        // 控制臺輸出hello world
        System.out.println("hello world");
        // 構(gòu)造resp對象
        // 寫入resp中的body中, 最終由tomcat寫入網(wǎng)卡, 發(fā)送至客戶端
        resp.getWriter().write("hello world");
    }
}

要理解, 一個(gè)Servlet程序中, 可以有很多的Servlet類, 每個(gè)Servlet類都可以關(guān)聯(lián)到不同的路徑(對應(yīng)到不同的資源), 多個(gè)Servlet就可以實(shí)現(xiàn)了不同的邏輯和功能, 路徑和Servlet類之間是一對一的關(guān)系.

上面的代碼中要注意, 直接快捷鍵重寫的doGet方法, 默認(rèn)調(diào)用的是父類的doGet, 而父類是直接寫回一個(gè)錯(cuò)誤的, 所以一定要注意將默認(rèn)調(diào)用的super.doGet()刪除, 然后再去實(shí)現(xiàn)自己的邏輯;

img

img

img

代碼中resp.getWriter()會(huì)得到一個(gè)Writer對象, 這里的writer對象是從屬于resp對象的, 此處的write操作其實(shí)是往resp的body部分進(jìn)行寫入, 等resp對象整個(gè)構(gòu)造好了, tomcat會(huì)統(tǒng)一轉(zhuǎn)成HTTP相應(yīng)的格式, 寫入socket.

5??第五步, 打包程序.

Maven默認(rèn)打的是jar包, jar包中只含有普通的java程序(.class), 而Tomcat中的webapp需要的war包, war包是Tomcat部署webapp使用的壓縮文件, 可以包含一些前端代碼和特定的目錄結(jié)構(gòu), 以方便后續(xù)Tomcat識別這些內(nèi)容, 來加載webapp.

首先需要在pom.xml文件寫入以下內(nèi)容, 與dependencies同一級, 目的是為了使打包的壓縮格式為war和指定包名.

<!-- 描述要包類型  -->
<packaging>war</packaging>
<!--  聲明包名  -->
<build>
    <finalName>hello_servlet</finalName>
</build>

然后點(diǎn)擊IDEA右側(cè)的Maven, 雙擊Lifecycle下的package, 此時(shí)Maven就會(huì)幫助我們打包項(xiàng)目, 項(xiàng)目中會(huì)出現(xiàn)一個(gè)target目錄, 打包后的war包就在其中.

img

img

這里的打包其實(shí)是完成了以下操作:

  • 檢查代碼中是否存在一些依賴, 依賴是否下載好.
  • 把代碼進(jìn)行編譯, 生成.class文件.
  • 把這些.class 文件, 以及 web.xml按照一定的格式進(jìn)行打包.

6??第六步, 將程序部署到Tomcat將打包好的war包拷貝到Tomcat中的webapps目錄中即可.

img

7??第七步, 驗(yàn)證程序運(yùn)行結(jié)果.

啟動(dòng)Tomcat服務(wù)器, 在瀏覽器地址欄中訪問http://127.0.0.1:8080/hello_servlet/hello可以得到一個(gè)顯示hello world的頁面, 同時(shí)命令行運(yùn)行的Tomcat也會(huì)輸出hello world.

img

img

要注意這里的兩級路徑, 第一級路徑是webapps目錄下的war包文件名, 也叫做Context Path; 第二級路徑是我們代碼中在注解標(biāo)注的路徑, 也叫做Servlet Path; 即/war包名(一級路徑)/注解標(biāo)注的路徑(二級路徑).

這里的war包名稱為hello_servlet, 注解標(biāo)注的路徑是/hello; 所以綜合起來, 加上前面的協(xié)議域名和端口號, URL就是http://127.0.0.1:8080/hello_servlet/hello.

總結(jié)一下, 這里有7步, 依次是, 創(chuàng)建Maven項(xiàng)目, 引入依賴, 創(chuàng)建webapp目錄結(jié)構(gòu), 編寫Servlet代碼, 打包, 部署, 驗(yàn)證.

2. 在idea中集成Tomcat

Smart Tomcat是IDEA上的一個(gè)插件, 上面所介紹的Servlet程序運(yùn)行步驟其實(shí)是可以簡化的, 主要是第五步和第六步, 每次修改都需要重新打包和部署, 其實(shí)是有點(diǎn)麻煩的, Smart Tomcat就幫助我們解決了這個(gè)問題.

Smart Tomcat插件安裝和使用步驟如下:

1??第一步, 打開IDEA設(shè)置, 找到插件選項(xiàng), 即Plugins.

img

2??第二步, 在Marketplace搜索Smart Tomcat, 下載安裝即可.

img

3??第三步, 重啟IDEA, 配置Smart Tomcat.

img

點(diǎn)擊+新增配置, 選中Smart Tomcat

img

配置Tomcat

img

配置好后點(diǎn)擊綠色的倒三角形就可以運(yùn)行Servlet程序了.

img

看到下圖中的提示, Tomcat就啟動(dòng)成功了, 不過這個(gè)不能訪問Tomcat的歡迎頁面.

img

要注意, 使用Smart Tomcat啟動(dòng)Tomcat和之前介紹的是有本質(zhì)區(qū)別的, Smart Tomcat的工作原理, 不是說把war包拷貝(webapps里是不變的), 使用Smart Tomcat支持啟動(dòng)的時(shí)候顯示指定一個(gè)特定的webapp目錄, 相當(dāng)于是讓Tomcat加載單個(gè)webapp運(yùn)行, IDEA直接調(diào)用Tomcat, 讓Tomcat加載當(dāng)前項(xiàng)目中的目錄, 這里沒有打包, 拷貝和解壓縮的過程.

這兩種部署, 其實(shí)是兩種Tomcat運(yùn)行方式, 對于Context Path的定位不同; 如果是直接拷貝war包的方式部署, Context Path就是war包名; 如果是Smart Tomcat方式部署, 這里的Context Path是可以自己配置的.

IDEA專業(yè)版還直接集成了Tomcat Server插件, 不過還是沒有這個(gè)簡單好用.

3. 常見錯(cuò)誤

??常見錯(cuò)誤1: 404404 表示用戶訪問的資源不存在, 大概率是 URL 的路徑寫的不正確.

img

或者是你的webapp沒有正確被部署: web.xml 寫錯(cuò)了, 文件名錯(cuò)了, 文件路徑錯(cuò)了, 文件位置錯(cuò)了…

??常見錯(cuò)誤2: 405

405 表示對應(yīng)的 HTTP 請求方法沒有實(shí)現(xiàn), 比如我們在瀏覽器發(fā)了個(gè)GET請求, 但是代碼里沒寫doGet, 此時(shí)就會(huì)出現(xiàn)405.

img

img

還有可能就是重寫的方法中沒有去掉默認(rèn)調(diào)用的父類方法, 如super.doGet

img

img

??常見錯(cuò)誤3:500

往往是Servlet代碼中拋出異常導(dǎo)致的, 這個(gè)問題最好解決, 因?yàn)?00的時(shí)候頁面日志中會(huì)明確告訴你異常調(diào)用棧, 告訴你是哪一行代碼出的異常比如我們給代碼來一個(gè)空指針異常.

img

img

??常見錯(cuò)誤4: 出現(xiàn)空白頁面

方法中邏輯沒有寫類似resp.getWriter().write()這樣的代碼

??常見錯(cuò)誤5: 頁面無法訪問最常見的原因就是Tomcat沒有啟動(dòng)或者崩潰, 我們把Tomcat關(guān)了, 就會(huì)出現(xiàn)頁面無法訪問的情況, Tomcat無法啟動(dòng), 很可能是端口沖突了.

img

到此這篇關(guān)于Tomcat的安裝與使用,Maven與Servlet的使用的文章就介紹到這了,更多相關(guān)Tomcat Maven與Servlet的使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論