在struts1中使用FormBean获得请求参数

jsp页面中,当提交多个请求参数的时候,可以定义一个bean来获取这些参数,struts会将这些请求参数自动天剑到bean

1.jsp页面中提交多个请求参数时

 

<a href="todo.do?username=admin&age=20">goto</a>

2.定义一个javaBean来存放这些请求参数,该javaBean必须继承ActionForm

 

public class User extends ActionForm {
	private static final long serialVersionUID = 1L;
	private String username;
	private String age;
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getAge() {
		return age;
	}
	public void setAge(String age) {
		this.age = age;
	}
	public static long getSerialversionuid() {
		return serialVersionUID;
	}
}

3.struts-config.xml文件中配置使用javaBean来存放请求参数

 

	<!-- 配置bean的集合 -->
	<form-beans>
		<!-- 配置form-bean
			user:formBean的名字,需要和action中的name一致
			type:该javaBean的类路径
		 -->
		<form-bean name="user" type="com.cong.bean.User"></form-bean>
	</form-beans>
	<action-mappings>
		<!-- 在action中使用name来指定使用该bean来存放请求参数 -->
		<action name="user" path="/todo" type="com.cong.action.LoginAction">
			<forward name="success" path="/WEB-INF/jsp/login/somepage2.jsp" />
		</action>
	</action-mappings>

4.Action中可以使用user来得到请求参数

 

	public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		//提交过来的javaBean是一个ActionForm的类型,需要强制转换为需要的类型User
		User user = (User)form;
		//输出请求参数
		System.out.println(user.getUsername()+","+user.getAge());
		return mapping.findForward("success");
	}

 

注意:当在JavaBean中有使用复杂对象的时候,在jsp中的表单提交需要将对象作为属性额前缀命名(eguser.usernmae),在使用复杂对象的时候,必须要为复杂对象做初始化,因为在struts1中,使用复杂对象时,会调用对象的getter方法获得复杂对象,然后将属性setter到这个复杂对象上,所以getter出来的复杂对象不能未初始化,在struts2中,则是直接生成复杂对象后,在通过对象的setter将整个复杂对象传进去,所以不会出现这样的问题。

 

action中使用name的时候,struts1会将name中的bean文件存放到web作用域里面,默认为session,可以使用scope来制定作用域,还可以使用attribute来设置存放到web作用域中的名称,默认与name属性的bean文件一致

 

 

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值