Action在Strucs中负责请求参数的处理,那么他是如何实现的呢?这篇博文就将给大家做个简单的介绍。在struts中,获取请求参数主要有一下两种方式:
1.属性驱动方式
方式一:使用属性驱动,直接将Action作为Model;但是这样做不好的一点就是无法将参数传到Service层进行进一步处理。
package cn.tgb.action;
//方式一:使用属性驱动,将Action作为Model
public class Action01 {
private String name;
private String passwrod;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return passwrod;
}
public void setPassword(String password) {
this.passwrod = password;
}
public String login(){
System.out.println(name+""+passwrod);
return null;
}
}
方式二:在Action中添加对Model的引用。这样做的优点是请求参数直接封装到了javaBean中,不需要在通过action复制,缺点是在页面上还需要些ognl表达式。
package cn.tgb.action;
import cn.tgb.model.User;
//方式二:使用属性驱动,在Action添加Model的引用
public class Action02 {
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String login(){
System.out.println(user.getName() +" "+user.getPassword());
return null;
}
}
2.模型驱动方式
使用模型驱动需要使Action实现ModelDriven接口,这种方法需要在Action中实例化model对象,然后重写ModelDriven接口中的getModel()方法,返回这个对象即可。
package cn.tgb.action;
import cn.tgb.model.User;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
//方式三://获取请求参数--使用模型驱动
public class Action03 extends ActionSupport implements ModelDriven<User>{
private User user = new User();
@Override
public User getModel() {
return user;
}
public String login(){
System.out.println(user.getName() + " " + user.getPassword());
return null;
}
}