Struts2里面action参数的传递有3中方式。
一、Action 属性接收
首先我们创建一个login.jsp文件作为登入界面,创建一个LoginAction.java文件,在相应的xml里配置好这个Action。
<body>
<form action="LoginAction.action" method="post">
姓名:<input type="text" name="username">
密码:<input type="password" name="password">
<input type="submit" value="登入">
</form>
</body>
xml配置:(success作为一个跳转页面)
<action name="LoginAction" method="login" class="com.imooc.action.LoginAction">
<result>/success.jsp</result>
</action>
LoginAction.java
private String username;
private String password;
public String login(){
System.out.println(username);
return SUCCESS;
}
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;
}
以上完成后,进入浏览器就可以运行成功。
二、DomainModel接收
xml的配置内容。创建了User类文件
login.jsp
<body>
<form action="LoginAction.action" method="post">
姓名:<input type="text" name="user.username">
密码:<input type="password" name="user.password">
<input type="submit" value="登入">
</form>
</body>
LoginAction.java
private User user;
public String login(){
System.out.println(user.getUsername());
return SUCCESS;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
User.java
public class User {
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;
}
}
这个方法的区别在与用一个用户类来接受前面页面传过来的数据。方面接收和整理多数据,不容易造成混乱。。
三、ModelDriven接收
LoginAction.java
public class LoginAction extends ActionSupport implements ModelDriven<User>{
private User user=new User();//使用ModelDriven时必须初始化实例对象
public String login(){
System.out.println(user.getUsername());
return SUCCESS;
}
@Override
public User getModel() {
// TODO Auto-generated method stub
return user;
}
}
login.jsp
<body>
<form action="LoginAction.action" method="post">
姓名:<input type="text" name="username">
密码:<input type="password" name="password">
<input type="submit" value="登入">
</form>
</body>
使用ModelDriven是最常用个的方法,不用在jsp中加user,不用与action中的user对应。四、使用ModelDriven来进行list传递
login.jsp
<body>
<form action="LoginAction.action" method="post">
姓名:<input type="text" name="username">
密码:<input type="password" name="password">
姓名1:<input type="text" name="userlist[0].username">
姓名2:<input type="text" name="userlist[1].username">
姓名3:<input type="text" name="userlist[2].username">
<input type="submit" value="登入">
</form>
</body>
LoginAction.java
public class LoginAction extends ActionSupport implements ModelDriven<User>{
private User user=new User();//使用ModelDriven时必须初始化实例对象
public String login(){
System.out.println(user.getUsername());
System.out.println(user.getUserlist().get(0).getUsername());
System.out.println(user.getUserlist().get(1).getUsername());
System.out.println(user.getUserlist().get(2).getUsername());
return SUCCESS;
}
@Override
public User getModel() {
// TODO Auto-generated method stub
return user;
}
}
User.java
public class User {
private String username;
private String password;
private List<User> userlist;
public List<User> getUserlist() {
return userlist;
}
public void setUserlist(List<User> userlist) {
this.userlist = userlist;
}
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;
}
}
用List来传递数值。