您的位置:首页 > 编程语言 > Java开发

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

2011-10-10 09:44 513 查看
这个例子主要是运用了DomainModule的方式进行的操作。

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

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

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

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

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

action?user.name=chance&user.password=123

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

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

new的过程
由struts来帮我们完成

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

解决方法就是引入 DTO(又交 do,或vo)data
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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: