使用 Apache Struts 在 JSP 中获取表单信息 2

Getting form information in JSP using Apache Struts 2

我正在学习 Apache Struts 2,我需要帮助从文本字段获取用户输入。

在我的 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 中使用它,或者您可以使用 configuration by convention.

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));
  }
}