一、context的作用
context表示web應用的上下文,是連接web應用和伺服器的橋樑。它定義了web應用在伺服器中的路徑和屬性。context的配置對於web應用的運行和訪問有重要的作用。
在tomcatserver.xml中配置context主要有兩種方式:通過全局context定義所有web應用的公共屬性,或者在每個web應用的配置文件中設置context,隔離各個web應用的屬性。
二、全局context的配置
在tomcatserver.xml的Host元素中可以定義全局context,這個定義將應用到所有部署在該伺服器上的web應用。在全局context中可以設置基礎屬性,例如JSP文件的緩存,session的默認超時時間等等。
<Host name="localhost" appBase="webapps"> ... <Context path="" docBase="ROOT" debug="0" reloadable="true"> <!-- 基礎屬性的配置 --> <!-- 緩存JSP文件 --> <!-- 靜態文件的MIME type --> <!-- session的默認超時時間 --> </Context> ... </Host>
三、web應用context的配置
在web應用中定義context比在全局context中定義更具有針對性,可以根據不同web應用的需求設置不同的屬性。context可在web應用的META-INF或WEB-INF目錄下的context.xml文件中進行配置。
<Context path="/mywebapp" debug="0" reloadable="true"> <!-- 特殊屬性的配置 --> <!-- JNDI數據源 --> <!-- session的超時時間 --> <!-- 文件上傳大小 --> </Context>
需要注意的是,如果要在應用程序的web.xml文件中重寫context的屬性,需要將context的reloadable屬性設置為false,即:
<Context path="/mywebapp" debug="0" reloadable="false">
四、context屬性的詳解
context的屬性非常多,根據需求設置不同的屬性有利於優化web應用的性能和安全,下面列舉幾個常用的屬性進行詳解。
1、path屬性
path屬性限定了該web應用的根路徑,這個屬性必須要唯一,不能與其他的web應用重複。默認情況下,沒有明確定義路徑的web應用將被配置為ROOT。可以通過設置一個JSP頁面作為默認頁面來代替網站根目錄的默認index.html或index.jsp。
2、docBase屬性
docBase屬性表示當前web應用的根目錄在文件系統中的路徑。如果該web應用是WAR文件,則docBase屬性是WAR文件的絕對路徑。docBase還支持一個以」~/」結尾的目錄,表示該目錄是相對於tomcat的home目錄的;以」../」或者」./」開頭的路徑表示相對於CATALINA_HOME或者CATALINA_BASE的路徑。
3、reloadable屬性
reloadable屬性表示是否允許在運行時重新載入web應用。對於開發人員來說這個屬性很有用,因為它可以使在應用程序沒有停止的情況下重新載入新的資源。而對於生產環境,不建議開啟reloadable屬性,因為在載入新的資源時可能會帶來一些潛在的問題。
4、debug屬性
debug屬性表示啟動調試模式,主要用於開發人員調試應用程序。如果開啟了debug模式,應用程序會產生大量的調試信息,這些信息會寫入到日誌文件中,因此可能會導致日誌文件佔用過多的磁碟空間。因此在生產環境中也不建議開啟debug模式。
5、session超時時間
session超時時間表示一個應用程序中沒有活動的session將會超時並失效的時間。可以通過設置context中的session超時時間來限制某個session的生存時間,也可以通過設置全局的session超時時間來控制所有應用程序的session超時時間。
以上是一些常見的context屬性的介紹,可以根據不同的需求設置不同的屬性,來達到優化性能和提高安全性的目的。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/301517.html