【代碼總結】Struts2 Action接受參數方式的對比
阿新 • • 發佈:2018-03-08
AI nco form () 應用 username nac ring imp
一、屬性方式
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"; } } }
【代碼總結】Struts2 Action接受參數方式的對比