1. 程式人生 > >tomcat載入應用程式配置檔案順序

tomcat載入應用程式配置檔案順序

    對於三大框架,例如ssh或ssm,在tomcat容器啟動時配置檔案載入順序是?

針對這樣的疑問,我大概知道每個專案的載入都是從web.xml開始的,所以我們以下面的配置檔案為例,說明載入過程,我的專案web.xml配置檔案如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 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">

	<context-param>
		<param-name>log4jConfigLocation</param-name>
		<param-value>/WEB-INF/classes/log4j.properties</param-value>
	</context-param>
	<listener>
		<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
	</listener>

	<!--  戶登入安全filter  -->
	
	<filter>
		<filter-name>encodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

		 
	<!--  新增CAS filter   begin -->
	<!-- 填寫退出的URL -->
	<context-param>
		<param-name>casServerLogoutUrl</param-name>
		<param-value>https://cass.cdv.com:8443/cas/logout</param-value>
	</context-param>
	<context-param>
		<param-name>serverName</param-name>
		<param-value>http://192.166.0.117:8080</param-value>
	</context-param>
	<context-param>
		<param-name>casServerLoginUrl</param-name>
		<param-value>https://cass.cdv.com:8443/cas/login</param-value>
	</context-param>
	<listener>
		<listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
	</listener>

	<!-- CAS sign out -->
	<filter>
		<filter-name>CAS Single Sign Out Filter</filter-name>
		<!--  the class to cometrue Filter Interface -->
		<filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>CAS Single Sign Out Filter</filter-name>
		<!-- the webpage to filter  -->
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<!--單點退出配置-->
	<!-- CAS login首次登陸攔截跳轉登陸頁面 -->
	<filter>
		<filter-name>CAS Filter</filter-name>
		<filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
		<!-- 初始化filter,預設的設定. -->
		<init-param>
			<param-name>casServerLoginUrl</param-name>
			<!-- 統一認證伺服器地址 -->
			        <param-value>https://cass.cdv.com:8443/cas/login</param-value> 

		</init-param>
		<init-param>
			<param-name>serverName</param-name>
			<!-- 專案所在的伺服器地址和埠號,認證伺服器回撥的URL-->
			<param-value>http://192.166.0.84:8080</param-value>
		</init-param>
	</filter>

	<!-- 過濾哪些網站 -->
	<filter-mapping>
		<filter-name>CAS Filter</filter-name>
		<!-- 專案中所要攔截的url -->
		<url-pattern>/*</url-pattern> 
	
	</filter-mapping>

	<!-- CAS Validation Filter 再次驗證ticket-->
	<filter>
		<filter-name>CAS Validation Filter</filter-name>
		<filter-class>
			org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>
		<!-- 初始化Filter,預設設定. -->
		<init-param>
			<param-name>casServerUrlPrefix</param-name>
			 <param-value>https://cass.cdv.com:8443/cas</param-value> 

		</init-param>
		<init-param>
			<param-name>serverName</param-name>
			<!-- 驗證成功轉到的地址 -->
			<param-value>http://192.166.0.117:8080</param-value>
		</init-param>
	</filter>
	<!-- 過濾所有的網頁 -->
	<filter-mapping>
		<filter-name>CAS Validation Filter</filter-name>
		<!-- 專案中所要攔截的url -->
		 <url-pattern>/*</url-pattern>
	</filter-mapping>
	
	<listener>
		<listener-class>com.cdv.vms.web.listener.SessionListener</listener-class>
	</listener>


	<!--  新增CAS filter  end -->

	<!--  新增security filter 控制選單的顯示和隱藏   begin -->
	<filter>
		<description>login security filter</description>
		<display-name>SecurityFilter</display-name>
		<filter-name>SecurityFilter</filter-name>
		<filter-class>com.cdv.ms.web.filter.SecurityFilter</filter-class>
		<!-- 不需要過濾則直接轉到主介面   /user/toMain/-->
		<init-param>
			<param-name>noFilter</param-name>
			<param-value>main.jsp</param-value>
		</init-param>
		<init-param>
			<param-name>noFilter1</param-name>
			<param-value>/publish/showV/</param-value>
		</init-param>
	</filter>
	<!-- 過濾內容 -->
	<filter-mapping>
		<filter-name>SecurityFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<!--  新增security filter  end -->


	<servlet>
		<servlet-name>springMVC</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:springMVC.xml,classpath:applicationContext.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>springMVC</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>
	<!-- upload start -->
	<servlet>
		<servlet-name>TokenServlet</servlet-name>
		<servlet-class>com.cdv.upload.servlet.TokenServlet</servlet-class>
		<load-on-startup>0</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>TokenServlet</servlet-name>
		<url-pattern>/tk</url-pattern>
	</servlet-mapping>
	<servlet>
		<servlet-name>StreamServlet</servlet-name>
		<servlet-class>com.cdv.upload.servlet.StreamServlet</servlet-class>
		<load-on-startup>0</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>StreamServlet</servlet-name>
		<url-pattern>/upload</url-pattern>
	</servlet-mapping>
	<servlet>
		<servlet-name>FormDataServlet</servlet-name>
		<servlet-class>com.cdv.upload.servlet.FormDataServlet</servlet-class>
		<load-on-startup>0</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>FormDataServlet</servlet-name>
		<url-pattern>/fd</url-pattern>
	</servlet-mapping>
	<!-- upload end -->
	
	<error-page>
		<error-code>404</error-code>
		<location>/common/404.jsp</location>
	</error-page>
	<error-page>
		<error-code>505</error-code>
		<location>/common/505.jsp</location>
	</error-page>

	<!--   welcome main.jsp -->
	<welcome-file-list>
		<welcome-file>main.jsp</welcome-file>
	</welcome-file-list>
</web-app>
tomcat容器載入

一、載入順序

   1、對於不同的標籤:啟動一個web專案的時候,web容器去讀取它的配置檔案web.xml,讀取web.xml檔案的時候那應該先讀取哪些節點呢?和他們配置的位置沒有關係。讀取節點的順序是:listener>filter>servlet。上述配置中還存在一個<context-param>標籤,這個標籤用來提供應用程式上下文資訊,<context-param>可以寫在任意位置上,因此載入web.xml標籤的順序為:context-param>listener>filter>servlet

   2、對於同類標籤


filter:在配置filter的時候,web.xml中可以定義多個filter,與filter相關的節點有filter-name、filter-class,filter-mapping必須出現在filter-name標籤後,啟動容器初始化每個filter的時候,初始化順序是依照filter-mapping配置節點出現的順序來呼叫的doFilter()方法的

servlet:也filter一樣。但當我們設定load-on-startup元素的時候,這個元素的值必須是一個整數。

如果為負數或者不存在的時候,容器會在該servlet被呼叫的時候載入這個servlet。

如果為正整數或0,容器在載入的時候會保證較小的值先被載入。

如果值相等,容器會自動選擇先載入誰。

由此可知,上述的web.xml系統會如何載入各個項的了。

二、各個標籤的說明

web.xml常用元素

<web-app>

<display-name></display-name>:定義了web應用的名字。

<description></description>:聲明瞭web應用描述資訊。

<context-param></context-param>:宣告應用範圍內初始化引數。

<filter></filter>:過濾元素,將一個名字與一個實現javax.servlet.Filter介面的類相關聯。

<filter-mapping></filter-mapping>:一旦命名了過濾器,就要利用filter-mapping元素把它與一個或多個servlet或jsp頁面關聯。

<listener></listener>:servlet API版本2.3增加了事件監聽支援,事件監聽程式在建立、修改和刪除回話或servlet環境時得到通知。

<servlet></servlet>:在servlet或jsp頁面執行初始化引數或定製URL時,必須首先命名servlet或jsp頁面。

<servlet-mapping></servlet-mapping>:伺服器一般為servlet提供一個預設的url。在更改預設url時,使用servlet-mapping元素。

<session-config></session-config>:設定回話超時時間,預設單位分鐘。

<mime-mapping></mime-mapping>:傳送到客戶端為什麼型別。

<welcome-file-list></welcome-file-list>:指示伺服器在收到引用一個目錄名而不是檔名的URL時,使用哪個檔案。

<error-page></error-page>:返回特定http狀態碼時,或者特定型別異常丟擲時,能夠制定要顯示的頁面。

<taglib></taglib>:對標記庫描述檔案指定別名。

</webk-app>

三、常用元素相關配置

1、上下文引數配置

<context-param>   
    <param-name>ContextParameter</para-name>   
    <param-value>test</param-value>   
    <description>It is a test parameter.</description>   
  </context-param> 

2、過濾器配置
<filter>
		<filter-name>encodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

3、監聽器配置
<listener>   
      <listerner-class>listener.SessionListener</listener-class>   
  </listener> 

4、servlet配置
	<servlet>
		<servlet-name>springMVC</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:springMVC.xml,classpath:applicationContext.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>springMVC</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>
5、回話超時設定
 <session-config>   
      <session-timeout>120</session-timeout>   
   </session-config> 

6、MIME型別配置
<mime-mapping>   
      <extension>htm</extension>   
      <mime-type>text/html</mime-type>   
   </mime-mapping>  

7、指定歡迎頁配置
 <welcome-file-list>   
      <welcome-file>index.jsp</welcome-file>   
      <welcome-file>index.html</welcome-file>   
      <welcome-file>index.htm</welcome-file>   
   </welcome-file-list>   

8、配置錯誤頁面配置
<error-page>
		<error-code>404</error-code>
		<location>/common/404.jsp</location>
	</error-page>
	<error-page>
		<error-code>505</error-code>
		<location>/common/505.jsp</location>
	</error-page>


相關推薦

tomcat載入應用程式配置檔案順序

    對於三大框架,例如ssh或ssm,在tomcat容器啟動時配置檔案載入順序是? 針對這樣的疑問,我大概知道每個專案的載入都是從web.xml開始的,所以我們以下面的配置檔案為例,說明載入過程,我的專案web.xml配置檔案如下: <?xml version

無法為具有固定名稱“System.Data.SqlClient”的 ADO.NET 提供程式載入應用程式配置檔案中註冊的實體框架提供程式型別“System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer”。請

Windows服務中程式釋出之後會如下錯誤: 無法為具有固定名稱“System.Data.SqlClient”的 ADO.NET 提供程式載入在應用程式配置檔案中註冊的實體框架提供程式型別“System.Data.Entity.SqlServer.SqlProviderServices, EntityFra

根據登錄檔讀取應用程式配置檔案,根據XML文字動態生成樹狀列表,自定義SAP GUI登入頁面

 技術要點 1.根據SAPGUI應用程式名動態讀取登入配置檔案的絕對路徑,如果應用程式未安裝,則提示相應訊息。 2. 根據獲取的路徑得到配置檔案的XML文字字串,其中包含所有的登入資訊,呼叫上一篇日誌解析XML的類方法,得到登入介面結構的文件例項 3.通過文件例項利用控制

Android安全/開發基礎--15--應用程式配置檔案詳解(AndroidManifest.xml)

================================================================= Android應用程式都需要有清單檔案。該檔案必須命名為AndroidManifest.xml且必須防止在應用程式根目錄中。它聲明

.net的EF框架中提示:在應用程式配置檔案中找不到名為“****”的連線字串。

根據問題描述就可以找到問題原因,配置檔案中找不到名為“****”的連線字串,所以你在配置檔案中找不到name為“*****”的連線字串。 建立EF時它會讓我們選擇連線的資料庫(MySql、Sql S

續接上篇 cc.net 自動釋出web應用程式 配置檔案的替換

    續接上一篇的http://blog.csdn.net/lu_yongchao/article/details/7164353關於釋出程式時配置檔案替換的方案,業務是元旦放假心不夠專一,對*.w

dll檔案載入執行載入的14001錯誤,由於應用程式配置不正確,應用程式未能啟動

最近在處理專案問題的的時候發現了這麼一個問題,就是我們的程式在呼叫第三方提供的dll檔案的時候在一臺機器上面會報14001的錯誤,但是在另一臺機器上面不會。兩臺機器上面的作業系統是相同的。針對這個問題和這個錯誤碼,查找了很多的相關資料。 vc錯誤查詢的給予的對於14001的

C# WINFORM程式配置檔案操作方法

C# WINFORM程式配置檔案操作方法 在寫winform程式的時候,我們經常會把配置檔案寫在Settings.settings中, 但是,在這裡我們發現,儲存後,在程式中對這個配置進行修改並不能生效 程式級別的配置呢,我常用儲存在app.config中的appSettings節點中

Spring 根據maven所選的Profies載入不同的配置檔案,免切換測試生產配置檔案

 直接貼程式碼吧,以後再加註釋 package com.jmev.web.util.config; import javax.annotation.PostConstruct; import java.io.IOException; import java.io.InputSt

使用函式指標和map載入不確定配置檔案的實現

#include<iostream> #include<string> #include<map> typedef void (*pFunc)(); //用於指向具體載入配置檔案的函式 using namespace std; enum TYPE

多個Tomcat部署,修改配置檔案

修改配置檔案 server.xml 檔案 配置檔案目錄: apache-tomcat-8.5.34/conf/server.xml 看註釋修改: <?xml version="1.0" encoding="UTF-8"?> <!--修改此處port:8005,800

selenium載入瀏覽器的配置檔案

  做seleniumUI自動化關於選用哪個瀏覽器方面,對於我來說,火狐瀏覽器只是用於定位元素,因為有firebug(注意高版本的火狐已經安裝不了這個外掛了),而真正執行自動化指令碼用的是谷歌,感覺谷歌的速度還是比火狐快點,個人感覺而已。大家都知道,selenium預設開啟的是一個乾淨的瀏覽器視窗,接下來我講

Android匯出已安裝應用程式apk檔案的兩種方案

Android匯出已安裝應用程式apk檔案的兩種方案 如果已經在Android手機上安裝了App應用程式,那麼Android系統會保留應用程式的apk安裝副本。如果要匯出這些apk檔案,有以下兩種方案:第一種方案:命令列模式。 先通過 adb shell pm list packag

c#程式應用程式設定檔案Settings.settings詳解

應用程式設定 應用程式設定使您能夠動態儲存和檢索應用程式的屬性設定和其他資訊。 還使您能夠維護客戶端計算機上的自定義應用程式和使用者首選項。 通常這些資料(如連線字串)對於執行應用程式是非常重要的,並且您不想將這些資料直接包含在應用程式程式碼中。 也許想要儲存兩種不同的資料庫連線字串,並在執行時

執行VS編譯的程式提示“由於應用程式配置不正確,應用程式未能啟動”的問題

造成這個問題的原因是,執行這個程式的電腦並沒有安裝vs,從而缺少了一些dll檔案。 以vs2008為例,將下面這幾個檔案拷貝到工程生成的輸出目錄中即可 我的這些檔案的路徑是C:\Program Files (x86)\Microsoft Visual Stud

maven專案如何載入不同的配置檔案

疑惑: 公司專案,本地啟動時取用預設路徑的下的配置檔案,而當maven打包時取用另一檔案路徑下的配置檔案。 解決過程:首先查詢公司專案程式碼中是否控制本地啟動和伺服器啟動時使用的配置檔案不同,但是發現並

No Spring WebApplicationInitializer types detected on classpath 載入不到配置檔案或找不到spring主配置

第一種情況 在web.xml當中配置錯誤,沒有正確的引入spring的配置檔案。找不到時,報告次錯誤。 檢查配置檔案,引入是否正確。 classpath:springconfig.xml ,這個格式的配置為讀取本專案classpath下的檔案 classpath*:s

maven外掛 按配置載入不同環境配置檔案進行打包(maven-war-plugin)

1.配置多種不同環境 如(本地local,開發dev,測試test 環境等) 1 <profiles> 2 <profile> 3 <id>local</id> 4 <p

Dubbo中Consumer應用介面配置檔案

配置檔案 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://

【Spring】例項化上下文物件及載入多個配置檔案

一、例項化上下文物件 ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); Car car = (Car) ctx.getBean("car");