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

struts2 接受参数的两种方式(属性驱动和模型驱动)

2017-03-03 11:38 411 查看

定义:

在struts2中,页面的数据和action(控制层)传输基本上有两种方式,一个是属性驱动、另一个是模型驱动。

属性驱动

基本数据类型的属性对应:

就是Web页面上html标签的name属性或者与属性相对应的getter/setter相对应。当页面提交的时候,struts2会自动从request对象里面把数据取出来,然后按照名称进行对应,自动设置到Action的属性里面去。

缺点:如果实体属性太多,相应的getter/setter方法也会很多,Action类会显得十分零乱。

public class LoginAction extends ActionSupport{

private String userName;
private String password;

public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}

public String login(){

return "login";
}
}

//前台页面
<body>
<form action="${basePath }/login_login">
用户名:  <input  type="text" name="userName" />
用户密码: <input  type="text" name="password" />
<input type="submit" value="提交"/>
</form>
</body>


直接使用域对象(推荐用这种):

为了解决上种方式的问题,struts2提供了直接使用域对象的属性驱动(即把属性和对应的getter/setter方法从Action里面移出去,单独封装成一个域对象,然后在Action类中直接使用这个域对象就可以了。需要改变的是,在相应的name属性上,添加一个域对象的前缀,指明这个值到底对应到哪一个域对象里去。(需要有setter方法)

//前台页面
<body>
<form action="${basePath }/login_login">
用户名:  <input  type="text" name="user.userName" />
用户密码: <input  type="text" name="user.password" />
<input type="submit" value="提交"/>
</form>
</body>

//Action类里把属性封装成了User实体并实例化了一个对象user
public class LoginAction extends ActionSupport{

//域模型驱动
User user = new User();

public String login(){

return "login";
}
}


模型驱动

实现方式:让Action实现一个ModelDriven的接口。这个接口需要我们实现一个getModel的方法,这个方法返回的就是Action所使用的数据模型对象。采用ModelDriven的方式一个Action只需要一个Model,因此web界面里的name不需要加上前缀修饰。(需要有setter方法)

<form action="${basePath }/login_login">
用户名:  <input  type="text" name="userName" />
用户密码: <input  type="text" name="password" />
<input type="submit" value="提交"/>
</form>

//LoginAction类
public class LoginAction extends ActionSupport implements ModelDriven{

User user = new User();//模型驱动也需要实例化

public String login(){

return "login";
}

@Override
public Object getModel() {
return user;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  struts 数据