首先列舉action的屬性代碼以下:web
<action path="URL"session
type="ActionClass"app
name="userForm"jsp
scope="request"post
attribute="key"orm
input="/register.jsp"xml
forward="/index.jsp"對象
include="/index.jsp"內存
unknown="true"ci
parameter="test"
className="mappingclass"
validate="true">
<forward name="" path=""></forward>
</action>
下面對其屬性解析:
path:表明請求的Action的名稱,無需指明後綴struts1自動處理
<form action="${pageContext.request.contextPath}/Register.do" method="post">....</form>
當其點擊此提交時後綴名稱爲.do,(因爲咱們在會web.xml配置*.do的處理),因此通過mapping的地址映射,交給ActionServlet按照struts1的處理流程處理提交Action的請求。
type:表明請求的Action交給哪一個Action處理,注意此類的名稱必定是類的全名稱(包括包名)。
name:表明的是請求參數封裝的ActionForm的名稱。
備註:此名稱與<form-beans><form-bean name="名稱Form" type="Form類的全名"></form-bean></form-beans>中"名稱Form"一致,並經過此form-bean中的type來指定封裝的ActionForm類。
scope:表明把formbean的參數封裝到那個做用域中,默認的做用域爲session。
備註:當咱們沒有指定formbean的做用域時,在type指定的Action類中還能夠經過如下代碼獲取:
UserForm userForm = (UserForm) form;
/**
* 因爲在Action的屬性配置中的scope屬性指定了userForm的做用域, 當採用的是默認值(session)時,
* 也能夠直接從做用域中獲取代碼以下:UserForm userForm =
*(UserForm)request.getSession().getAttribute("userForm");
*/
/**備註:因爲在開發中爲了節省ActionForm佔用的內存空間,通常採用scope=」request」配置,所以也能夠採用一下的方式獲取*/
UserForm userForm = (UserForm) request.getAttribute("userForm");
注意:若aciton的配置中沒有配置attribute="key" 屬性時,在Action中獲取的關鍵字採用默認的值及name的名稱,當配置了attribute="key"屬性時,必須經過"key"獲取。
attribute:指定formbean存儲的key,不設默認爲name屬性的值。
舉例:若是在action的配置中配置了attribute=」uform」,在Action中獲取的方式應該爲:
/** 經過方法參數中傳遞的ActionForm獲取ActionForm中的對象並強制造型爲UserForm */
UserForm userForm = (UserForm) form;
/**因爲在action的配置中指明瞭attribute的屬性及屬性值,所以應該採用如下方式獲取*/
UserForm userForm = (UserForm) request.getAttribute("uform");
input="/register.jsp" 指定formbean的數據是由哪一個頁面提供的。
說明:提供此屬性的目的在於formbean校驗失敗時,程序方便跳回formbean的輸入頁面,經過struts1錯誤信息標籤,顯示校驗失敗信息。
forward="/index.jsp" 指定收到請求時,跳轉到相應的jsp頁面。
強調:若是配置了此屬性,則action將再也不被調用,即接受到此action時,直接調至到index.jsp頁面。
include="/index.jsp" 指定收到請求時,進行頁面包含。
unknown="true" 若是action把該屬性設置爲true,則它能夠處理客戶機發出的全部無效的.do請求,默認值爲false。
舉例:若是在配置文件中添加以下的action配置,<action path="/**" forward="/index.jsp" unknown="true"/>,當若是在地址欄中發出請求爲:http://localhost:8080/20110105struts1_2/regi.do
若是在此配置文件中找不到regi.do的Action就會處理上面配置的action直接跳轉到index.jsp頁面 (備註:與此action中path名稱無關,但必須配置一個path屬性)。
parameter="test" 配置action參數,調用actioMapping.getParameter方法能夠得到這裏配置的參數。
className="mappingclass" <action>標籤和全部的配置信息使用哪一個對象封裝,默認值爲ActionMapping對象。
validate="true" 請求參數封裝到formbean中後,是否讓struts自動調用formbean的validate方法進行數據校驗,默認true。
forward標籤
在action配置中,還有一些其餘的標籤配置,<forward name="" path=""></forward>即在處理完此action以後能夠在Action中的execute方法中經過此標籤的name屬性獲取此action,並跳轉到相應的path地址中。
舉例:若是在action內部咱們配置了forward標籤的代碼以下:
<forward name="message" path="/message.jsp"></forward>
那麼能夠再Action返回值中作以下處理:
/** 獲取跳轉的地址並返回ActionForward */
return mapping.findForward("message");
經過以上配置,在處理完此action後,struts1通過處理後就會跳轉到/message.jsp視圖層。