action获取页面参数的三种驱动方式

属性驱动
在Action中创建一个和页面中name属性同名的私有化变量,提供成员变量的get/set方法(非必须)

public String hello(){
    
    
System.out.print(username+"这是属性驱动");
System.out.print(password);
return "success";
}
private String username;
private String password;

public String getPassword() {
    
    
return password;
}

public void setPassword(String password) {
    
    
this.password = password;
}

public String getUsername() {
    
    
return username;
}

public void setUsername(String username) {
    
    
this.username = username;
}
<!-- 属性驱动表单 -->
<form action="Structs.action" method="post">
<input type="text" name="username"><br>
<input type="password" name="password">
<input type="submit" value="提交">
</form>

对象驱动

  • 1.创建实体类:对应form中input 的name
  • 2.在action创建对象(private User user=new user();)
  • 3.提供该对象的get/set方法
  • 4.注意:form中空间name属性要符合 对象.name
//表单写name前面加一个user.username user.password与对象名相同
private User user =new User();
public User getUser() {
    
    
return user;
}
public void setUser(User user) {
    
    
this.user = user;
}
public String go ( ) {
    
    
	System.out.print(this.user.getUsername()+"这是对象驱动"+this.user.getPassword());
return SUCCESS;
}
<!-- 对象驱动表单 -->
<form action="Structs1.action" method="post">
<input type="text" name="user.username"><br>
<input type="password" name="user.password">
<input type="submit" value="提交">
</form>

模型驱动

  • 1.需要实现ModelDriven接口制定相应泛型->将要获取的对象
  • 2.根据泛型确定某个类的对象
  • 3.重写getModel方法,返回对象
  • 注意: 不需要在前台form中input中的name指定对象.属性名
public class ModelAction extends ActionSupport implements ModelDriven<User>{
    
    
private User user =new User();
public String drive() {
    
    
System.out.println(user.getPassword()+"模型驱动"+user.getUsername());
return SUCCESS;
}
@Override
public User getModel() {
    
    
return user;
}
}
<!-- 模型驱动表单 -->
<form action="Structs2.action" method="post">
<input type="text" name="username"><br>
<input type="password" name="password">
<input type="submit" value="提交">
</form>

猜你喜欢

转载自blog.csdn.net/weixin_44703894/article/details/111562379