1. 程式人生 > >【代碼總結】Struts2 Action接受參數方式的對比

【代碼總結】Struts2 Action接受參數方式的對比

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接受參數方式的對比