教你如何配置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才會(huì)被應(yīng)用加載。
通常,所有的MVC框架都需要Web應(yīng)用加載一個(gè)核心控制器,對(duì)于Struts 2框架而言,需要加載FilterDispatcher,只要Web應(yīng)用負(fù)責(zé)加載FilterDispatcher,F(xiàn)ilterDispatcher將會(huì)加載應(yīng)用的Struts 2框架。
因?yàn)镾truts 2將核心控制器設(shè)計(jì)成Filter,而不是一個(gè)普通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框架的配置提供者類(lèi) -->
< INIT-PARAM>
< PARAM-NAME>configProviders < /PARAM-NAME>
< PARAM-VALUE>lee.MyConfigurationProvider< /PARAM-VALUE>
< /INIT-PARAM>
< /FILTER>
正如上面看到的,當(dāng)配置Struts 2的FilterDispatcher類(lèi)時(shí),可以指定一系列的初始化參數(shù),為該Filter配置初始化參數(shù)時(shí),其中有3個(gè)初始化參數(shù)有特殊意義:
config:該參數(shù)的值是一個(gè)以英文逗號(hào)(,)隔開(kāi)的字符串,每個(gè)字符串都是一個(gè)XML配置文件的位置。Struts 2框架將自動(dòng)加載該屬性指定的系列配置文件。
actionPackages:該參數(shù)的值也是一個(gè)以英文逗號(hào)(,)隔開(kāi)的字符串,每個(gè)字符串都是一個(gè)包空間,Struts 2框架將掃描這些包空間下的Action類(lèi)。
configProviders:如果用戶(hù)需要實(shí)現(xiàn)自己的ConfigurationProvider類(lèi),用戶(hù)可以提供一個(gè)或多個(gè)實(shí)現(xiàn)了ConfigurationProvider接口的類(lèi),然后將這些類(lèi)的類(lèi)名設(shè)置成該屬性的值,多個(gè)類(lèi)名之間以英文逗號(hào)(,)隔開(kāi)。
除此之外,還可在此處配置Struts 2常量,每個(gè)
提示 關(guān)于Struts 2常量的講解,請(qǐng)參閱本書(shū)的4.1.2節(jié)。
在Struts2 web.xml文件中配置了該Filter,還需要配置該Filter攔截的URL。通常,我們讓該Filter攔截所有的用戶(hù)請(qǐng)求,因此使用通配符來(lái)配置該Filter攔截的URL。
下面是配置該Filter攔截URL的配置片段:
< !-- 配置Filter攔截的URL --> |
配置了Struts 2的核心FilterDispatcher后,基本完成了Struts 2在web.xml文件中的配置。
如果Web應(yīng)用使用了Servlet 2.3以前的規(guī)范,因?yàn)閃eb應(yīng)用不會(huì)自動(dòng)加載Struts 2框架的標(biāo)簽文件,因此必須在Struts2 web.xml文件中配置加載Struts 2標(biāo)簽庫(kù)。
配置加載Struts 2標(biāo)簽庫(kù)的配置片段如下:
< !-- 配置Struts 2標(biāo)簽庫(kù)的URI -->/s< /TAGLIB-URI> |
在上面配置片段中,指定了Struts 2標(biāo)簽庫(kù)配置文件物理位置:/WEB-INF/struts- tags.tld,因此我們必須手動(dòng)復(fù)制Struts 2的標(biāo)簽庫(kù)定義文件,將該文件放置在Web應(yīng)用的WEB-INF路徑下。
如果Web應(yīng)用使用Servlet 2.4以上的規(guī)范,則無(wú)需在Struts2 web.xml文件中配置標(biāo)簽庫(kù)定義,因?yàn)镾ervlet 2.4規(guī)范會(huì)自動(dòng)加載標(biāo)簽庫(kù)定義文件。
提示 Struts 2的標(biāo)簽庫(kù)定義文件包含在struts2-core-2.0.6.jar文件里,在struts2-core-2.0.6.jar文件的META-INF路徑下,包含了一個(gè)struts-tag.tld文件,這個(gè)文件就是Struts 2的標(biāo)簽庫(kù)定義文件,Servlet 2.4規(guī)范會(huì)自動(dòng)加載該標(biāo)簽庫(kù)文件。
對(duì)于Servlet 2.4以上的規(guī)范,Web應(yīng)用自動(dòng)加載該標(biāo)簽庫(kù)定義文件。加載struts-tag.tld標(biāo)簽庫(kù)定義文件時(shí),該文件的開(kāi)始部分包含如下代碼片段:
< TAGLIB> |
因?yàn)樵撐募幸呀?jīng)定義了該標(biāo)簽庫(kù)的URI:struts-tags,這就避免了在Struts2 web.xml文件中重新定義Struts 2標(biāo)簽庫(kù)文件的URI。
【編輯推薦】

















