開源框架Struts:FormBean滴那些事兒

? FormBean 的意義
? 定義FormBean
? 聲明FormBean
?從FormBean中獲得請求參數
? 輸出FormBean數據到頁面
? 動態FormBean
----------------------------START--------------------------------
? FormBean 的意義
–“數據郵遞員”

? 可以從頁面到Action,或從Action到頁面來傳遞數據
–獲得請求參數
? 代替了request.getParameter(“”)方法
–提供了集中的驗證方法
? validate();
–自動裝載重新顯示數據
? 在驗證中很有意義
? 定義FormBean
–定義一個Form Bean 繼承ActionForm
–針對JSP頁面中Form 表單的屬性創建getter()、setter() 方法
例如:
public class LoginForm extends ActionForm{
public ActionErrors validate(ActionMapping arg0, HttpServletRequest arg1) {
return super.validate(arg0, arg1);
}
private String username="redking";
private String password;
getter()……
setter()……
? 聲明FormBean
– 聲明 <form-beans>
<form-bean name="loginForm" type="com.amaker.struts.form.LoginForm"/>
</form-beans>
– name:formBean 的名稱
– type:formBean 的類全名
–和Action 關聯在一起
<action path="/login"
type="com.amaker.struts.action.LoginAction"
name="loginForm"
input="/pages/login.jsp"
>
–在Action的execute方法中使用
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
// 強制類型轉換
LoginForm loginForm = (LoginForm)form;
// 獲得屬性
String userName = loginForm.getUserName();
return null;
}
?從FormBean中獲得請求參數
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws
Exception {
// 強制類型轉換
LoginForm loginForm = (LoginForm)form;
// 獲得屬性
String userName = loginForm.getUserName();
return null;
}
---------------------------傳統方式獲取表單數據------------------------
LoginAction.java
image
web.xml
image
struts-config.xml
image
login.jsp
image
測試:
image
image
image
-------------------------使用FormBean獲取表單數據----------------------
LoginForm.java
image
struts-config.xml
image
LoginAction.java
image
測試:
image
image
image
-------------------------測試Scopes範圍-----------------------------------
image
沒加scope參數默認爲Session範圍
下面測試一下
TestFormBeanScope.jsp
image
測試:
login.jsp頁面
image
TestFormBeanScope.jsp頁面
image
從而驗證了FormBean的Scope範圍在Session範圍內。
下面顯式指定Scope範圍
image
指定scope範圍爲request
image
請求完畢後就完事了現在沒有值了哈~
image
那有沒方法來實現呢?我們來讓其跳轉哈~
先來看下以前是怎麼處理跳轉滴~
image
測試:
image
request請求還沒結束,現在username打印出來了哈~
image
下面看下struts是怎麼配置哈~
struts-config.xml
image
LoginAction.java
image
測試:
image
實現跳轉
image
------------------------NEXT------------------------------------
? 輸出FormBean數據到頁面
–使用Struts 標籤
? <bean:write name="loginForm" property="userName"/>
–name: form Bean 的名稱(在struts-config.xml文件中聲明的)
–property: form Bean 的屬性
–使用表達式語言(EL)
? ${loginForm.userName}
要想使用struts中的標籤我們要導入TLD文件哈~
struts-1.3.8.rar\struts-1.3.8\src\taglib\src\main\resources\META-INF\tld
image
將這些標籤庫描述符導入到工程的lib目錄下
image
測試:
image
效果還是一樣滴~
image
------------------------------NEXT-------------------------------------
? 動態FormBean
–意義

? 使用動態Bean的意義上減少Bean的個數
–動態FormBean類
? org.apache.struts.action.DynaActionForm
–配置 <form-beans>
<form-bean name="loginForm" type="org.apache.struts.action.DynaActionForm">
<form-property name="username" type="java.lang.String"/>
<form-property name="password" type="java.lang.String"/>
</form-bean>
</form-beans>
–取值
DynaActionForm loginForm = (DynaActionForm)f;
String username = (String) loginForm.get("username");
String password = (String) loginForm.get("password");
 
LoginAction.java
image struts-config.xml
image
測試:
看下動態FORMBEAN的效果
image 
效果一樣哈~
image
-------------------------------END----------------------------------
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章