Tomcat簡介與MacOS環(huán)境下的安裝使用

前言

通常情況下,一個(gè)完整的web應(yīng)用需要瀏覽器、web服務(wù)器服務(wù)端程序、數(shù)據(jù)庫四大組件的相互配合協(xié)作來完成一個(gè)請(qǐng)求處理與返回結(jié)果的過程。服務(wù)端程序,比如Java中的Servlet,會(huì)完成對(duì)特定請(qǐng)求的處理過程。如何把請(qǐng)求分配給對(duì)應(yīng)的Servlet,如何管理這些Servlet以及靜態(tài)資源,便是web服務(wù)器的職責(zé)了,Tomcat是一個(gè)開源的由Java語言實(shí)現(xiàn)的web服務(wù)器、支持ServletJsp(Jsp本質(zhì)上也是Servlet)。

web應(yīng)用

下載與安裝

以下操作場景均在MacOS系統(tǒng)下完成,選擇安裝的tomcat版本為tomcat 9

  • tomcat官網(wǎng)下載

http://tomcat.apache.org

  • 解壓
 tar -zxvf apache-tomcat-9.0.34.tar.gz 
  • 解壓后tomcat9中的文件目錄結(jié)構(gòu)
BUILDING.txt    LICENSE     README.md   RUNNING.txt conf        logs        webapps
CONTRIBUTING.md NOTICE      RELEASE-NOTES   bin     lib     temp        work
  • 其中4個(gè)重要的目錄
目錄名 目錄內(nèi)容
bin 一些工具腳本,開啟關(guān)閉tomcat的腳本都在這里
conf 配置文件,其中server.xmltomcat的主要配置文件
logs 存放日志文件
webapps 存放你web應(yīng)用的目錄
  • 配置JAVA_HOME
    tomcat需要指定JDKJRE,使用echo $JAVA_HOME查看是否有設(shè)置環(huán)境變量。
$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home

如果沒有設(shè)置、可以手動(dòng)設(shè)置、MacOSjdk所在位置一般如上、設(shè)置過程如下。

vi .bash_profile

在 .bash_profile中輸入以下配置并保存

JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home
export JAVA_HOME

source使其生效

source .bash_profile
啟動(dòng)與關(guān)閉

tomcatbin目錄下有2個(gè)腳本。startup.sh表示啟動(dòng)tomcat,shutdown.sh表示關(guān)閉tomcat。執(zhí)行./startup.sh后會(huì)有如下提示

Using CATALINA_BASE:   /Users/xxx/tomcat/apache-tomcat-9.0.34
Using CATALINA_HOME:   /Users/xxx/tomcat/apache-tomcat-9.0.34
Using CATALINA_TMPDIR: /Users/xxx/tomcat/apache-tomcat-9.0.34/temp
Using JRE_HOME:        /Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home
Using CLASSPATH:       /Users/LENN/tomcat/apache-tomcat-9.0.34/bin/bootstrap.jar:/Users/LENN/tomcat/apache-tomcat-9.0.34/bin/tomcat-juli.jar
Tomcat started.

tomcat默認(rèn)監(jiān)聽在主機(jī)上的 8080端口,讓我們用瀏覽器訪問這個(gè)端口,若出現(xiàn)如下默認(rèn)頁面則說明tomcat啟動(dòng)成功。

成功啟動(dòng)

若啟動(dòng)失敗,則可能是默認(rèn)的8080端口被別的進(jìn)程占用了,讓我們?nèi)ブ疤岬降?code>server.xml修改默認(rèn)端口配置,再重新啟動(dòng)。

  • 修改xml中的默認(rèn)端口至8090
    <Connector port="8090" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
webapp目錄結(jié)構(gòu)

上面我們提到了webapps用來存放我們的web應(yīng)用,讓我們看下這個(gè)目錄下有什么

  • weapps目錄
.
├── ROOT
├── docs
├── examples
├── host-manager
├── manager

其中examples目錄是官方提供給我們的一個(gè)示例,提供了一個(gè)標(biāo)準(zhǔn)的web應(yīng)用的文件目錄的組織結(jié)構(gòu)信息讓我們參考。

  • examples 目錄結(jié)構(gòu)
.
├── WEB-INF
├── index.html
├── jsp
├── servlets
└── websocket

Tips:查看一個(gè)目錄層級(jí)結(jié)構(gòu)可以使用tree -L [層數(shù)]命令來完成,MacOS下可以使用brew intstall tree來下載安裝該工具。

examples中,最頂層目錄就是我們web應(yīng)用的document root,在部署的時(shí)候管理員會(huì)把它映射到一個(gè)訪問路徑下, 假設(shè)映射到localhost:8080/test這個(gè)訪問路徑,我們想查看index.html文件,只要在瀏覽器輸入localhost:8080/test/index.html就可以了。
我們可以把一個(gè)webapp根目錄下的文件分為兩類,

  1. 一類是瀏覽器用戶可見的文件,比如各種html、jsp、css、img等(當(dāng)然對(duì)于這些文件我們也可以在當(dāng)前根目錄下設(shè)置對(duì)應(yīng)的文件夾對(duì)其進(jìn)行管理,比如examples中的jsp、servlets,打開看一下其中均是html文件)。
  2. 另一類則是瀏覽器用戶不可見的資源,位于WEB-INF目錄下,包含我們的服務(wù)端小程序(servlet)位于WEB-INF/classes下和用到的依賴庫位于WEB-INF/lib

WEB-INF下還有一個(gè)至關(guān)重要的配置文件web.xml,它用來告訴tomcat容器構(gòu)成你web應(yīng)用的servlet等其他組件信息、初始化參數(shù)等等。

部署webapp

讓我們也模仿examples的組織結(jié)構(gòu),創(chuàng)建一個(gè)myweb文件夾,將其放置于webapps目錄下。

  • myweb目錄結(jié)構(gòu)
.
├── WEB-INF
└── hello.html
  • hello.html中的內(nèi)容
Hello World!

現(xiàn)在通過訪問localhost:8090/myweb/hello.html就可以查看這個(gè)頁面

部署靜態(tài)頁面

之前我們說過web.xml這個(gè)配置文件會(huì)告訴tomcat關(guān)于這個(gè)web應(yīng)用的詳細(xì)信息,現(xiàn)在我們通過配置web.xml告訴tomcat我們的應(yīng)用myweb的首頁為hello.html。

  • 通過web.xml配置首頁
<?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_4_0.xsd"
  version="4.0"
  metadata-complete="true">
      <welcome-file-list>
        <welcome-file>hello.html</welcome-file>
    </welcome-file-list>
</web-app>

只要簡單的在<welcome-file-list>設(shè)置歡迎文件即可?,F(xiàn)在通過訪問http://localhost:8090/myweb/則會(huì)默認(rèn)返回hello.html這個(gè)歡迎界面了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容