struts学习笔记3接收web前端前台传来的数据

这个例子主要是运用了DomainModule的方式进行的操作。

domainmodule 中文解释:域模型,domainmodul接收参数的方式就是,在action中设一个module对象(即实体对象,还不明白就看下面的举例)

例如,一个bbs系统,实现用户注册模块,那么后台module 我们就会相应的建立一个 User类,这个user类就是我们前面说过的module

分析下为什么要用DomainModule来接收参数,我们从前台向后台的action中传递参数,action做的处理无非是紧接着再把这个参数传递给对应的module,那么假如我们的module100个变量(呵呵,我说的是假如),那么我们用第一种方法接收参数时就要在action中设置100个变量,但如果我们用domainmodule的话就简单的多,说了这么多,还没讲到怎么用呵呵,切入正题:

eg:有一个用户登录系统,前台需要向后台传递一个username password 两个属性,

那么我们可以这么处理,首先在相应的action 设一个private User user; 变量(假如我们已经有了User这个Module了),好那么前台传递参数的时候可以这么来写,

actionuser.name=chance&user.password=123

注意:我们依然需要继续给user设置 set get方法

另外需要注意的是,在action中设置的变量 无论是基本类型,还是引用类型,我们只需要声明,但不需要定义(简单的说,就是我们不需要去 new 一个变量)

new的过程 struts来帮我们完成

下面我们在来考虑一个问题,还拿上面的用户登录系统来举例,通常用户登录的时候 除了用户名,密码,还会填写一个 确认密码(其实这个工作完全可以交给客户端的js来处理,这里只是为了说明问题),但是在 User Module抽象封装的过程它是不会有 confimPassword这一项的,这样我们就不能用domainModule来解决这个问题,怎么办?

解决方法就是引入 DTO(又交 do,或vodata transform object,它的工作就两点:接收一下,传递一下;

接收一下:前台传过来的user对象,我们不直接传递给usermodule 而是传递给 dto对象,例如userDto(它里面会有一个confimPassword变量)

传递一下:dto接收来参数后 进过一番数据处理,确认密码输入正确那么就会 必要的参数变量传递给 usermodule 。

  <form action="reg/register!reg" method="post" name="myform">
    姓名:<input type="text" name="user.name"/><br/>
    密码:<input type="password" name="user.password"/><br/>
    性别:<input type="radio" name="user.sex" value="male">男<input type="radio" name="user.sex" value="fmale">女<br/>
    邮箱:<input type="text" name="user.mail"><br/><br/>
          <input type="reset"/>     <input type="submit"> 
    </form>

这一段,注意的是表单里的action,和name属性。


package cn.qin.Actions;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import cn.qin.Models.*;

public class registerAction extends ActionSupport {
	private User user;

	public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}
	public String reg(){
		System.out.println("system.out:"+"name"+user.getName()+"密码"+user.getPassword()+"性别"+user.getSex()+"邮箱"+user.getName());
		return "success";		
	}
	public User getModel() {
	        return user;
	    }
}

注意user的get方法

package cn.qin.Models;

public class User {
	private String name;
	private String password;
	private String mail;
	private String sex;
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public String getMail() {
		return mail;
	}
	public void setMail(String mail) {
		this.mail = mail;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	

}
user的属性,即 module。struts的配置如下

<constant name="struts.devMode" value="true" />
<package name="register" namespace="/reg" extends="struts-default">
<action name="register" class="cn.qin.Actions.registerAction" >
<result>/regSuccess.jsp</result>
</action>
</package>







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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值