struts2的login页面的验证

来源:互联网 发布:黄光裕入狱真相知乎 编辑:程序博客网 时间:2024/06/11 23:41

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。

原创粉丝点击