- TOMCAT的目錄結構
-
- /bin:存放windows或Linux平台上啟動和關閉Tomcat的腳本文件
- /conf:存放Tomcat服務器的各種全局配置文件,其中最重要的是server.xml和web.xml
- /doc:存放Tomcat文檔
- /server:包含三個子目錄:classes、lib和webapps
- /server/lib:存放Tomcat服務器所需的各種JAR文件
- /server/webapps:存放Tomcat自帶的兩個WEB應用admin應用和 manager應用
- /common/lib:存放Tomcat服務器以及所有web應用都可以訪問的jar文件
- /shared/lib:存放所有web應用都可以訪問的jar文件(但是不能被Tomcat服務器訪問)
- /logs:存放Tomcat執行時的日志文件
- /src:存放Tomcat的源代碼
- /webapps:Tomcat的主要Web發布目錄,默認情況下把Web應用文件放於此目錄
- /work:存放JSP編譯后產生的class文件
- WEB應用的目錄結構:假設在$CATALINA_HOME/webapps下有helloapp的web應用
-
- /helloapp:Web應用的根目錄,所有的jsp文件和html文件都在此目錄下
- /helloapp/WEB_INF:存放該web應用發布時的描述文件web.xml
- /helloapp/WEB_INF/class:存放各種class文件,Servlet文件也存放於此目錄下
- /helloapp/WEB_INF/lib:存放各鍾Web應用所需要的jar文件。比如可以存放JDBC驅動程序的JAR文件
- Tomcat加載類和資源的順序為(以helloapp應用為例)
-
- helloapp (/webapps/helloapp/Web-INF/下的classes,lib子目錄中*.calss及*.jar,僅helloapp可以加載)
- Bootstrap ($JAVA_HOME/jre/lib/ext/*.jar)
- System ($CLASSPATH/*.class和CLASSPATH中指定的jar)
- Common ($CATALINA_HOME/common/下的classes,lib,endores子目錄中*.class及*.jar)
- Catalina ($CATALINA_HOME/server/下的classes,lib子目錄中*.calss及*.jar,僅Tomcat可以加載)
- Shared ($CATALINA_HOME/shared/下的classes,lib子目錄中*.calss及*.jar,僅所有Web應用可以加載)
- $CATALINA_HOME/conf/server.xml配置簡介
-
- <Server>
-
- 元素屬性port:指定一個端口,這個端口負責監聽關閉tomcat的請求shutdown:指定向端口發送的命令字符串,通常是“SHUTDOWN”
- <Service>
-
- 元素屬性name:指定service的名字,通常是”Catalina”
- <Connector/>
-
- 元素屬性(表示客戶端和service之間的連接):port:指定服務器端要創建的端口號,並使用這個斷口監聽來自客戶端的請求minProcessors(考察是否有此屬性):服務器端啟動時創建的處理請求的線程數maxProcessors(考察是否有此屬性):最大可以創建的處理請求的線程數maxThreads:服務器創建的最大線程數minSpareThreads:最小剩余線程數maxSpareThreads:最大剩余線程數enableLookups:如果為true,則可以通過調用request.getRemoteHost()進行DNS查詢來得到遠程客戶端的實際主機名,若為false則不進行DNS查詢,而是返回其IP地址redirectPort:指定當服務器正在處理HTTP請求時收到了一個SSL傳輸請求后重定向的端口號acceptCount:指定當所有可以使用的處理請求的線程數都被使用時,可以放到處理隊列中的請求數,超過的請求將不予處理connectionTimeout:指定超時的時間數(以毫秒為單位)disableUploadTimeout:不明debug:不明protocol:不明
- <Engine>
-
- 元素屬性(指定service中的請求處理主機,接收和處理來自Connector的請求)name:指定Engine的名字,通常是”Catalina”defaultHost:指定默認的處理請求的主機名,至少與某個host元素的name屬性值是相同的
- <Context/>
-
- 元素屬性(表示一個web應用程序)docBase:指定此Web應用的絕對或相對路徑,也可以為WAR文件的路徑path:表示此Web應用程序的url的入口,如為“/hello“,則請求的URL為http://localhost:8080/hello/reloadable:如果為true,則Tomcat在運行時會自動監視Web應用的/WEB-INF/lib和/WEB-INF/classes下文件的改動,自動裝載新應用,使我們可以在不重啟Tomcat的情況下更新Web應用
- <Host>
-
- 元素屬性(表示一個虛擬主機)name:指定虛擬主機名字debug:指定日志級別appBase:存放Web應用程序的基本目錄,可以是絕對路徑或相對於$CATALINA_HOME的目錄,默認是$CATALINA_HOME/webappsunpackWARs:如果為true,則tomcat會自動將WAR文件解壓后運行,否則不解壓而直接從WAR文件中運行應用程序autoDeploy:如果為true,表示Tomcat啟動時會自動發布appBase目錄下所有的Web應用(包括新加入的Web應用)deployOnStarup:如果此項為true,表示Tomcat服務器啟動時會自動發布appBase目錄下所有Web應用。如果Web應用在server.xml中沒有相應的<Context>元素,則將采用默認的Context配置。deployOnStarup的默認設置是truealias:指定虛擬主機的別名,可以指定多個別名xmlValidation:不明xmlNamespaceAware:不明
- <Logger/>
-
- 元素屬性(表示日志,調試和錯誤信息)className:指定logger使用的類名,此類必須實現org.apache.catalina.Logger 接口prefix:指定log文件名的前綴(文件名)suffix:指定log文件名的后綴(擴展名)timestamp:如果為true,則log文件名中會加入日期時間,如下例:localhost_log.2006-10-04.txtdirectory:指定log文件存放的目錄
- <Realm/>
-
- 元素屬性(表示存放用戶名,密碼及role的數據庫)className:指定Realm使用的類名,此類必須實現org.apache.catalina.Realm接口resourceName:不明
- <Valve/>
-
- 元素屬性(功能與Logger相似,其prefix和suffix屬性解釋和Logger 中的一樣)className:指定Valve使用的類名,如用org.apache.catalina.valves.AccessLogValve類可以記錄應用程序的訪問信息directory:指定log文件存放的位置pattern:有兩個值,common方式記錄遠程主機名或ip地址、用戶名、日期、第一行請求的字符串、HTTP響應代碼、發送的字節數。combined方式比common方式記錄的值還多
- $CATALINA_HOME/conf/web.xml配置簡介
-
- 默認Web應用的首頁文件的設置
-
- <welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
- <welcome-file-list>
- 報錯文件的設置
-
- a.如果某文件資源沒有找到,服務器要報404錯誤,按下述配置則會調用\webapps\ROOT\notFileFound.jsp
<error-page>
<error-code>404</error-code>
<location>/notFileFound.jsp</location>
</error-page>
b.如果執行的某個JSP文件產生NullPointException,則會調用\webapps\ROOT\null.jsp
<error-page>
<exception-type>java.lang.NullPointerException</exception-type>
<location>/null.jsp</location>
</error-page>
- a.如果某文件資源沒有找到,服務器要報404錯誤,按下述配置則會調用\webapps\ROOT\notFileFound.jsp
- session 會話過期時間的設置,單位是分鍾
-
- <session-config>
<session-timeout>30</session-timeout>
</session-config>
- <session-config>
- servlet的設置
-
- <servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
說明:<servlet-name>:定義Servlet的名字。<servlet-class>:指定實現這個Servlet的類。<init-param>:定義Servlet的初始化參數(包括參數名和參數值),一個 <servlet>元素中可以有多個<init-param>元素。<load-on-startup>:指定當Web應用啟動時,裝載Servlet的次序。當這個值為正數或零,Servlet容器先加載數值小的Servlet,再一次加載其他數值大的Servlet。如果這個值為負數或沒有設定,Servlet將在Web客戶首次訪問這個Servlet時加載它。
- <servlet>
- filter過濾器的設置
<filter>
<filter-name>FilterSource</filter-name>
<filter-class>project4. FilterSource </filter-class>
</filter>
<filter-mapping>
<filter-name>FilterSource</filter-name>
<url-pattern>/WwwServlet</url-pattern>
(<url-pattern>/haha/*</url-pattern>)
</filter-mapping>
過濾:1) 身份驗證的過濾Authentication Filters2) 日志和審核的過濾Logging and Auditing Filters3) 圖片轉化的過濾Image conversion Filters4) 數據壓縮的過濾Data compression Filters5) 加密過濾Encryption Filters6) Tokenizing Filters7) 資源訪問事件觸發的過濾Filters that trigger resource access events XSL/T 過濾XSL/T filters9) 內容類型的過濾Mime-type chain Filter注意監聽器的順序,如:先安全過濾,然后資源,然后內容類型等,順序可以自己定。
- Tomcat管理
-
- 管理員帳戶配置($CATALINA_HOME/conf/tomcat-users.xml)在tomcat-users.xml文件相應的位置添加一行:<user name="user" password="user" roles="standard,manager"/>用來添加一個管理員帳戶。然后重起tomcat,在瀏覽器中輸入地址http://localhost:8080/manager/,在彈出的對話框輸入上面的用戶名和密碼即可
- Web應用列表在瀏覽器中輸入http://localhost:8080/manager/list,瀏覽器將會列出目前存在的所有Web應用的信息,分別為:Web應用程序的路徑、當前狀態、連接這個Web應用的Session數目
- 重新裝載Web應用程序在瀏覽器中輸入 http://localhost:8080/manager/reload?path=/examples,瀏覽器顯示如下:OK - Reloaded application at context path /examples,這表示example應用程序裝載成功,如果我們將server.xml的Context元素的reloadable屬性設為true,則沒必要利用這種方式重新裝載Web應用程序,因為tomcat會自動裝載。
- 顯示Session信息在瀏覽器中輸入http://localhost:8080/manager/sessions?path=/examples,瀏覽器顯示如下:OK - Session information for application at context path /examples Default maximum session inactive interval 30 minutes
- 啟動和關閉應用程序在瀏覽器中輸入http://localhost:8080/manager/start?path=/example和http://localhost:8080/manager/stop?path=/examples分別啟動和關閉examples應用程序。
- 部署及撤銷部署WAR有兩種組織方式,一種是按一定的目錄結構組織文件,一種是一個后綴為WAR的壓縮包,因此它的部署方式也有兩種:a.在瀏覽器中輸入:http://localhost:8080/manager/install?path=/examples&war=file:/c:\examples,就會將按目錄結構組織的WAR部署b.在瀏覽器中輸入:http://localhost:8080/manager/install?path=/examples&war=jar:file:/c:\examples.war!/,就會將按壓縮包組織的WAR部署,注意此url后半部分一定要有!/號部署后就可以用:http://localhost:8080/examples訪問了在瀏覽器中輸入:http://localhost:8080/manager/remove?path=/examples,就會撤銷剛才部署的應用程序