教你如何配置Struts2 web.xml文件
Struts 2的基本配置
前面大致了解了Struts 2框架的基本內(nèi)容,但這些基本內(nèi)容都必須建立在Struts 2的配置文件基礎(chǔ)之上,這些配置文件的配置信息也是Struts 2應(yīng)用的核心部分。
配置Struts2 web.xml文件
任何MVC框架都需要與Web應(yīng)用整合,這就不得不借助于Struts2 web.xml文件,只有配置在Struts2 web.xml文件中Servlet才會被應(yīng)用加載。
通常,所有的MVC框架都需要Web應(yīng)用加載一個核心控制器,對于Struts 2框架而言,需要加載FilterDispatcher,只要Web應(yīng)用負(fù)責(zé)加載FilterDispatcher,F(xiàn)ilterDispatcher將會加載應(yīng)用的Struts 2框架。
因為Struts 2將核心控制器設(shè)計成Filter,而不是一個普通Servlet。故為了讓W(xué)eb應(yīng)用加載FilterDispacher,只需要在Struts2 web.xml文件中配置FilterDispatcher即可。
配置FilterDispatcher的代碼片段如下:
< !-- 配置Struts 2核心Filter的名字 -->struts< /FILTER-NAME>
< FILTER-CLASS>org.apache.struts2.dispatcher.FilterDispatcher < /FILTER-CLASS>
< INIT-PARAM>
< !-- 配置Struts 2框架默認(rèn)加載的Action包結(jié)構(gòu) -->
< PARAM-NAME>actionPackages< /PARAM-NAME>
< PARAM-VALUE>org.apache.struts2.showcase.person< /PARAM-VALUE>
< /INIT-PARAM>
< !-- 配置Struts 2框架的配置提供者類 -->
< INIT-PARAM>
< PARAM-NAME>configProviders < /PARAM-NAME>
< PARAM-VALUE>lee.MyConfigurationProvider< /PARAM-VALUE>
< /INIT-PARAM>
< /FILTER>
正如上面看到的,當(dāng)配置Struts 2的FilterDispatcher類時,可以指定一系列的初始化參數(shù),為該Filter配置初始化參數(shù)時,其中有3個初始化參數(shù)有特殊意義:
config:該參數(shù)的值是一個以英文逗號(,)隔開的字符串,每個字符串都是一個XML配置文件的位置。Struts 2框架將自動加載該屬性指定的系列配置文件。
actionPackages:該參數(shù)的值也是一個以英文逗號(,)隔開的字符串,每個字符串都是一個包空間,Struts 2框架將掃描這些包空間下的Action類。
configProviders:如果用戶需要實現(xiàn)自己的ConfigurationProvider類,用戶可以提供一個或多個實現(xiàn)了ConfigurationProvider接口的類,然后將這些類的類名設(shè)置成該屬性的值,多個類名之間以英文逗號(,)隔開。
除此之外,還可在此處配置Struts 2常量,每個
提示 關(guān)于Struts 2常量的講解,請參閱本書的4.1.2節(jié)。
在Struts2 web.xml文件中配置了該Filter,還需要配置該Filter攔截的URL。通常,我們讓該Filter攔截所有的用戶請求,因此使用通配符來配置該Filter攔截的URL。
下面是配置該Filter攔截URL的配置片段:
< !-- 配置Filter攔截的URL --> |
配置了Struts 2的核心FilterDispatcher后,基本完成了Struts 2在web.xml文件中的配置。
如果Web應(yīng)用使用了Servlet 2.3以前的規(guī)范,因為Web應(yīng)用不會自動加載Struts 2框架的標(biāo)簽文件,因此必須在Struts2 web.xml文件中配置加載Struts 2標(biāo)簽庫。
配置加載Struts 2標(biāo)簽庫的配置片段如下:
< !-- 配置Struts 2標(biāo)簽庫的URI -->/s< /TAGLIB-URI> |
在上面配置片段中,指定了Struts 2標(biāo)簽庫配置文件物理位置:/WEB-INF/struts- tags.tld,因此我們必須手動復(fù)制Struts 2的標(biāo)簽庫定義文件,將該文件放置在Web應(yīng)用的WEB-INF路徑下。
如果Web應(yīng)用使用Servlet 2.4以上的規(guī)范,則無需在Struts2 web.xml文件中配置標(biāo)簽庫定義,因為Servlet 2.4規(guī)范會自動加載標(biāo)簽庫定義文件。
提示 Struts 2的標(biāo)簽庫定義文件包含在struts2-core-2.0.6.jar文件里,在struts2-core-2.0.6.jar文件的META-INF路徑下,包含了一個struts-tag.tld文件,這個文件就是Struts 2的標(biāo)簽庫定義文件,Servlet 2.4規(guī)范會自動加載該標(biāo)簽庫文件。
對于Servlet 2.4以上的規(guī)范,Web應(yīng)用自動加載該標(biāo)簽庫定義文件。加載struts-tag.tld標(biāo)簽庫定義文件時,該文件的開始部分包含如下代碼片段:
< TAGLIB> |
因為該文件中已經(jīng)定義了該標(biāo)簽庫的URI:struts-tags,這就避免了在Struts2 web.xml文件中重新定義Struts 2標(biāo)簽庫文件的URI。
【編輯推薦】