在struts2中核心組件就是action,在配置struts2的xml文件時:spa
<package>元素時必須指定name屬性,該屬性是該包的惟一標識;xml
extends爲可選屬性,指定該包能夠繼承其餘包,(需將被繼承的<package>寫在前面)一般使用該屬性繼承struts-default包;繼承
namespace用於定義該包的命名空間,URL經過該命名空間+action的name訪問到對應的資源,namespace只適應於<package>,對於<package>下的<action>沒法單獨指定namespace,在同一個namespace中不能同時存在名字相同的action;以下圖:資源
輸入URL:http://localhost:8081/MyStruts/namespace/myaction.action系統首先會在 /namespace的命名空間下查找名字爲myaction的Action,若是在該命名空間下沒找到名字爲myaction,系統將直接進入默認的命名空間去查找名字爲myaction的Action;io
若輸入的URL爲:http://localhost:8081/MyStruts/findspace/namespace/myaction.action系統首先會在命名空間爲/findspace/namespace下查找名字爲myaction的Action,若沒有查找到,不會繼續在命名空間爲/findspace下查找名字爲myaction的Action;這點與Spring MVC不一樣;class
在<action>中class不是爲必須屬性,若沒有的話,系統默認使用系統的ActionSupport類;struts2
除此以外,當用戶找不到Action時,咱們還能夠爲系統配置默認的action,配置
action的默認處理類,當沒有爲action配置class時,系統調用的是ActionSupport類,系統默認struts-default包中有以下配置:命名空間
咱們也能夠本身定義系統默認調用類:im
改變系統默認類;