Getting form information in JSP using Apache Struts 2



我正在学习ApacheStruts2,我需要帮助从文本字段获得用户输入。

在我的JSP中,我有:

<s:form action="login">
    <s:textfield label="Username" />
    <s:textfield label="Password" />
    <s:submit />
</s:form>

在我的Java文件中:

List<UserData> users = new ArrayList<UserData>();
private Map<String, Object> session;
public String execute() {
    addUser("SeyCC", "loop"); //@param Username, password
    session.put("user", users.get(0).getUsername());
    if(form info matches a username and password in list)
       return SUCCESS;
    return ERROR;
}
public void addUser(String username, String password) {
    users.add(new UserData(username, password));
}

我的UserData.java只有两个字符串。一个用于用户名,一个用于密码。我的问题是你看到的if语句。如何获取用户在文本字段中输入的用户名和密码,并检查列表是否在其中?

首先需要将文本字段绑定到操作

<s:form action="login">
    <s:textfield key="Username" />
    <s:textfield key="Password" />
    <s:submit />
</s:form>

key属性可用于namelabelvalue。参见textfield的定义。

名为login的操作应具有配置映射。在struts.xml中使用此选项,也可以按照约定使用配置。

public class LoginAction extends ActionSupport implements SessionAware, Preparable {
  List<UserData> users = new ArrayList<UserData>();
  private Map<String, Object> session;
  /**
   * Field to store username.
   */
  private String username;

  public String getUsername() { return username; }
  public void setUsername(String username) { this.username = username; }
  /**
   * Field to store password.
   */
  private String password;
  public String getPassword() { return password; }
  public void setPassword(String password) { this.password = password; }
  @Override
  public void setSession(Map<String, Object> session){ this.session = session; }
  @Override
  public void prepare() throws Exception {
    addUser("SeyCC", "loop"); 
  }

  public String execute() {
    if (!users.get(0).getUsername().equals(username) || !users.get(0).getPassword().equals(password))
       return ERROR;
    session.put("user", users.get(0).getUsername());
    return SUCCESS;
  }
  //@param username, password
  public void addUser(String username, String password) {
    users.add(new UserData(username, password));
  }
}

最新更新