十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊
量身定制 + 運營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
1、TOMCAT配置文件:

寧洱網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站開發(fā)等網(wǎng)站項目制作,到程序開發(fā),運營維護(hù)。創(chuàng)新互聯(lián)從2013年成立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
$CATALINA_HOME/conf/web.xml配置簡介
servlet
servlet-namedefault/servlet-name
servlet-classorg.apache.catalina.servlets.DefaultServlet/servlet-class
init-param
param-namedebug/param-name
param-value0/param-value
/init-param
init-param
param-namelistings/param-name
param-valuetrue/param-value
/init-param
load-on-startup1/load-on-startup
/servlet
說明:servlet-name:定義Servlet的名字。servlet-class:指定實現(xiàn)這個Servlet的類。init-param:定義Servlet的初始化參數(shù)(包括參數(shù)名和參數(shù)值),一個 servlet元素中可以有多個init-param元素。load-on-startup:指定當(dāng)Web應(yīng)用啟動時,裝載Servlet的次序。當(dāng)這個值為正數(shù)或零,Servlet容器先加載數(shù)值小的Servlet,再一次加載其他數(shù)值大的Servlet。如果這個值為負(fù)數(shù)或沒有設(shè)定,Servlet將在Web客戶首次訪問這個Servlet時加載它。
session-config
session-timeout30/session-timeout
/session-config
a.如果某文件資源沒有找到,服務(wù)器要報404錯誤,按下述配置則會調(diào)用\webapps\ROOT\notFileFound.jsp
error-page
error-code404/error-code
location/notFileFound.jsp/location
/error-page
b.如果執(zhí)行的某個JSP文件產(chǎn)生NullPointException,則會調(diào)用\webapps\ROOT\null.jsp
error-page
exception-typejava.lang.NullPointerException/exception-type
location/null.jsp/location
/error-page
welcome-file-list
welcome-fileindex.html/welcome-file
welcome-fileindex.htm/welcome-file
welcome-fileindex.jsp/welcome-file
/welcome-file-list
默認(rèn)Web應(yīng)用的首頁文件的設(shè)置
報錯文件的設(shè)置
session 會話過期時間的設(shè)置,單位是分鐘
servlet的設(shè)置
filter過濾器的設(shè)置
filter
filter-nameFilterSource/filter-name
filter-classproject4. FilterSource /filter-class
/filter
filter-mapping
filter-nameFilterSource/filter-name
url-pattern/WwwServlet/url-pattern
(url-pattern/haha/*/url-pattern)
/filter-mapping
2、TOMCAT的目錄結(jié)構(gòu)
/bin:存放windows或Linux平臺上啟動和關(guān)閉Tomcat的腳本文件
/conf:存放Tomcat服務(wù)器的各種全局配置文件,其中最重要的是server.xml和web.xml
/doc:存放Tomcat文檔
/server:包含三個子目錄:classes、lib和webapps
/server/lib:存放Tomcat服務(wù)器所需的各種JAR文件
/server/webapps:存放Tomcat自帶的兩個WEB應(yīng)用admin應(yīng)用和 manager應(yīng)用
/common/lib:存放Tomcat服務(wù)器以及所有web應(yīng)用都可以訪問的jar文件
/shared/lib:存放所有web應(yīng)用都可以訪問的jar文件(但是不能被Tomcat服務(wù)器訪問)
/logs:存放Tomcat執(zhí)行時的日志文件
/src:存放Tomcat的源代碼
/webapps:Tomcat的主要Web發(fā)布目錄,默認(rèn)情況下把Web應(yīng)用文件放于此目錄
/work:存放JSP編譯后產(chǎn)生的class文件
配置文件一般都在conf文件夾里,主要有server.xml,context.xml,tomcat_user.xml,web.xml四個常用配置文件,server主要是服務(wù)器設(shè)置的,例如端口設(shè)置,路徑設(shè)置。context里設(shè)置tomcat數(shù)據(jù)源,用來連接數(shù)據(jù)庫。tomcat_user主要是用戶名和密碼的設(shè)置。web是默認(rèn)首頁等等之類的設(shè)置。
Tomcat服務(wù)器的配置主要集中于tomcat/conf下的catalina.policy, catalina.properties,context.xml、server.xml、tomcat-users.xml、web.xml文件。
server.xml 是tomcat服務(wù)器的核心配置文件,包含了Tomcat的servlet容器(catalina)的所有配置。由于配置的屬性特別多,我們在這里主要講解其中的一部分重要配置。
Server是server.xml的根元素,用于創(chuàng)建一個Server實例,默認(rèn)使用的實現(xiàn)類是org.apache.catalina.core.standardserver.
port:Tomcat監(jiān)聽的關(guān)閉服務(wù)器的端口。
shutdown:關(guān)閉服務(wù)器的指令字符串。
Server內(nèi)嵌的子元素為Listener, GlobalNamingResources, Service.
默認(rèn)配置的5個Listener的含義
GlobalNamingResources中定義了全局命名服務(wù)
該元素用于創(chuàng)建Service實例,默認(rèn)使用org.apache.catalina.core.Standardservice,默認(rèn)情況下,Tomcat僅指定了Service的名稱,值為"Catalina",Service可以內(nèi)嵌的元素為:Listener, Executor, connector, Engine ,其中Listener用于為Service添加生命周期監(jiān)聽器,Executor用于配置Service共享線程池,Connector用于配置Service包含的鏈接器,Engine用于配置Service中鏈接器對應(yīng)的Servlet容器引擎。一個Server服務(wù)器,可以包含多個Service服務(wù)。
默認(rèn)情況下Service并未添加共享線程池配置,如果我們想添加一個線程池,可以在下添加如下配置:
屬性說明
屬性含義
name線程池名稱,用于Connector中指定。
nameprefix所創(chuàng)建的每個線程的名稱前綴,一個單獨的線程名稱為namePrefix+threadNumber.
maxThreads池中最大線程數(shù)。
minSpareThreads活躍線程數(shù),也就是核心池線程數(shù),這些線程不會被銷毀,會一直存在。
maxIdleTime線程空閑時間,超過該時間后,空閑線程會被銷毀,默認(rèn)值為6000 (1分鐘) ,單位毫秒。
maxQueuesize在被執(zhí)行前最大線程排隊數(shù)目,默認(rèn)為Int的最大值,也就是廣義的無限。除非特殊情況,這個值不需要更改,否則會有請求不會被處理的情況發(fā)生。
prestartminSpareThreads啟動線程池時是否啟動minSpareThreads部分線程。默認(rèn)值為false,即不啟動。
threadPriority線程池中線程優(yōu)先級,默認(rèn)值為5,值從1到10。
className
線程池實現(xiàn)類,未指定情況下,默認(rèn)實現(xiàn)類為org.apache.catalina.core.standardThreadExecutor,如果想使用自定義線程池首先需要實現(xiàn)? org.apache.catalina.Executor接口。
JDK工具jconsole.exe觀察線程池被創(chuàng)建
如果不配置共享線程池,那么Catalina各組件在用到線程池時會獨立創(chuàng)建。
Connector用于創(chuàng)建鏈接器實例。默認(rèn)情況下, server.xml配置了兩個鏈接器,一個支持HTTP協(xié)議,一個支持AJP協(xié)議。因此大多數(shù)情況下,我們并不需要新增鏈接器配置,只是根據(jù)需要對已有鏈接器進(jìn)行優(yōu)化。
屬性說明
1) port:端口號,Connector用于創(chuàng)建服務(wù)端Socket并進(jìn)行監(jiān)聽,以等待客戶端請求鏈接。如果該屬性設(shè)置為0,Tomcat將會隨機(jī)選擇一個可用的端口號給當(dāng)前Connector使用。
2)protocol :當(dāng)前Connector支持的訪問協(xié)議。默認(rèn)為HTTP/1.1 ,并采用自動切換機(jī)制選擇一個基于JAVA NIO的鏈接器或者基于本地APR的鏈接器(根據(jù)本地是否含有Tomcat的本地庫判定)。
如果不希望采用上述自動切換的機(jī)制,而是明確指定協(xié)議,可以使用以下值。
Http協(xié)議:
AJP協(xié)議
3) connectionTimeOut: Connector接收鏈接后的等待超時時間,單位為毫秒。-1表示不超時。
4)redirectPort:當(dāng)前Connector不支持SSL(HTTP協(xié)議證書)請求,接收到了一個請求,并且也符合security-constraint約束,需要SSL傳輸,Catalina自動將請求重定向到指定的端口。
5)executor:指定共享線程池的名稱, 也可以通過maxThreads, minSpareThreads等屬性配置內(nèi)部線程池。
6)URIEncoding:用于指定編碼URI的字符編碼,
Tomcat8.x版本默認(rèn)的編碼為UTF-8,Tomcat7.X版本默認(rèn)為ISO-8859-1(解決請求字符串亂碼問題,Tomcat8版本默認(rèn)UTF-8不需要指定URI字符編碼)。
完整的配置如下:
Engine作為Servlet引擎的頂級元素,內(nèi)部可嵌入:Cluster、Listener、Realm、Valve和Host。
屬性說明:
1)name:用于指定Engine的名稱,默認(rèn)為Catalina。該名稱會影響一部分Tomcat的存儲路徑(如臨時文件);
2)defaultHost:默認(rèn)使用虛擬主機(jī)名稱,當(dāng)客戶端請求指向的的主機(jī)無效時將交由默認(rèn)虛擬主機(jī)處理,默認(rèn)為localhost。
Host元素用于配置一個虛擬主機(jī),它支持以下嵌入元素:Alias,cluster,Listener,valve,Realm,context,如果在Engine下配置Realm,那么此配置將在當(dāng)前Engine下的所有Host中共享。同樣,如果在Host中配置Realm , 則在當(dāng)前Host下的所有context中共享。Context中的Realm優(yōu)先級Host的Realm優(yōu)先級Engine中的Realm優(yōu)先級。
屬性說明:
1)name:當(dāng)前Host通用的網(wǎng)絡(luò)名稱,必須與DNS服務(wù)器上的注冊信息一致。Engine中包含的Host必須存在一個名稱與Engine的defaultHost設(shè)置一致。
2)appBase:當(dāng)前Host的應(yīng)用基礎(chǔ)目錄,當(dāng)前Host上部署的web應(yīng)用均在該目錄下(可以是絕對目錄,相對路徑)。默認(rèn)為webapps。
3)unpackWARs:設(shè)置為true, Host在啟動時會將appBase目錄下war包解壓為目錄。設(shè)置為false,Host將直接從war文件啟動。
4)autoDeploy:控制tomcat是否在運行時定期檢測并自動部署新增或變更的web應(yīng)用。
通過給Host添加別名,我們可以實現(xiàn)同一個Host擁有多個網(wǎng)絡(luò)名稱,配置如下:
Context用于配置一個web應(yīng)用,默認(rèn)配置如下:
屬性描述 :
1)docBase:Web應(yīng)用目錄或War包的部署路徑??梢允墙^對路徑,也可以是相對于Host appBase的相對路徑。
2)Path:Web應(yīng)用的Context路徑。如果我們Host名為localhost,則該web應(yīng)用訪問的路徑為:
它支持的內(nèi)嵌元素為:CookieProcessor,Loader,Manager,Realm,Resources,WatchedResource,Jarscanner,Valve.
該配置文件中,主要配置的是Tomcat的用戶,角色等信息,用來控制Tomcat中manager,host-manager的訪問權(quán)限。
web.xml是web應(yīng)用的描述文件, 它支持的元素及屬性來自于servlet規(guī)范定義。在Tomcat中,web應(yīng)用的描述信息包括tomcat/conf/web.xml中默認(rèn)配置以及web應(yīng)用WEB-INE/web.xml下的定制配置。
我們可以通過context-param添加ServletContext初始化參數(shù),它配置了一個鍵值對,這樣我們可以在應(yīng)用程序中使用javax.servlet.ServletContext.getInitParameter()方法獲取參數(shù)。 可以直接在servlet中進(jìn)行應(yīng)用 。
5.2 會話配置
session-config用于配置web應(yīng)用會話,包括超時時間Cookie配置以及 會話追蹤模式 。它將覆蓋server.xml和context.xml
1)session-timeout:超時時間,單位分鐘。
2)cookie-config:用于配置會話追蹤C(jī)ookie
nane:Cookie的名稱
domain:Cookie的域名
path: Cookie的路徑
comment: 注釋
http-only:cookie只能通過HTTP方式進(jìn)行訪問, JS無法讀取或修改,此項可以增加網(wǎng)站訪問的安全性。
secuze :設(shè)置true則此cookie只能通過HTTPS連接傳遞到服務(wù)器,而HTTP連接則不會傳遞該信息。注意是從瀏覽器傳遞到服務(wù)器,服務(wù)器端的Cookie對像不受此項影響。
max-age:以秒為單位表示cookie的生存期,默認(rèn)為-1表示是會話Cookie ,瀏覽器關(guān)閉時就會消失。
3)tracking-mode:用于配置會話追蹤模式,Servlet3.0版本中支持追蹤模式:COOKIE,URL,SSL
ACOOKIE:通過HTTP Cookie 追蹤會話是最常用的會話追蹤機(jī)制, 而且Servlet規(guī)范也要求所有的Servlet規(guī)范都需要支持Cookie追蹤。
B.URL:URL重寫是最基本的會話追蹤機(jī)制。當(dāng)客戶端不支持Cookie時,可以采用URI重寫的方式。當(dāng)采用URI追蹤模式時,請求路徑需要包含會話標(biāo)識信息,Servlet容器會根據(jù)路徑中的會話標(biāo)識設(shè)置請求的會話信息。如:"http: //;jessionid=1234567890。
C.SSL:對于SSL請求,通過SSL會話標(biāo)識確定請求會話標(biāo)識。
Servlet的配置主要是兩部分,servlet和servlet-mapping;
配置說明:
1)sexvlet-name:指定servle的名稱,該屬性在web.xml中唯一。
2)servlet-class:用于指定servlet類名
3)init-param:用于指定servlet的初始化參數(shù), 在應(yīng)用中可以通過HttpServlet.getInitParameter獲取。
4) load-on-startup:用于控制在Web應(yīng)用啟動時,Servlet的加載順序。值小于0, web應(yīng)用啟動時,不加載該servlet,第一次訪問時加載
5)enabled: true ,false。若為false ,表示servlet不處理任何請求。
6)url-pattern:用于指定URL表達(dá)式,一個servlet-mapping可以同時配置多個url-pattern。
Servlet 中文件上傳配置
配置說明:
1)location:存放生成的文件地址。
2) max-file-size:允許上傳的文件最大值。默認(rèn)值為-1,表示沒有限制。
3)max-request-size:針對該multi/form-data請求的最大數(shù)量,默認(rèn)值為-1,表示無限制。
4)file-size-threshold:當(dāng)數(shù)量量大于該值時, 內(nèi)容會被寫入文件。
Listener用于監(jiān)聽servlet中的事件,例如context、request、session對象的創(chuàng)建、修改、刪除,并觸發(fā)響應(yīng)響應(yīng)。Listener是 觀察者模式 的 實現(xiàn) ,在servlet中主要用于context、request、session對象的生命周期進(jìn)行監(jiān)控。在servlet 2.5規(guī)范中共定義了8重Listener。在啟動時,ServletContextListener的執(zhí)行順序與web.xml中的配置順序一致,停止時執(zhí)行順序相反。
配置說明:
1)filter-name:用于指定過濾器名稱,在web.xm1中,過濾器名稱必須唯一。
2)filter-class:過濾器的全限定類名,該類必須實現(xiàn)Filter接口。
3)async-supported:該過濾器是否支持異步。
4)init-param:用于配置Filter的初始化參數(shù),可以配置多個,可以通過 FilterConfig.getInitParameter 獲取
5)url-pattern:指定該過濾器需要攔截的URL。
Tomcat conf/web.xml中配置了web默認(rèn)訪問頁面。
Tomcat啟動后會嘗從上到下的請求順序。
如果在項目的WEB-INF目錄下的web.xml中配置訪問頁面,則會覆蓋Tomcat中的默認(rèn)配置。
error-page用于配置web項目訪問異常時定向的頁面,支持HTTP響應(yīng)碼和異常類兩種形式。優(yōu)化用戶體驗,保證系統(tǒng)安全。
Tomcat中自定義錯誤頁面放入ROOT目錄下。
項目中將錯誤頁面放在web目錄下,并且會覆蓋Tomcat中的配置。
從早期的Tomcat版本開始,就提供了web版的管理控制臺,他們是兩個獨立的web應(yīng)用,位于webapps目錄下。Tomcat提供的管理應(yīng)用有用于管理的Host的host-manager和用于管理web應(yīng)用的manager。
這兩個web應(yīng)用主要作用就是為Tomcat提供了管理后臺,可以通過這兩個應(yīng)用去管理Tomcat中所配置的虛擬主機(jī)、Tomcat中部署的web應(yīng)用、Tomcat占用的JVM內(nèi)存分配、JVM參數(shù)配比等
Host-manager主要用來管理 虛擬主機(jī) 信息。Tomcat啟動之后,可以通過 訪問該web應(yīng)用。host-manager默認(rèn)添加了訪問權(quán)限控制,當(dāng)打開網(wǎng)址時,需要輸入用戶名和密碼(conf/tomcat-users.xml中配置) 。所以要想訪問該頁面,需要在conf/tomcat-users.xml中配置,并分配對應(yīng)的角色:
1)admin-gui:用于控制頁面訪問權(quán)限
2)admin-script:用于控制以簡單文本的形式進(jìn)行訪問
配置如下:
界面:
Manager用來管理部署在當(dāng)前Tomcat上的web應(yīng)用,訪問路徑為 ,同樣manager也添加了頁面訪問控制,因此我們需要為登錄用戶分配角色為:
Server Status查看服務(wù)器狀態(tài),給JVM內(nèi)存優(yōu)化參考數(shù)據(jù)