1.傳統訪問
struts.xml文件裏面的action配置:
<action name="Action_add" class="com.xj.struts.HelloAction"
method="add"></action>
這裏的配置說明了只要訪問的請求Action_add傳進來了,struts底層就會通過反射調用class屬性裏面的類,並實現method屬性記錄的方法。
這種訪問方式雖然有效,但是不夠靈活,當項目模塊較多,action類裏面的方法非常多的時候,配置文件就會變得非常冗餘笨重。
2.通配符訪問
struts.xml文件裏面的action配置:
<action name="Action_*_*" class="com.xj.struts.HelloAction"
method="{1}"></action>
這裏對請求name使用了" * "通配符,這個就類似於正則表達式,只要請求前面帶了Action_之類的請求就會被該action進行匹配。後面method中的 {1} ,代表name屬性值中的第一個通配符,如果是{2},則代表第二個通配符。類似於數組,一一對應。
如果你是在struts2 2.5版本下使用統配符,記得在package標籤下面添加
<global-allowed-methods>regex:.*</global-allowed-methods>
開啓全局允許的變量,不然將無法使用通配符。
使用通配符的action動作標籤就會變得十分靈活,並且可以減少重複的action標籤配置。這將會是我們日常開發中用到的最多的一種訪問方式。
3.動態訪問(感嘆號)
struts.xml文件裏面的action配置:
<!-- 開啓動態方法訪問 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
這裏必須先在常量中開啓動態訪問方式,然後就是action標籤的寫法:
<action name="Action" class="com.xj.struts.HelloAction"></action>
因爲開啓了動態訪問,那麼動態在哪裏呢?答案是訪問請求的格式:
動態訪問格式:/動作類路徑!動作類裏面的方法名
比如/Action!add
配置文件就會去訪問action標籤對應的類裏面的add方法。
此方法需要先開啓動態訪問,這個方法官方不推薦,平時開發也用得比較少。