標籤:style com 使用 strong 檔案 資料
<action path="/*Person" type="cn.itcast.PersonAction" scope="request" input="/{1}.jsp" parameter="method">
<forward name="list" path="/WEB-INF/pages/list.jsp"/>
</action>
使用萬用字元,只不過命名的時候*的位置跟{1}保持一致.
我寫的這個action繼承dispatchAction,parameter=method
假如裡面有add方法和edit方法()
訪問add方法的時候,使用這個地址:/addPerson.do?method=add-->這個時候input就是/add.jsp
訪問edit方法的時候,使用這個:/editPerson.do?method=edit-->此時input就是/edit.jsp
input="/register.jsp"指定formbean的資料是由哪個頁面提供的。說明:提供此屬性的目的在於formbean校正失敗時,程式方便跳回formbean的輸入頁面,通過struts1錯誤資訊標籤,顯示校正失敗資訊。
struts配置中的路徑與模式比對
struts配置中的action,有一個path屬性,它表明請求的URI
一般情況下,我們需要在設定檔中明確指定某個特定的URI,如path=“/user/add”
在一些大型應用中,如果能夠制定一套嚴格的路徑及其操作規範的話,我們可以利用path的路徑模式比對功能,來簡化struts設定檔繁瑣的編寫工作量
假設有如下規範:
路徑匹配規範樣本
對user對象的所有處理Action,均需要以如下的路徑進行訪問:
/user/add.do – 處理使用者添加的有關操作
/user/delete.do – 處理使用者刪除的有關操作
/user/update.do – 處理使用者更新的有關操作
…
所有操作(Action)對應的JSP如下:
所有操作成功(失敗)之後的轉向頁面,有如下命名規範:
/user/add.do -> /user/add_success.jsp或/user/add_error.jsp
/user/delete.do -> /user/delete_success.jsp或/user/delete_error.jsp
…
所有操作的輸入介面有如下命名規範:
添加操作 -> /user/add_input.jsp
更新操作 -> /user/update_input.jsp
…
Action配置樣本
<action
path="/user/*"
type="com.bjsxt.struts.web.actions.UserAction"
name="userForm"
parameter="method"
>
<forward name="index" path="/user/index.jsp"/>
<forward name="success" path="/user/{1}_success.jsp"/>
<forward name="error" path="/user/{1}_error.jsp"/>
<forward name="input" path="/user/{1}_input.jsp"/>
</action>
Action配置解釋
所有的/user/*.do請求,都將由UserAction這個類來處理,UserAction類繼承DispatchAction,它將根據傳入的method參數的值,來分發到不同的方法來進行處理
在UserAction類中的任何一個方法,都可以返回index/success/error/input等名稱的ActionForward
根據請求路徑的不同,即使調用相同的傳回碼,但其轉向也將不同,如:
/user/add.do?method=add請求,將被轉寄給UserAction類的add方法處理,假設它用mapping.findForward(“success”);來返回成功頁面,這將轉向的實際JSP頁面是:/user/add_success.jsp
而/user/delete.do?method=delete請求,將被轉寄給UserAction類的delete方法處理,假設它用mapping.findForward(“success”);來返回到刪除成功頁面,這將轉向的實際JSP頁面是:/user/delete_success.jsp,所以,不同URI請求的相同名稱的返回頁面將是不同的。
而/user/index.do請求(或者任何一個其它請求,如/user/abcd.do或/user/test.do),都因為沒有傳遞method參數,而觸發調用UserAction的unspecified方法