1. 程式人生 > >Struts2 02--通配符

Struts2 02--通配符

管理 span 配置方法 配置信息 環境 增刪改 xtend let 就會

在以前沒有使用Struts時,web與前臺的數據交互通過Servlet+jsp頁面。一個增刪改查往往需要寫四個Servlet來處理數據;在使用struts之後,Servlet不再被使用,而是通過struts.xml+*Action.class來獲取數據。這時候Action.class不需要在編寫四個,只要寫一個,裏面再寫四個方法就行了;再通過struts.xml裏面配置訪問路徑。那麽問題來了?

struts.xml裏面有應該怎麽來配置呢?

在上一篇《Struts2 01---環境搭配》中有提到過struts.xml的規範。一個struts.xml裏面常會用到的屬性有<package> <action> <result>等等。

在Struts2框架中是通過package來管理action、result、interceptor、interceptor-stack等配置信息的。

package屬性如下:

技術分享

一般來說,我們使用的時候配置name extends就足夠了。

<action>屬性如下:

技術分享

這個我一般會配置name class method三個屬性,如果在配置的時候沒有設置method屬性就會執行對應的Action.class中的execute();

配置的時候一般一個方法對應一個這樣的配置:

<action name="IndexAdd" class="com.action.IndexAction"
method="add"> <result name="success" type="redirect"> /index.jsp</result> </action>

可是這種配置雖然不難配置,但是隨著方法越來越多,配置方法的action也會越來越多:

<action name="IndexAdd" class="com.action.IndexAction" method="add">
    <result name="success" type="redirect"> /index.jsp</result
> </action> <action name="IndexUpdate" class="com.action.IndexAction" method="update"> <result name="success" type="redirect"> /index.jsp</result> </action> <action name="IndexGetAll" class="com.action.IndexAction" method="GetAll"> <result name="success" type="redirect"> /index.jsp</result> </action>

那麽這個時候其實我們是可以通過通配符來簡化配置的代碼的,拿上面這一段代碼來說,使用了通配符之後:

<action name="Index*" class="com.action.IndexAction" method="{1}">
    <result name="success" type="redirect"> /index.jsp</result>
    </action>

在同一個Action.class中的方法都只需要一個<action>來執行,地址是action的name屬性值+Action.class中的方法名。*代指方法名,{1}代指*。

其實通配符還有一種:“!”,這個是一個過時的通配符;我不會使用,只是知道有這個通配符。

通配符的使用不僅可以用在<name>+<method>上,<result>也可以通過通配符來簡化代碼;

<result>屬性如下:

技術分享

type屬性裏面有很多返回結果類型,但是我一般用的都是轉發或者重定向。默認的就是轉發,重定向是redirect ;

Struts2 02--通配符