Struts2 02--通配符

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

struts.xml裏面有應該怎麼來配置呢?框架

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

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

package屬性以下:code

通常來講,咱們使用的時候配置name extends就足夠了。xml

<action>屬性以下:blog

這個我通常會配置name class method三個屬性,若是在配置的時候沒有設置method屬性就會執行對應的Action.class中的execute();io

配置的時候通常一個方法對應一個這樣的配置:class

<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 ;

相關文章
相關標籤/搜索