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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章