我正在学习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
属性可用于name
、label
、value
。参见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));
}
}