【代码总结】Struts2 Action接受参数方式的对比
一、属性方式
1、Action中:对应表单参数的setter、getter
2、页面中 :Form中元素name取值属性名
<s:property value="属性名" />
3、应用场景:接受的参数字段个数比较少
package com.struts.action; public class LoginAction { 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 login(){ if("admin".equals(username) && "123456".equals(password)){ return "success"; }else{ return "failed"; } } }
二、JavaBean方式
1、Action中:为Action添加实体属性以及setter和getter
2、页面中 :Form中元素name取值属性名
<s:property value="对象名.属性名" />
3、应用场景:字段多,可以封装为一个对象;将模型数据从Action中分离,创建model层
package com.struts.action; import com.struts.model.User; public class Login2Action { private User user; public String login(){ if("admin".equals(user.getUsername()) && "123456".equals(user.getPassword())){ return "success"; }else{ return "failed"; } } public User getUser() { return user; } public void setUser(User user) { this.user = user; } }
三、ModelDriven方式
1、Action中:Action实现ModelDriven接口,重写方法getModel();Action中药提供JavaBean类型的属性,西药实例化,但不需要对应的setter和getter方法
2、页面中 :Form中元素name取值属性名
<s:property value="属性名" />
3、应用场景:和JavaBean类似,但不常用
package com.struts.action; import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ModelDriven; import com.struts.model.User; public class Login3Action implements ModelDriven<User>{ private User user; @Override public User getModel() { if(user == null){ user = new User(); } return user; } public String login(){ if("admin".equals(user.getUsername()) && "123456".equals(user.getPassword())){ ActionContext.getContext().getSession().put("user",user); return "success"; }else{ return "failed"; } } }