wbe.xml
任何一個(gè)web應(yīng)用程序都是基于請(qǐng)求/相應(yīng)模式進(jìn)行構(gòu)建的狮鸭,所以無論采用哪種MVC框架赡译,都離不開web.xml文件的配置浑槽。
換句話說,web.xml并不是Struts2框架特有的文件庶香,只有在Web應(yīng)用中配置了web.xml文件,MVC框架才能真正的與Web應(yīng)用融合起來简识。
因此赶掖,web.xml文件是所有javaweb應(yīng)用程序的核心文件。struts2框架需要在web.xml中配置核心控制器StrutsPrepareAndExecuteFilter七扰,用于對(duì)框架進(jìn)行初始化奢赂。配置如下
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
StrutsPrepareAndExecuteFilter可以包含一些初始化參數(shù),如要加載的xml形式的配置文件颈走,多個(gè)配置文件用逗號(hào)分隔膳灶,如果沒有這些參數(shù)struts框架會(huì)默認(rèn)加載struts-default.xml、struts-plugin.xml和struts.xml立由。
StrutsPrepareAndExecuteFilter作為一個(gè)filter在Web應(yīng)用中運(yùn)行轧钓,它負(fù)責(zé)攔截所有的用戶請(qǐng)求,當(dāng)用戶請(qǐng)求到達(dá)時(shí)锐膜,該Filter會(huì)過濾用戶請(qǐng)求毕箍。如果用戶請(qǐng)求以action結(jié)尾,該請(qǐng)求會(huì)被輸入Struts2框架中進(jìn)行處理枣耀。
Action
實(shí)際上霉晕,在MVC框架中庭再,控制器是有由兩個(gè)部分組成,分別如下牺堰。
1).核心控制器(Filter):用于攔截用戶請(qǐng)求拄轻,對(duì)請(qǐng)求進(jìn)行處理。
2).業(yè)務(wù)控制器(Action):調(diào)用相應(yīng)的Model類實(shí)現(xiàn)業(yè)務(wù)處理伟葫,返回結(jié)果恨搓。
注:在實(shí)際開發(fā)中,Action類通常都繼承自ActionSupport類筏养。
完成一個(gè)Action類后斧抱,就需要在struts.xml中配置action了。配置如下
<struts>
<!-- name屬性可以隨便填寫 namespace屬性為你action的包名 extends屬性一定要繼承struts-default或者是你自己定義的 -->
<package name="default" namespace="/" extends="struts-default">
<!-- 配置action name屬性為action名字 class這個(gè)action指向那個(gè)類-->
<action name="FwInfoAction" class="action.FwInfoAction">
<!-- 結(jié)果為input時(shí)渐溶,跳轉(zhuǎn)網(wǎng)頁login.jsp辉浦,在服務(wù)端做驗(yàn)證的時(shí)候,默認(rèn)執(zhí)行input-->
<result name="input">login.jsp</result>
<!-- 結(jié)果為guanli_error時(shí)茎辐,跳轉(zhuǎn)頁面login.jsp -->
<result name="guanli_error">login.jsp</result>
<!-- 結(jié)果為guanli_success時(shí)宪郊,跳轉(zhuǎn)頁面guanli.jsp -->
<result name="guanli_success">guanli.jsp</result>
</action>
</package>
</struts>
Result
Action類在處理完用戶請(qǐng)求后,會(huì)返回一個(gè)處理結(jié)果拖陆。這個(gè)結(jié)果是一個(gè)簡(jiǎn)單的字符串弛槐,框架根據(jù)這個(gè)字符串選擇對(duì)應(yīng)的Result,所以我們又將其成為邏輯視圖名稱依啰。這個(gè)邏輯屬兔名稱由result元素的name屬性表示乎串。簡(jiǎn)單的說就是,用來設(shè)定在Action處理結(jié)束后速警,系統(tǒng)下一步將要做什么叹誉。
Action的作用
對(duì)于struts2應(yīng)用的開發(fā)者而言,Action才是應(yīng)用的核心闷旧。開發(fā)者需要提供大量的Action類桂对,并且在struts.xml文件中配置Action。Action主要有三個(gè)作用:
??1.封裝工作單元
?????可以把Action看作控制器的一部分鸠匀,其主要職責(zé)就是控制邏輯業(yè)務(wù)蕉斜,通常使用Action的execute()方法實(shí)現(xiàn)這一功能。
??2.數(shù)據(jù)轉(zhuǎn)移的場(chǎng)所
?????Action會(huì)自動(dòng)將提交的數(shù)據(jù)缀棍,寫到對(duì)應(yīng)的屬性當(dāng)中(屬性名與提交的參數(shù)名相同),記得set宅此、get方法。
??3.返回結(jié)果字符串
?????Action的最后一個(gè)作用是返回結(jié)果字符串爬范,框架根據(jù)Action返回的結(jié)果字符串選擇對(duì)應(yīng)的視圖組件呈現(xiàn)給用戶父腕。