struts Action设置数据的方法
一.属性驱动
注:示例中的实体类没有相应展示出来
1.基本数据类型的属性
基本数据类型的属性指每一个前台提交的属性在后台对应的Action类中都有相应的属性与之相对应
例如:前台表单:
<form action="login" method="post"> <table> <tr> <td>用户名:</td> <td><input type="text" name="userName"></td> </tr> <tr> <td>密码:</td> <td><input type="password" name="password"></td> </tr> <tr> <td><input type="submit" value="登录"></td> </tr> </table> </form>
后台Action中设置对应参数:
public class UserAction extends ActionSupport{
private static final long serialVersionUID = 1L;
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;
}
@Override
public String execute() throws Exception {
User user=new User();
UserService userService=new UserService();
user.setUserName(userName);
user.setPassword(password);
if(userService.login(user)){
return SUCCESS;
}
else return ERROR;
}
}
这样前台的参数就能由strut2传到相应后台
这种方式缺点:如果参数太多后台代码太繁琐
2.javabean属性
相对基本数据类型而言,javabean的前台表单只需要在name前面加上对象点,例如user.name,user.password
例如:
<form action="login" method="post"> <table> <tr> <td>用户名:</td> <td><input type="text" name="user.userName"></td> </tr> <tr> <td>密码:</td> <td><input type="password" name="user.password"></td> </tr> <tr> <td><input type="submit" value="登录"></td> </tr> </table> </form>
这样在后台只需要提供一个bean的生成方式:
Action中:
public class UserAction2 extends ActionSupport{
private static final long serialVersionUID = 1L;
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@Override
public String execute() throws Exception {
UserService userService=new UserService();
if(userService.login(user)){
return SUCCESS;
}
else return ERROR;
}
}
只需写一个User对象,后台就能自动获取
看法:代码比较简洁明了,可以传入多个javabean的对象,只是前台写的时候需要注意对象名+点,如:user.password
二.模型驱动
模型驱动前面的表单属性就直接填name,但是要注意与实体中的属性相对应
<form action="login" method="post"> <table> <tr> <td>用户名:</td> <td><input type="text" name="userName"></td> </tr> <tr> <td>密码:</td> <td><input type="password" name="password"></td> </tr> <tr> <td><input type="submit" value="登录"></td> </tr> </table> </form>
后台的Action中必须继承ModelDriver<T>,T填具体的bean
public class UserAction3 extends ActionSupport implements ModelDriven<User>{
private static final long serialVersionUID = 1L;
private User user=new User();
@Override
public String execute() throws Exception {
UserService userService=new UserService();
if(userService.login(user)){
return SUCCESS;
}
else return ERROR;
}
@Override
public User getModel() {
return user;
}
}
注意:这种模型驱动方式不会自动给你实例化bean,需要自己创建new User();不然会报空指针异常
观点: 模型驱动方式代码简介,前台也不用像javabean方式那样
但是当前台传入不是单个bean的时候,不适合用模型驱动,
因为必须继承ModelDriver<T>,泛型只有一种类型

浙公网安备 33010602011771号