Tomcat簡(jiǎn)介 ?
一、Tomcat背景
自從JSP發(fā)布之后,推出了各式各樣的JSP引擎。Apache Group在完成GNUJSP1.0的開發(fā)以后,開始考慮在SUN的JSWDK基礎(chǔ)上開發(fā)一個(gè)可以直接提供Web服務(wù)的JSP服務(wù)器,當(dāng)然同時(shí)也支持Servlet, 這樣Tomcat就誕生了。
Tomcat是jakarta項(xiàng)目中的一個(gè)重要的子項(xiàng)目,其被JavaWorld雜志的編輯選為2001年度最具創(chuàng)新的java產(chǎn)品,同時(shí)它又是sun公司官方推薦的servlet和jsp容器,因此其越來(lái)
越多的受到軟件公司和開發(fā)人員的喜愛(ài)。servlet和jsp的最新規(guī)范都可以在tomcat的新版本中得到實(shí)現(xiàn)。其次,
Tomcat是完全免費(fèi)的軟件,任何人都可以從互聯(lián)網(wǎng)上自由地下載。Tomcat與Apache的組合相當(dāng)完美。
?
二、
Tomcat
目錄
tomcat
|---bin Tomcat:
存放啟動(dòng)和關(guān)閉tomcat腳本
;
|---conf Tomcat:存放
不同的配置文件(server.xml和web.xml);
|---doc:存放Tomcat文檔;
|---lib
/japser/common
:存放
Tomcat運(yùn)行需要的庫(kù)文件(JARS);
|---logs:存放Tomcat執(zhí)行時(shí)的LOG文件;
|---src:存放Tomcat的源代碼;
|---webapps:Tomcat的主要Web發(fā)布目錄(包括
應(yīng)用程序示例
);
|---work:
存放jsp編譯后產(chǎn)生的class文件
;
三、Tomcat類加載
???
Bootstrap($JAVA_HOME/jre/lib/ext/*.jar)
System($CLASSPATH/*.class
和指定的
jar)
Common($CATALINA_HOME/common
下的
classes,lib,endores
三個(gè)子目錄
)
Catalina ($CATALINA_HOME/server/
下的
classes
和
lib
目錄僅對(duì)
Tomcat
可見
)
&Shared($CATALINA_HOME/shared/
下的
classes
和
lib
目錄以及
$CATALINA_HOME/lib
目錄
)
僅對(duì)
Web
應(yīng)用程序可見
,
對(duì)
Tomcat
不可見
WebApp($WEBAPP/Web-INF/*
僅對(duì)該
WEB
應(yīng)用可見
classes/*.class lib/*.jar)
加載類和資源的順序?yàn)椋?/font>
1
、
/Web-INF/classes
2
、
/Web-INF/lib/*.jar
3
、
Bootstrap
4
、
System
5
、
$CATALINA_HOME/common/classes
6
、
$CATALINA_HOME/common/endores/*.jar
7
、
$CATALINA_HOME/common/lib/*.jar
8
、
$CATALINA_HOME/shared/classes
9
、
$CATALINA_HOME/shared/lib/*.jar
?
四、
server.xml
配置簡(jiǎn)介
:
下面講述這個(gè)文件中的基本配置信息,更具體的配置信息請(qǐng)參考
tomcat
的文檔:
????server:
??????????1
、
port
指定一個(gè)端口,這個(gè)端口負(fù)責(zé)監(jiān)聽關(guān)閉
tomcat
的請(qǐng)求
??????????2
、
shutdown
指定向端口發(fā)送的命令字符串
????service:
??????????1
、
name
指定
service
的名字
????Connector (
表示客戶端和
service
之間的連接
)
:
??????????1
、
port
指定服務(wù)器端要?jiǎng)?chuàng)建的端口號(hào),并在這個(gè)斷口監(jiān)聽來(lái)自客戶端的請(qǐng)求
??????????2
、
minProcessors
服務(wù)器啟動(dòng)時(shí)創(chuàng)建的處理請(qǐng)求的線程數(shù)
??????????3
、
maxProcessors
最大可以創(chuàng)建的處理請(qǐng)求的線程數(shù)
??????????4
、
enableLookups
如果為
true
,則可以通過(guò)調(diào)用
request.getRemoteHost()
進(jìn)行
DNS
查
詢來(lái)得到遠(yuǎn)程客戶端的實(shí)際主機(jī)名,若為 false 則不進(jìn)行 DNS 查詢,而是返回其 ip
地址
??????????5
、
redirectPort
指定服務(wù)器正在處理
http
請(qǐng)求時(shí)收到了一個(gè)
SSL
傳輸請(qǐng)求后重定向的
端口號(hào)
??????????6
、
acceptCount
指定當(dāng)所有可以使用的處理請(qǐng)求的線程數(shù)都被使用時(shí),可以放到處理
隊(duì)列中的請(qǐng)求數(shù),超過(guò)這個(gè)數(shù)的請(qǐng)求將不予處理
??????????7
、
connectionTimeout
指定超時(shí)的時(shí)間數(shù)
(
以毫秒為單位
)
????Engine (
表示指定
service
中的請(qǐng)求處理機(jī),接收和處理來(lái)自
Connector
的請(qǐng)求
)
:
??????????1
、
defaultHost
指定缺省的處理請(qǐng)求的主機(jī)名,它至少與其中的一個(gè)
host
元素的
name
屬性值是一樣的
????Context (
表示一個(gè)
web
應(yīng)用程序
)
:
??????????1
、
docBase
應(yīng)用程序的路徑或者是
WAR
文件存放的路徑
??????????2
、
path
表示此
web
應(yīng)用程序的
url
的前綴,這樣請(qǐng)求的
url
為
http://localhost:8080/path/****
??????????3
、
reloadable
這個(gè)屬性非常重要,如果為
true
,則
tomcat
會(huì)自動(dòng)檢測(cè)應(yīng)用程序的
/WEB-INF/lib 和 /WEB-INF/classes 目錄的變化,自動(dòng)裝載新的應(yīng)用程序,我們可
以在不重起
tomcat
的情況下改變應(yīng)用程序
????host
(
表示一個(gè)虛擬主機(jī)
)
:
??????????1
、
name
指定主機(jī)名
??????????2
、
appBase
應(yīng)用程序基本目錄,即存放應(yīng)用程序的目錄
??????????3
、
unpackWARs
如果為
true
,則
tomcat
會(huì)自動(dòng)將
WAR
文件解壓,否則不解壓,直接
從
WAR
文件中運(yùn)行應(yīng)用程序
????Logger (
表示日志,調(diào)試和錯(cuò)誤信息
)
:
??????????1
、
className
指定
logger
使用的類名,此類必須實(shí)現(xiàn)
org.apache.catalina.Logger
接口
??????????2
、
prefix
指定
log
文件的前綴
??????????3
、
suffix
指定
log
文件的后綴
??????????4
、
timestamp
如果為
true
,則
log
文件名中要加入時(shí)間,如下
例
:localhost_log.2001-10-04.txt
??Realm (
表示存放用戶名,密碼及
role
的數(shù)據(jù)庫(kù)
)
:
??????????1
、
className
指定
Realm
使用的類名,此類必須實(shí)現(xiàn)
org.apache.catalina.Realm
接口
?? Valve (
功能與
Logger
差不多,其
prefix
和
suffix
屬性解釋和
Logger
中的一樣
)
:
??????????1
、
className
指定
Valve
使用的類名,如用
org.apache.catalina.valves.AccessLogValve
類可以記錄應(yīng)用程序的訪問(wèn)信息
????directory
(指定
log
文件存放的位置):
??? 1
、
pattern
有兩個(gè)值,
common
方式記錄遠(yuǎn)程主機(jī)名或
ip
地址,用戶名,日期,第一行
請(qǐng)求的字符串, HTTP 響應(yīng)代碼,發(fā)送的字節(jié)數(shù)。 combined 方式比 common 方式記
錄的值更多
?
五、
web.xml
配置簡(jiǎn)介
:
1 、默認(rèn) ( 歡迎 ) 文件的設(shè)置
在 tomcat4\conf\web.xml 中, <welcome-file-list> 與 IIS 中的默認(rèn)文件意思相同。
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
?
2
、報(bào)錯(cuò)文件的設(shè)置
<error-page>
<error-code>404</error-code>
<location>/notFileFound.jsp</location>
</error-page>
<error-page>
<exception-type>java.lang.NullPointerException</exception-type>
<location>/null.jsp</location>
</error-page>
如果某文件資源沒(méi)有找到,服務(wù)器要報(bào) 404 錯(cuò)誤,按上述配置則會(huì)調(diào)用 \webapps\ROOT\notFileFound.jsp 。
如果執(zhí)行的某個(gè) JSP 文件產(chǎn)生 NullPointException ,則會(huì)調(diào)用 \webapps\ROOT\null.jsp
?
3
、會(huì)話超時(shí)的設(shè)置
設(shè)置 session 的過(guò)期時(shí)間,單位是分鐘;
<session-config>
<session-timeout>30</session-timeout>
</session-config>
?
4
、過(guò)濾器的設(shè)置
<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>
?
過(guò)濾:
1) 身份驗(yàn)證的過(guò)濾 Authentication Filters
2) 日志和審核的過(guò)濾 Logging and Auditing Filters
3) 圖片轉(zhuǎn)化的過(guò)濾 Image conversion Filters
4) 數(shù)據(jù)壓縮的過(guò)濾 Data compression Filters
5) 加密過(guò)濾 Encryption Filters
6) Tokenizing Filters
7) 資源訪問(wèn)事件觸發(fā)的過(guò)濾 Filters that trigger resource access events XSL/T 過(guò)濾 XSL/T filters
9) 內(nèi)容類型的過(guò)濾 Mime-type chain Filter 注意監(jiān)聽器的順序,如:先安全過(guò)濾,然后資源,
然后內(nèi)容類型等,這個(gè)順序可以自己定。
?
六、管理
?
???1
、用戶配置
?????
在進(jìn)行具體
Tomcat
管理之前,先給
tomcat
添加一個(gè)用戶,使這個(gè)用戶有權(quán)限來(lái)進(jìn)行管理。
?????
打開
conf
目錄下的
tomcat-users.xml
文件,在相應(yīng)的位置添加下面一行:
??? <user name="user" password="user" roles="standard,manager"/>
???
然后重起
tomcat
,在瀏覽器中輸入
http://localhost:8080/manager/
,會(huì)彈出對(duì)話框,輸入上面的用戶
名和密碼即可。
?
???2
、應(yīng)用程序列表