jsp
<%@ taglib prefix="s" uri="/struts-tags" %>
login2.jsp
<s:form action="login">
<s:textfield name="username" label="username"></s:textfield>
<s:password name="password" label="password"></s:password>
<s:submit label="submit"></s:submit>
</s:form>
label="username"是指显示在此标签前面的名字。
result.jsp
${requestScope.username}
${requestScope.password}
el表达式的方法,获取request中的值。
username:<%= request.getParameter("username") %><br>
password:<%= request.getParameter("password") %>
传统的java代码方法。
action
虽然action可是只是一个pojo类,但通常在开发时会继承struts2中的ActionSupport类。因为ActionSupport中有验证之类的一些方法。
public class LoginAction extends ActionSupport{
private String username;
private String password;
get... set...
public String execute() throws Exception {
if ("hello".equals(this.getUsername().trim())
&& "world".equals(this.getPassword().trim())) {
return "success";
}
else {
this.addFieldError("username", "username or password error");
return "failer";
}
}
@Override
public void validate() {
if (null == this.getUsername() || "".equals(this.getUsername().trim())) {
this.addFieldError("username", "username required");
}
if (null == this.getPassword() || "".equals(this.getPassword().trim())) {
this.addFieldError("password", "password required");
}
}
}
trim()表示去除空格。
this.addFieldError("username", "username required");
是为页面上的username元素设置error信息,它会显示在username元素的上方并居中。
一般validate()只验证表单中的值是否为空或长度之类的简单验证。面业务逻辑验证放在execute()中,execute()中不要直接写验证代码,要调用业务层的方法。
struts.xml
<struts>
<package name="struts2" extends="struts-default">
<action name="login" class="com.test.action.LoginAction">
<result name="input">/login2.jsp</result>
<result name="success">/result.jsp</result>
<result name="failer">/login2.jsp</result>
</action>
</package>
</struts>
name="input"表示validate()中有元素被设置了errro信息时的result。