天天看點

Struts 1.3學習總結(3)

1. 一個簡單的使用者管理系統

需求:完成對使用者的增删改查

①建立web項目,并引入struts開發包

②畫出架構圖(使用MyEclipse提供的struts設計界面來畫)

login.jsp -> LoginAction(UserForm) -> mainFrame.jsp -> GoManage-> manageuser.jsp

Struts 1.3學習總結(3)

③寫好DAO/Service層

2. 分派action(DispatchAction)

為什麼需要DispatchAction?

Struts 1.3學習總結(3)

從上面的設計來看,完成功能沒有問題,但是如果我們每個請求都對應一個Action,勢必造成Action過多,程式顯得比較臃腫。為達到減肥的目的,可以把一類請求寫到一個Action中處理,是以使用分派action,DispatchAction。好處:1.程式簡單 2.利于維護和擴充

快速入門案例:

①建立web工程

②引入struts包

③在struts-config.xml檔案中,增加parameter參數,用于将來區分使用者的不同請求,它的值由使用者指定:

<!-- parameter用于将來區分使用者的不同請求,它的值由使用者指定 -->
  <action-mappings >
    <action
      attribute="userForm"
      parameter="flag"
           

或者直接使用圖形化界面生成DispatchAction,注意要填寫flag:

Struts 1.3學習總結(3)

④使用DispatchAction,往往需要自己從新命名函數,即将Action中的execute方法改名

request.getSession().invalidate();//清除所有session
request.getSession().removeAttribute();//隻清除某一個session
           

⑤通過flag确定是在DispatchAction中調用哪個函數,往哪裡跳轉

Struts 1.3學習總結(3)

3. 全局跳轉

如果一個forward寫在action的标簽裡面,則說明是局部跳轉,也即隻有這個action才能使用這個跳轉。

全局跳轉就是在action标簽之外使用<global-forward>

Struts 1.3學習總結(3)

配置完成之後,在Action之中直接加入goerr即可:

return mapping.findForward("goerr");
           

所謂全局跳轉,指的是所有action都可以跳轉到該頁面

所謂局部跳轉,指的是隻有本action才可以跳轉到該頁面

4. 動态表單dynamic form

當我們jsp的表單内的屬性個數和類型不能确定的時候,我們可以使用動态表單來解決問題。

動态表單和普通表單的差別在于:

①普通表單類ActionForm是首先你需要定義這樣一個表單類,然後配置到struts-config.xml中

②動态表單完全依賴反射機制建立,是以不需要去定義ActionForm類,直接在struts-config.xml中配置即可

快速入門:

①手動配置struts-config.xml

<form-beans>
	<form-bean name="userForm" type="org.apache.struts.action.DynaActionForm">
	<!-- 該表單的屬性是配置出來的 -->
	<!-- name是jsp頁面空間的name,type是将來要儲存的資料類型 -->
	<form-property name="name" type="java.lang.String"></form-property>
	<form-property name="password" type="java.lang.String"></form-property>
	<form-property name="email" type="java.lang.String"></form-property>
	</form-bean>
	</form-beans>
           

②建立Action

③從動态表單中取出資料

public ActionForward register(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		DynaActionForm userForm = (DynaActionForm) form;// TODO Auto-generated method stub
		//從動态表單中取出資料
		//這裡的名字依照struts-config.xml中配置的name
		String name = userForm.getString("name");
		String password = userForm.getString("password");
		String email = userForm.getString("email");
		System.out.println(name+","+password+","+email);
		return mapping.findForward("registerok");
	}
           

繼續閱讀