1. 程式人生 > >Struts2使用ActionSupport類中的validate方法驗證使用者登陸資訊

Struts2使用ActionSupport類中的validate方法驗證使用者登陸資訊

初學JavaWeb開發,最近剛來時學Struts2,今天試了一下使用ActionSupport中的validate()方法驗證使用者登陸資訊,將此分享給大家

1.新建登陸頁面login.jsp,需要特別注意的是<s:fielderror><s:param>pwdError</s:param>pwdError同後臺Action類中validate方法中的pwdError要一樣addFieldError("pwdError", "使用者名稱不能為空");

<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@taglib prefix="s" uri="/struts-tags" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>login</title> </head> <body> <center> <div style="margin-top:180px"> <s:form action="/user/login"> <s:fielderror><s:param>unameError</s:param></s:fielderror> <s:textfield name="uname" label="使用者名稱"
/>
<s:fielderror><s:param>pwdError</s:param></s:fielderror> <s:password name="pwd" label="密 碼" /> <s:submit value="登陸"/><s:reset value="重置"/> </s:form> </div> </center> </body> </html>

登陸頁

2.新建登陸成功的返回頁index.jsp,因為只是測試一下效果,故只是隨便寫了一下

<%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>首頁</title>
    </head>
    <body>
<h1>歡迎登陸成功</h1>
</body>
</html>

登陸成功`

3.建立Action類,用於執行action請求,需要注意的是變數名需要與登陸頁使用者名稱與密碼欄的name屬性值一樣;

在這裡注意了validate方法有兩種使用方法,一種是全域性的validate(),針對當前Action中的所有需要驗證的頁面進行驗證;另一種是validate後面跟action方法名,這裡要注意的是action方法名首字母要大寫,我使用的就是後者validateLogin(),這裡的Login就是UserAction類中的login方法

package controller;

import com.opensymphony.xwork2.ActionSupport;

@SuppressWarnings("serial")
public class UserAction extends ActionSupport {

    private String uname;
    private String pwd;
    public String getUname() {
        return uname;
    }
    public void setUname(String uname) {
        this.uname = uname;
    }
    public String getPwd() {
        return pwd;
    }
    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    /**
     * 登陸頁面action
     * @return
     */
    public String login(){

        if (uname.equals("tianlei") && pwd.equals("123456")) {
            return SUCCESS;
        } else {
            return INPUT;
        }

    }

      /**
     * 驗證登陸頁面輸入的資訊,輸入資訊有誤時返回提示資訊到頁面
     * @return
     */
    public void validateLogin(){

        if (uname.length() == 0) {
            addFieldError("unameError", "使用者名稱不能為空");
        }


        if (pwd.equals("")) {
            addFieldError("pwdError", "密碼不能為空");
        }

    }

}

4.配置struts.xml檔案

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
    <!-- 在struts檔案中加入如下命令,當修改了xml檔案後就不用重啟tomcat
    name="struts.devMode 表示為開發模式
    value="true"   表示不需要重啟tomcat -->
    <constant name="struts.devMode" value="true" />

    <package name="default" namespace="/user" extends="struts-default">

        <default-action-ref name="defaultAction" />
        <action name="login" class="controller.UserAction" method="login">
            <result name="success">/pages/index.jsp</result>
            <result name="input">/pages/login.jsp</result>
        </action>


    </package>
</struts>

5.配置web.xml檔案

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>Struts-validate</display-name>
  <welcome-file-list>
    <welcome-file>pages/login.jsp</welcome-file>

  </welcome-file-list>

    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>
            org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
        </filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

6.瀏覽器測試效果

沒有輸使用者名稱點選登入按鈕
沒有輸使用者名稱點選登入按鈕

都沒有點選登入按鈕

因為的樣式是struts2裡面預設的模板樣式,所以就會有如圖所示的小黑圓點,瀏覽器審查元素如下,有看到網友說更改struts jar包裡面的原始碼模板可以解決此問題,有興趣的朋友可以試一下,如果不想改原始碼可以嘗試使用css樣品進行美化
fielderror樣式