开源框架Struts:FormBean滴那些事儿

? FormBean 的意义
? 定义FormBean
? 声明FormBean
?从FormBean中获得请求参数
? 输出FormBean数据到页面
? 动态FormBean
----------------------------START--------------------------------
? FormBean 的意义
�C“数据邮递员”

? 可以从页面到Action,或从Action到页面来传递数据
�C获得请求参数
? 代替了request.getParameter(“”)方法
�C提供了集中的验证方法
? validate();
�C自动装载重新显示数据
? 在验证中很有意义
? 定义FormBean
�C定义一个Form Bean 继承ActionForm
�C针对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
�C 声明 <form-beans>
<form-bean name="loginForm" type="com.amaker.struts.form.LoginForm"/>
</form-beans>
�C name:formBean 的名称
�C type:formBean 的类全名
�C和Action 关联在一起
<action path="/login"
type="com.amaker.struts.action.LoginAction"
name="loginForm"
input="/pages/login.jsp"
>
�C在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数据到页面
�C使用Struts 标签
? <bean:write name="loginForm" property="userName"/>
�Cname: form Bean 的名称(在struts-config.xml文件中声明的)
�Cproperty: form Bean 的属性
�C使用表达式语言(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
�C意义

? 使用动态Bean的意义上减少Bean的个数
�C动态FormBean类
? org.apache.struts.action.DynaActionForm
�C配置 <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>
�C取值
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----------------------------------

本文出自 “王乾De技术博客” 博客,谢绝转载!

你可能感兴趣的:(框架,开源,struts,休闲,FormBean)