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

来源:互联网 发布:java面试线程问题 编辑:程序博客网 时间:2024/06/07 03:18
? 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
imagestruts-config.xml
image
测试:
看下动态FORMBEAN的效果
image 
效果一样哈~
image