Struts2 前端数据传递机制
一、用struts2接收Form表单数据的常用几种情况
- 如果只是接收表单中的一两个属性值时,可以在action类中声明同名的全局私有属性,并且提供相应set以及get方法。
- 当有多个属性时,可以把属性封装到一个pojo类中,然后再在action类中声明一个pojo类的全局属性并提供set、get方法,通过对象.属性名的方法来获取数据。
- 当要获取多条数据时,在action类中声明List集合对象,把pojo类对象放进List集合中,在form表单提交时属性值用集合名称加上相应的集合下标[n],如:user[0].username 。
二、举例
以方式2为例子:
前端jsp文件 login.jsp 注意:name的写法!
<s:form action="login" method="post">
<s:textfield name="user.username" key="username" size="20" />
<s:password name="user.password" key="password" size="21" />
</s:form>
pojo文件 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;
}
}
Action文件 LoginAction.java
public class LoginAction extends ActionSupport{
// get、set方法获取对象
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user=user;
}
// 校验
public void validate() {
// 密码正确与否
DBConn db=new DBConn();
User login=new User();
login.setUsername(user.getUsername());
login.setPassword(user.getPassword());
}
public String execute() throws Exception {
}
}
struts.xml
<action name="login" class="org.action.LoginAction">
<result name="success">/index.jsp</result>
<result name="error">/error.jsp</result>
</action>