struts1.X使用通配符映射

 自struts1.2.0,纔可以用通配符映射

        在不使用通配符的常規做法中,我們要配置很多個ActionMapping,例子.:
<action path="/addSubscription"
  type="org.apache.struts.webapp.example.EditSubscriptionAction"
  name="subscriptionForm"
  scope="request"
  validate="false">
     <forward name="failure" path="/failure.jsp"/>
     <forward name="success" path="/subscriptionaddsuccess.jsp"/>
</action>

<action path="/editSubscription"
  type="org.apache.struts.webapp.example.EditSubscriptionAction"
  name="subscriptionForm"
  scope="request"
  validate="false">
     <forward name="failure" path="/failure.jsp"/>
     <forward name="success" path="/subscriptioneditsuccess.jsp"/>
</action>

  使用通配符  ,可以寫成如下形式:
<action path="/*Subscription"
  type="org.apache.struts.webapp.example.EditSubscriptionAction"
  name="subscriptionForm"
  scope="request"
  validate="false">
     <forward name="failure" path="/failure.jsp"/>
     <forward name="success" path="/subscription{1}success.jsp"/>
</action>
       

        使用通配符這段,關鍵點有兩處,

第一:path="/*Subscription",這裏使用了*來通配前面的add和edit,

第二:<forward name="success" path="/subscription{1}success.jsp"/> ,這裏使用{1}來表示*所代表的--也就是說,如果在頁面表單裏面這樣寫<form action="/editSubscription.do">,那麼forward到success的時候,就是forward到/subscriptioneditsuccess.jsp頁面。
      現在詳細介紹一下通配符的用法。struts配置文件中<action>標籤的path屬性,可以使用下列三種通配符:
*                      :可以匹配0個或多個字符,但不能匹配"/"
**                    :可以匹配0個或多個字符,且可以匹配"/"    
\character     :用來轉譯*和\

        通配符所代表的實際的值可以用{N}來引用,其中N可以等於0~9。N的含義是:
{0}   代表整個path代表的所有字符--不包括第一個/,如path=“/*Subscription”中的*是add,那麼{0}就是addSubscription。
{1}   代表第一個通配符(包括*, **, \character)所表示的實際內容,如path=“/*Subscription”中的*是add,那麼{1}就是add。
{2}   代表第二個通配符(包括*, **, \character)所表示的實際內容,如path=“/*Subscription*”中的第一個*是add而第二個*是test,那麼{1}就是add,{2}就是test
{3}~{9}   類似{1}, {2}

  可以使用{N}的<action>屬性有:
type
name
roles
parameter
attribute
forward
include
input
  

可以使用{N}的<forward>屬性有:
path

發佈了34 篇原創文章 · 獲贊 6 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章