Struts2中表单与Action传递数据三种方式

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;
}
}
 






 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值