1. 程式人生 > >Tomcat入門這一篇就夠了

Tomcat入門這一篇就夠了

Tomcat,從這裡開始

如何將我們的 Java 程式碼,執行在網路上,初學時,首先接觸到的一般都是Servlet以及Jsp(或略過Jsp)而 Tomcat 就是這兩者的容器,幫你處理動態網頁部分

(一) 從哪來,到哪去?

(1) Tomcat和它的小夥伴

JBoss:Redhat 紅帽,支援所有的 JavaEE 規則,適合大型專案,收費

Weblogic:Orcale,支援所有 JavaEE 規則,適合大型專案,收費

Websphere:IBM,支援所有 JavaEE 規則,適合大型專案,收費

Resin:Caucho,支援 所有 JavaEE 規則,應用趨於廣泛

而我,我叫湯姆貓(Tomcat

),來自Apache基金組織,可能因為我開源且免費,算是應用比較廣泛的web伺服器了,不過天下沒有白吃的午餐,我僅僅支援少量的 javaEE規範 (Servlet/Jsp等)所以中小型專案,在我這裡跑的比較多

(2) Tomcat用來做什麼?

1、做Servlet等的容器

比如現存一個搜尋引擎,我們將它看成一個完整的web專案,它基於http協議中的請求和響應,我輸入一些內容查詢,而它接收到了這個請求後,簡單的認為,背後有一個Servlet(一些應用於web專案的java程式碼)在處理這個請求,它會通過一系列方法,對你的資料進行處理,以及查詢,例如,正常則查詢,存在非法字則不查詢,返回文字警告,最後再把相應的介面展示給使用者,而 Tomcat 就作為一個容器,其中存放著Servlet等東西

2、讓你/他人能在瀏覽器中訪問你的web專案

想要在瀏覽器中訪問我們本地的web專案,那必然需要一個URL地址,例如http://localhost:8080/(本地) ,也就是IP+埠號,那這個開放的埠,總得幫助我完成一些操作,它需要找到我再web.xml中配置的一些資訊,然後找到我的Servlet,將我所需要的功能實現,執行完後,將結果返回到瀏覽器上,這樣就能用java程式碼配合一些頁面,實現資料動態的互動,從而在瀏覽器上檢視這個效果

(二) 配置 Tomcat

(1) Tomcat的啟動和關閉

Tomcat的執行需要依賴 JDK,它會通過JAVA_HOME路徑來尋找 JDK,我們是有  Java基礎的,所以這一步可以忽略

方式一

在我們的安裝路徑下的bin資料夾中,startup.batshutdown.bat這兩個檔案分別代表著啟動和關閉

例如在我的電腦中開啟 Tomcat:D:\develop\Java\apache-tomcat-8.5.40\bin\startup.bat

方式二

如果想更加方便一點,可以將這兩者也設為環境變數

計算機 --> 右鍵屬性 --> 高階系統設定(左側)--> 高階 --> 環境變數

新建系統變數 --> 變數名:CATALINA_HOME    變數值:Tomcat安裝路徑

修改path變數 --> 追加:%CATALINA_HOME%\bin

這樣我們就可以在cmd中直接輸入startup或shudown,啟動我們的 Tomcat

啟動後,彈出名為Tomcat的框,內打印出日誌資訊,即代表成功開啟

如果在瀏覽器位址列中輸入 http://localhost:8080,如果出現對應Tomcat頁面,說明配置也就成功了

因為伺服器在本地上,所以我們的主機名可以為,http://127.0.0.1:8080或者 http://localhost:8080,埠前代表本地的主機名,tomcat的預設埠為8080

(2) 修改埠號(可改可不改)

Tomcat安裝路徑\conf\server.xml 修改,找到 Connector port="8080"內容,修改8080的值

如果將埠號修改為80,那麼以後再訪問伺服器的時候,就不需要再輸入埠號了,因為http協議預設埠號就是80,即輸入 http://localhost即可

 (三) Tomcat 目錄結構

  • bin:存放啟動和關閉 Tomcat 的指令碼檔案,例如startup.bat和shutdown.bat

  • conf:存放各種配置檔案,例如:context.xml、web.xml、tomcat-users.xml

  • server.xml:配置一些setver資訊,如埠號和主機   - web.xml:與每個應用WEB-INF下的web.xml協同工作,配置Servlet,session等   - tomcat-users.xml:使用者名稱密碼和相關的一些許可權

  • lib:存放tomcat所需的jar包

  • logs:日誌檔案

  • temp:存放tomcat執行時產生的臨時檔案,當tomcat關閉後,這個目錄中的件可以刪除

  • webapps:目錄下的每個資料夾對應我們的一個Web應用

  • 在webapps目錄下有一個ROOT目錄,它是預設web應用,如果把web應用的內部放到webapps/ROOT下,訪問URL路徑中不用給出應用名稱。

  • work:webapps下的應用程式在執行時會自動生成檔案,存放著 JSP被訪問後,生成對應的server檔案和位元組碼檔案

(四) 配置虛擬目錄(外部應用)

webapps:目錄下的每個資料夾對應我們的一個Web應用

預設情況下 webapps 下的資料夾可以被 Tomcat 自動管理成一個一個web站點,但是如果我們存在非常多的站點,一:過於佔據記憶體,二:檔案數過多不利於管理,所以我們需要在外部開闢一塊空間,將我們的web站點分散到別的碟符中去

(1) 方法一

在Tomcat安裝目錄下 找到 conf/server.xml

<Host name="localhost" appBase="webapps"
      unpackWARs="true" autoDeploy="true">
      <!-- 待新增位置 -->
</Host>

新增程式碼:<Context path="/URL訪問路徑" docBase="外部應用的絕對路徑"/>

例如新增:<Context path="/web001" docBase="F:/develop/web001"/>

(2) 方法二

在Tomcat安裝目錄下 找到 conf/Catalina/loaclhost資料夾,在其中建立一個以web專案為名的資料夾

<?xml version="1.0" encoding="UTF-8"?>

<Context 
    docBase="外部應用的絕對路徑" 
    reloadable="true">
</Context>

(五) 設定站點的首頁

一般在網路中部署站點的時候,index頁面將作為一個網站的首頁,也就是說只需要輸入域名即可直接跳轉到這個頁面上去,不需要輸入其檔名,而如何在本地Tomcat伺服器中設定某一個web專案的首頁呢?

1、我們在webapps中建立一個資料夾web1作為我們的一個web專案,在其中新建兩個html文件,page1.html 以及 page2.html

2、在web1目錄下新建一個名為WEB-INF的資料夾,並且在其中新建一個名為web.xml的檔案

可以從別處複製格式,例如 webapps\ROOT\WEB-INF 下的web.xml檔案,新增下方程式碼

  <welcome-file-list>
    <welcome-file>首頁檔名</welcome-file>
  </welcome-file-list>

例如:

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
  version="3.1"
  metadata-complete="true">

  <display-name>Welcome to Tomcat</display-name>
  <description>
     Welcome to Tomcat
  </description>

  <welcome-file-list>
    <welcome-file>page2.html</welcome-file>
  </welcome-file-list>

</web-app>

這樣我們就不需要指定資原始檔名訪問了,page2已經成為了我們站點的首頁

(六) 外網如何訪問本地基於Tomcat的web應用

Tomcat + 花生殼

在本地開發好了一個web專案,我們部署在本地的tomcat伺服器中,但是如果想要讓別人通過外網訪問我們的專案,幫助我們臨時測試,或者提出意見,簡單的可以通過Tomcat + 花生殼解決這個問題

首先自行安裝註冊花生殼這款軟體,新建一條內網對映,輸入相應資料

我們通過外網訪問一下

結尾:

如果內容中有什麼不足,或者錯誤的地方,歡迎大家給我留言提出意見, 蟹蟹大家 !^_^

如果能幫到你的話,那就來關注我吧!(系列文章均會在公眾號第一時間更新)

在這裡的我們素不相識,卻都在為了自己的夢而努力 ❤

一個堅持推送原創Java技術的公眾號:理想二旬不止

相關推薦

Tomcat入門

Tomcat,從這裡開始 如何將我們的 Java 程式碼,執行在網路上,初學時,首先接觸到的一般都是Servlet以及Jsp(或

Struts2入門

and win ioe 了解 指正 屬性 內容 servlet 優雅 前言 這是Strtus的開山篇,主要是引入struts框架...為什麽要引入struts,引入struts的好處是什麽,以及對Struts2一個簡單的入門.... 為什麽要引入struts? 既然Serv

JSON入門

jsb cart 開發包 fonts 數據 長度 gmv lock 在哪裏 什麽是JSON JSON:JavaScript Object Notation 【JavaScript 對象表示法】 JSON 是存儲和交換文本信息的語法。類似 XML。 JSON采用完全獨立於任何

Elasticsearch入門

search 語義 瀏覽器 三種 http請求 機制 說明 pro .net 實時搜索引擎Elasticsearch Elasticsearch(簡稱ES)是一個基於Apache Lucene(TM)的開源搜索引擎,無論在開源還是專有領域,Lucene可以

易學筆記--Servlet和JSP--入門

第4章:作為Servlet:請求和響應/4.1 Servlet載入過程 第4章:作為Servlet:請求和響應/4.2 請求 第4章:作為Servlet:請求和響應/4.3 響應 第4章:作為Servlet:請求和響應/4.4 資源下載例項 第4章:作為Servlet:

Maven教程--入門

第1章:Maven概述/1.1 Maven的概念 第1章:Maven概述/1.2 Maven的功能 第1章:Maven概述/1.3 與其它構建相比/1.3.1 Make 第1章:Maven概述/1.3 與其它構建相比/1.3.2 Ant 第2章:Maven的安裝/2.1

C語言從入門到精通,看

影響 內容 當前 位置 replace 雙精度 下標 寄存器變量 一個 No.1 計算機與程序設計語言的關系 計算機系統由硬件系統和軟件系統構成,硬件相當於人類的肉體,而軟件相當於人類的靈魂,如果脫離了靈魂,人類就是一具行屍走肉 No.2 C語言的特點 代碼簡潔,靈活性高

【看】kubernetes入門命令列操作(例項演示)

寫在前面:網上找了好久終於找到了期盼已久的、一個一眼就能理解的kubernetes“整體全過程”文章。 建議看這篇文章可以結合kubernetes官網(www.kubernetes.io)的Tutorial進行演練,效果很好。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

JVM和垃圾回收面試入門

前些天在 google 上搜索了一些JVM的參考資料,偶然發現了一篇文章,如獲至寶,簡單易懂而且相對全面的JVM和垃圾回收介紹寫得非常的棒,因此一直儲存著,今天有時間特意翻譯了一下。本人水平有限,但是遇到好文章希望可以與更多的人分享,特此釋出此文。 英文OK的話

GC學習入門(基於Oracle JDK 8)

目錄 垃圾收集 (Garbage Collection) 機制是 Java 的一大優勢特性, 為充分榨取 JVM 效能, 避免系統因垃圾收集不及時導致的 OOM (OutOfMemory, 記憶體溢位)問題, 或記憶體飽和出現無法響應使用者請求的情況, 就需要根據伺服器配置及應用複雜度對 GC 策略進行優化

易學筆記--python教程--入門

易學筆記 十年IT經驗個人學習筆記分享: 開發語言:C/C++/JAVA/PYTHON/GO/JSP WEB架構:Servlets/springMVC/springBoot/springClound 容器架構:Docker容器/Docker叢集/Docker與微服務整合/

Spring入門

前言 前面已經學習了Struts2和Hibernate框架了。接下來學習的是Spring框架…本博文主要是引入Spring框架… Spring介紹 Spring誕生: 建立Spring的目的就是用來替代更加重量級的的企業級Java技術 簡化Java

關於Kaggle入門,看

這次醞釀了很久想給大家講一些關於Kaggle那點兒事,幫助對資料科學(Data Science)有興趣的同學們更好的瞭解這個專案,最好能親身參與進來,體會一下學校所學的東西和想要解決一個實際的問題所需要的能力的差距。雖然不是Data Science出身,但本著嚴謹的科研態

maven 入門

地址 span con sys 圖片 program 自動 tor ngs 一、maven是什麽 推薦一篇博客寫的非常不錯! 二、maven安裝與配置步驟: 1.下載maven 2.將maven解壓到你想安裝到的文件夾目錄下,這裏示例解壓到 D:\s

Mybatis使用入門

mybatis中,封裝了一個sqlsession 物件(裡面封裝有connection物件),由此物件來對資料庫進行CRUD操作。 執行流程 mybatis有一個配置的xml,用於配置資料來源、對映Mapping,xml的檔名可以任取,為了方便,我們還是起mybatis-config.xml 我們讀取此配置的

「2020 新手必備 」極速入門 Retrofit + OkHttp 網路框架到實戰,

老生常談 什麼是 Retrofit ? Retrofit 早已不是什麼新技術了,想必看到這篇部落格的大家都早已熟知,這裡就不囉嗦了,簡單介紹下: Retrofit 是一個針對 Java 和 Android 的設計的 REST 客戶機。它通過基於 REST 的 web 服務檢索和上傳 JSON (或其他結

MongoDB 上手開發實踐(入門上手開發

前言   MongoDB是一個介於 關係資料庫 和非關係資料庫之間的產品,是非關係資料庫當中功能最豐富,最像關係資料庫的。它支援的資料結構非常鬆散,是類似 json 的 bson 格式,因此可以儲存比較複雜的資料型別。Mongo最大的特點是它支援的查詢語言非常強大,其語法有點類似於面向物件的查詢語言,幾乎可以

Python + Appium 自動化操作微信入門

## 簡介 Appium 是一個開源的自動化測試工具,支援 Android、iOS 平臺上的原生應用,支援 Java、Python、PHP 等多種語言。 Appium 封裝了 Selenium,能夠為使用者提供所有常見的 JSON 格式的 Selenium 命令以及額外的移動裝置相關的控制命令,比如:多點

【轉】【修真院“善良”系列之十八】WEB程序員從零開始到就業的全資料V1.0——只看

absolute feed 自己 session rem 好的 ans 一個 css樣式 這是兩年以來,修真院收集整理的學習資料順序。以CSS15個任務,JS15個任務為基礎,分別依據要完成任務的不同的技能點,我們整理出來了這麽一篇在學習的時候需要看到的資料。這是Versi

Java中的多線程你只要看

== 討論 cin 線程池。 locking nth lis dset tro 引 如果對什麽是線程、什麽是進程仍存有疑惑,請先Google之,因為這兩個概念不在本文的範圍之內。 用多線程只有一個目的,那就是更好的利用cpu的資源,因為所有的多線程代碼都可以用單線程來實現。