如何讓Web.xml變得簡潔?

曾經看到過一個web.xml有上千行,若是出現點問題,開發人員根本就不知道現場是怎麼一種狀況。 html

更要命的是在不一樣的應用服務器,好比說在舊的websphere版本上用listener啓動Spring就是有問題的。 java

若是要進行軟件升級,那悲催了,不只要修改應用相關的內容,還要對web.xml進行修改。 程序員

要把幾個模塊集成在一塊兒,完蛋了,光web.xml的合併就困可貴不行不行。 web

Tiny構建者深知web.xml給程序員和現場實施人員帶來的不便與困擾,所以設計瞭如下方案進行解決,今後再不用關心web.xml。 json

先來看一下,tiny框架中,web.xml中配置。 服務器


<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	<display-name>Archetype Created Web Application</display-name>
	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
	</welcome-file-list>
	<listener>
		<listener-class>
			org.tinygroup.weblayer.ApplicationStartupListener
		</listener-class>
	</listener>
	<filter>
		<filter-name>TinyFilter</filter-name>
		<filter-class>org.tinygroup.weblayer.TinyHttpFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>TinyFilter</filter-name>
		<url-pattern>/*</url-pattern>
		<dispatcher>REQUEST</dispatcher>  
              <dispatcher>FORWARD</dispatcher>  
	</filter-mapping>
</web-app>
OK,一個listener用於啓動,一個filter用於處理全部內容,結束了。


而後,web.xml文件就不容許再動了,換而言之,使用Tiny框架並用其模板建立了工程以後,web.xml文件就是不被容許修改的。 app

固然,帶來一個問題就是?若是要增長別的listener,filter,servlet怎麼辦? 框架

Tiny框架接管了全部的這些配置,支持自發現,也就是說你只要按照Tiny配置規範配置,而後就不用管了,Tiny框架會發現並加載它們。固然,Tiny框架還有一套配置管理規範,並有配置框架支持,在Tiny框架中,全部的配置信息都是被集中中一塊兒的。 jsp

對於已經實現好的listener,filter,servlet,也不用擔憂,不用作任何修改,直接配入便可。 url

好比:資源壓縮過濾器就是別人寫好的,咱們要複用,只要把這個Filter配置爲一個Spring的Bean,而後以下配置就能夠了:

<tiny-wrapper-filter id="tinyFilterWrapper" class="tinyFilterWrapper">
	<init-param name="filter_beans" value="gZIPFilter"></init-param>
	<filter-mapping url-pattern=".*"></filter-mapping>
</tiny-wrapper-filter>
固然Servlet也是同樣的,下面就是jsp的例子:


<tiny-processor id="jspProcessor" class="tinyProcessorWapper"> 
	<init-param name="servlet_bean" value="jspServlet"></init-param>
	<servlet-mapping url-pattern=".*\.jsp"></servlet-mapping> 
</tiny-processor>
因此,沒有任何不一樣。


固然,裏面還會有許多Tiny框架的處理器:

好比處理MDA的處理器,就是經過以下配置加入的:

<tiny-processor id="mdaTinyProcessor" class="mdaTinyProcessor">
 <servlet-mapping url-pattern=".*\.model"></servlet-mapping>
 <servlet-mapping url-pattern=".*\.modellet"></servlet-mapping>
 <servlet-mapping url-pattern=".*\.modeljson"></servlet-mapping>
</tiny-processor>
小結,在Tiny框架中,web.xml中的全部配置都被接管,並被賦予自發現能力,帶來的好處就是,若是我依賴了某個Jar包(Tiny中叫業務單元),它須要有某個過濾器或處理器,那它就會被加載,而不須要程序員進行干預,也不須要現場支持人員進行修改。
相關文章
相關標籤/搜索