Struts2中表单与Action传递数据三种方式
1.Action中的属性与表单中的属性一致就可以
JSP中的表单
<form action="login.action" method="post">
用户名:<input type="text" name="username"/> <br/>
密码: <input type="password" name="password" /> <br/>
<input type="submit" value="登陆" />
</form>
相应的Java代码
//Action中的属性
public class LoginAction extends ActionSupport {
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;
}
public String execute(){
if( username.equalsIgnoreCase("aaa")&&password.equals("aaaaaa")){
return SUCCESS;
}else{
return ERROR;
}
}
}
这种方法叫属性驱动式,Action中的属性和表单中属性一致,从而可以直接在Action中通过get和set方法获取
2.使用一个VO类
JSP表单
<!--在表单中提交的属性名改为user.username-->
<form action="login.action" method="post">
用户名:<input type="text" name="user.username"/> <br/>
密码: <input type="password" name="user.password" /> <br/>
<input type="submit" value="登陆" />
</form>
Java代码
01.//LoginAction中的属性改为user
02.public class LoginAction extends ActionSupport{
03. private User user;
04.
05. public User getUser() {
06. return user;
07. }
08.
09. public void setUser(User user) {
10. this.user = user;
11. }
12.
13. public String execute(){
14. if( user.getUsername().equalsIgnoreCase("aaa")&&user.getPassword().equals("aaaaaa")){
15. return SUCCESS;
16. }else{
17. return ERROR;
18. }
19. }
20.
21.}
3.使用Struts2中的ModelDriven数据模式
Java代码:Action:必须实现getModel() 方法
01.//Action类要实现一个泛型接口,前台表单与1相同
02.public class LoginAction extends ActionSupport implements ModelDriven<User> {
03. private User user = new User();
04.
05. public String execute(){
06. if( user.getUsername().equalsIgnoreCase("aaa")&&user.getPassword().equals("aaaaaa")){
07. return SUCCESS;
08. }else{
09. return ERROR;
10. }
11.
12. }
13.
14. public User getModel() {
15. return user;
16. }
17.
18.}
此为模型驱动方式,必须要实现ModelDriven<T>接口,对于要传入多个model第二种方式不方便,当需要传入多个model时应采用第二种方式,例子如下
前台jsp代码:
<form action="sys/login.action" method="post">
<input type="text" name="user.username">
<input type="text" name="teacher.level">
<input type="submit" value="submit">
</form>
后台java代码:(Action: 必须提供set方法)
public class sysAction extends ActionSupport{
private User user;
private Teacher teacher;
public String login() throws Exception {
System.out.println(user.getUsername());
System.out.println(teacher.getLevel());
return SUCCESS;
}
public void setUser(User user) {
this.user = user;
}
public void setTeacher(Teacher teacher) {
this.teacher = teacher;
}
}