struts获取前台传送数据的三种方式
1.使用Action的属性
2.使用DomainModel
3.使用ModelDriven
前台form如下,传输了两个参数:username,password
<form style="30%;margin-top:100px;" action="login.action"> <fieldset style="text-align: center; size: auto" title="login"> <legend>login</legend> Username: <input type="text" name="username" maxlength="20" /> <br> Password: <input type="password" name="password" maxlength="20"></input> <br> <input type="submit" value="sumbit" align="right"> <input type="reset" value="reset" align="right"> </fieldset> </form>
第一种:使用Action的属性接受参数
方法是,在对应的login.action中设置两个String变量,变量名为username,password.(变量名可以随便取)
然后使用get,set方法。Action会调用setXXX方法来获取值。
比如说前台传参数是param,那么它会调用setParam()来获取值。
code如下:
public class LoginAction { String username; String password; //使用set方法获取参数 public void setPassword(String password) { this.password = password; } public void setUsername(String username) { this.username = username; } public String execute(){ System.out.println("username:"+username); System.out.println("password:"+password); return "success"; } }
第二种方法:使用DomainModel来获取前台参数
在Action中设置一个对象来接收前台参数,传参时参数变量为类名+变量名一一对应(本例为user.username,user.password,这样会直接调用User的setUsername()和setPassword)
class User {
private String username;
private String password;
public void setPassword(String password) {
System.out.println("-------->set Password");
this.password = password;
}
public void setUsername(String username) {
System.out.println("---------->set username");
this.username = username;
}
public String getPassword() {
return password;
}
public String getUsername() {
return username;
}
}
public class LoginAction {
public User user; //第二种利用DomainModel,直接调用对象的set方法生成对象 不用new
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String execute(){
if(user==null){
System.out.println("no user...");
return "error";
}
System.out.println("username:"+user.getUsername());
System.out.println("password:"+user.getPassword());
return "error";
}
}
第三种:使用ModelDriven
方法是实现ModelDriven接口,传参直接使用对象的属性为变量,必须new一个新的对象
class User { private String username; private String password; public void setPassword(String password) { System.out.println("-------->set Password"); this.password = password; } public void setUsername(String username) { System.out.println("---------->set username"); this.username = username; } public String getPassword() { return password; } public String getUsername() { return username; } } public class LoginAction implements ModelDriven<User>{ private User user=new User(); public String execute(){ if(user==null){ System.out.println("no user..."); return "error"; } System.out.println("username:"+user.getUsername()); System.out.println("password:"+user.getPassword()); return "error"; } public User getModel() { return user; } }