Tomcat目錄層次結(jié)構(gòu)

Tomcat服務(wù)器端口的配置
Tomcat的所有配置都放在conf文件夾之中,里面的server.xml文件是配置的核心文件。如果想修改Tomcat服務(wù)器的啟動端口,則可以在server.xml配置文件中的Connector節(jié)點進(jìn)行的端口修改。
例如:將Tomcat服務(wù)器的啟動端口由默認(rèn)的8080改成8081端口
<Connector port="8081"Tomcat服務(wù)器虛擬目錄的映射方式
Web應(yīng)用開發(fā)好后,若想供外界訪問,需要把web應(yīng)用所在目錄交給web服務(wù)器管理,這個過程稱之為虛似目錄的映射。
1.虛擬目錄的映射方式一:在server.xml文件的host元素中配置
找到server.xml文件的host元素,在<Host></Host>這對標(biāo)簽加上<Context path="/javaWebApp" docBase="F:/JavaWebDemoProject" />即可將在F盤下的JavaWebDemoProject這個JavaWeb應(yīng)用映射到JavaWebApp這個虛擬目錄上,JavaWebApp這個虛擬目錄是由Tomcat服務(wù)器管理的,JavaWebApp是一個硬盤上不存在的目錄,是我們自己隨便寫的一個目錄,也就是虛擬的一個目錄,所以稱之為"虛擬目錄",代碼如下:
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context path="/JavaWebApp" docBase="F:/JavaWebDemoProject" /> </Host>其中,Context表示上下文,代表的就是一個JavaWeb應(yīng)用,Context元素有兩個屬性,
Ⅰ.path:用來配置虛似目錄,必須以"/"開頭。
Ⅱ.docBase:配置此虛似目錄對應(yīng)著硬盤上的Web應(yīng)用所在目錄。
使用瀏覽器訪問"/JavaWebApp"這個虛擬目錄下的1.jsp這個web資源。1.jsp可以正常訪問,這說明我們已經(jīng)成功地將將在F盤下的JavaWebDemoProject這個JavaWeb應(yīng)用映射到JavaWebApp這個虛擬目錄上了,訪問"/JavaWebApp/1.jsp"就相當(dāng)于訪問"F:/JavaWebDemoProject/1.jsp"
注意:在Tomcat6之后中,不再建議在server.xml文件中使用配置context元素的方式來添加虛擬目錄的映射,因為每次修改server.xml文件后,Tomcat服務(wù)器就必須要重新啟動后才能重新加載server.xml文件。
2.虛擬目錄的映射方式二:讓tomcat服務(wù)器自動映射
tomcat服務(wù)器會自動管理webapps目錄下的所有web應(yīng)用,并把它映射成虛似目錄。換句話說,tomcat服務(wù)器webapps目錄中的web應(yīng)用,外界可以直接訪問。
例如:把F盤下的JavaWebDemoProject這個JavaWeb應(yīng)用直接copy到tomcat服務(wù)器webapps目錄中,此時Tomcat服務(wù)器就會自動為JavaWebDemoProject這個JavaWeb應(yīng)用映射一個同名的虛擬目錄"/JavaWebDemoProject",然后就可以使用瀏覽器訪問這個JavaWeb應(yīng)用的資源了。
3.虛擬目錄的映射方式三
In individual files (with a ".xml" extension) in the
$CATALINA_BASE/conf/[enginename]/[hostname]/directory. The context path and version will be derived from the base name of the file (the file name less the .xml extension). This file will always take precedence over any context.xml file packaged in the web application's META-INF directory.在tomcat服務(wù)器的/conf/Catalina/localhost目錄下添加一個以xml作為擴展名的文件,xml文件的名字可以任意取,比如aa.xml,"The context path and version will be derived from the base name of the file",這一句話的意思翻譯過來就是"context元素的path屬性源自于是這個xml文件的名字",上面提到過,Context元素的path屬性是用來配置虛似目錄的名稱的,所以虛似目錄的名稱就是這個xml文件的名稱。
$CATALINA_BASE指的就是tomcat服務(wù)器根目錄,[enginename]指的是Tomcat服務(wù)器使用的引擎名稱,Tomcat使用的引擎是Catalina在aa.xml文件中添加Context元素映射JavaWeb應(yīng)用,代碼如下:
<Context docBase="F:/JavaWebDemoProject" />
注意:在Context元素中并沒有指明path屬性來設(shè)置虛擬目錄的名稱,那么"F:/JavaWebDemoProject"映射的虛擬目錄名稱是神馬呢,就是當(dāng)前正在編輯的這個xml文件的名稱aa。(http://localhost:8080/aa/1.jsp)
使用這種方式映射虛擬目錄的最大好處是修改了配置文件后不用重啟Tomcat服務(wù)器,比如將aa.xml修改成bb.xml,Tomcat服務(wù)器會自動Undeploying context [/aa],然后自動信息: Deploying configuration descriptor D:/apache-tomcat-7.0.53/conf/Catalina/localhost/bb.xml
Tomcat服務(wù)器配置虛似主機
- 配置虛似主機就是配置一個網(wǎng)站。在Tomcat服務(wù)器配置一個虛擬主機(網(wǎng)站),需要修改conf文件夾下的server.xml這個配置文件,使用Host元素進(jìn)行配置,打開server.xml,可以看到Tomcat服務(wù)器自帶的一個名稱為localhost的虛擬主機(網(wǎng)站):
平時我們將開發(fā)好的JavaWeb應(yīng)用放到webapps文件夾下,然后就可以使用"http://localhost:端口號/JavaWebAppName"的方式去訪問了,其實訪問的就是name是"localhost"的那臺虛擬主機(Host),這臺虛擬主機管理webapps文件夾下的所有web應(yīng)用。
例如:http://localhost:8080/JavaWebDemoProject/1.jsp,這個URL地址訪問的就是名稱是localhost的那臺虛擬主機下的JavaWebDemoProject這個應(yīng)用里面的1.jsp這個web資源。
<Host name="www.yydcdut.com" appBase="F:/JavaWebApps"> </Host>這里我們新配置一個虛擬主機,虛擬主機的name是"www.yydcdut.com",虛擬主機"www.yydcdut.com"現(xiàn)在管理著JavaWebApps文件夾下的所有web應(yīng)用,平時我們在互聯(lián)網(wǎng)上使用域名"www.baidu.com"訪問百度的網(wǎng)站時,其實就是在訪問一個名稱是"www.baidu.com"的虛擬主機,所以當(dāng)我們要訪問name是"www.yydcdut.com"的這個虛擬主機時,就可以使用"域名(www.yydcdut.com)"去訪問,注意一下appBase="F:/JavaWebApps",這里的JavaWebApps文件夾代表的不是一個項目的根目錄,而是一個存放了一個或者多個JavaWeb應(yīng)用的文件夾。
JavaWeb應(yīng)用的組成結(jié)構(gòu)
WebRoot →Web應(yīng)用所在目錄,一般情況下虛擬目錄要配置到此文件夾當(dāng)中。
┝WEB-INF:此文件夾必須位于WebRoot文件夾里面,而且必須以這樣的形式去命名,字母都要大寫。
┝web.xml:配置文件,有格式要求,此文件必須以這樣的形式去命名,并且必須放置到WEB-INF文件夾中。
web.xml的格式可以直接從Tomcat中參考得到:找到Tomcat目錄下的webapps/ROOT/WEB-INF這個目錄下的web.xml文件,把這個文件拷貝到我們新建的WEB-INF文件夾中,并修改這個web.xml文件,把里面的注釋刪除掉,只留下如下所示的代碼即可:
<?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <display-name>Welcome to Tomcat</display-name> <description> Welcome to Tomcat </description></web-app>打包JavaWeb應(yīng)用
在Java中,使用"jar"命令來對將JavaWeb應(yīng)用打包成一個War包,范例:將JavaWebDemoProject這個JavaWeb應(yīng)用打包成war包
執(zhí)行完之后,就可以得到一個war文件,平時開發(fā)完JavaWeb應(yīng)用后,一般都會將JavaWeb應(yīng)用打包成一個war包,然后將這個war包放到Tomcat服務(wù)器的webapps目錄下,當(dāng)Tomcat服務(wù)器啟動時,就會自動將webapps目錄下的war包解壓。
比如現(xiàn)在將war文件放到放到Tomcat服務(wù)器的webapps目錄下,Tomcat服務(wù)器啟動后會自動"Deploying web application",將這個war文件解壓縮。
Tomcat的體系結(jié)構(gòu)
Tomcat服務(wù)器的啟動是基于一個server.xml文件的,Tomcat啟動的時候首先會啟動一個Server,Server里面就會啟動Service,Service里面就會啟動多個"Connector(連接器)",每一個連接器都在等待客戶機的連接,當(dāng)有用戶使用瀏覽器去訪問服務(wù)器上面的web資源時,首先是連接到Connector(連接器),Connector(連接器)是不處理用戶的請求的,而是將用戶的請求交給一個Engine(引擎)去處理,Engine(引擎)接收到請求后就會解析用戶想要訪問的Host,然后將請求交給相應(yīng)的Host,Host收到請求后就會解析出用戶想要訪問這個Host下面的哪一個Web應(yīng)用,一個web應(yīng)用對應(yīng)一個Context。
<?xml version='1.0' encoding='utf-8'?><Server port="8005" shutdown="SHUTDOWN"> <Service name="Catalina"> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="conf/.keystore" keystorePass="123456"/> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> <Engine name="Catalina" defaultHost="localhost"> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.accessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host> <Host name="www.gacl.cn" appBase="F:/JavaWebApps"> <Context path="" docBase="F:/JavaWebApps/JavaWebDemo1"/> </Host> </Engine> </Service></Server>
生成Tomcat服務(wù)器的數(shù)字證書
SUN公司提供了制作證書的工具keytool, 在JDK 1.4以后的版本中都包含了這一工具,它的位置為<JAVA_HOME>/bin/keytool.exe
keytool -genkey -alias tomcat -keyalg RSA
使用keytool生成一個名字為tomcat的證書,存放在.keystore這個密鑰庫中

命令執(zhí)行完之后,操作系統(tǒng)的用戶文件夾下面就會生成一個.keystore文件。
使用命令:keytool -list -keystore .keystore查看.keystore密鑰庫里面的所有證書

配置https連接器
將生成的.keystore密鑰庫文件拷貝到Tomcat服務(wù)器的conf目錄下,修改server.xml文件,配置https連接器,代碼如下:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="conf/.keystore" keystorePass="123456"/>
在server.xml文件中配置了一個端口是8443的加密連接器,瀏覽器訪問8443端口的連接器時,將會以加密的方式來訪問web服務(wù)器,這個連接器收到瀏覽器的請求后,將會向瀏覽器出示一份數(shù)字證書,瀏覽器再用數(shù)字證書里面的公鑰來加密數(shù)據(jù),keystoreFile="conf/.keystore" 用來指明密鑰庫文件的所在路徑,服務(wù)器從密鑰庫中提取證書時需要密碼,keystorePass="123456"指明密鑰庫的訪問密碼。
使用"https://localhost:8443/"訪問8443的加密連接器
由于密鑰庫里面的證書是我們手工生成的,沒有經(jīng)過CA的認(rèn)證,所以使用"https://localhost:8443/"訪問8443的加密連接器,瀏覽器會出現(xiàn)"證書錯誤,導(dǎo)航已阻止",瀏覽器認(rèn)為當(dāng)前要訪問的這個主機是不安全的,不推薦繼續(xù)訪問,點擊“繼續(xù)瀏覽此網(wǎng)站(不推薦)”就可以繼續(xù)訪問了,如下圖所示:


我是天王蓋地虎的分割線
參考:http://m.survivalescaperooms.com/xdp-gacl/p/3744053.html
新聞熱點
疑難解答