Struts2內置校驗器——完整實例代碼


一、校驗器的配置風格

1、字段校驗器:

<field name="被校驗的字段">

       <field-validator type="校驗器名">

             <!--此處需要為不同校驗器指定數量不等的校驗規則-->

              <param name="參數名">參數值</param>

                  ....................

               <!--校驗失敗后的提示信息,其中key指定國際化信息的key-->

                 <message>校驗失敗后的提示信息</message>

                 <!--校驗失敗后的提示信息:建議用getText("I18Nkey"),否則可能出現Freemarker template Error-->

       </field-vallidator>

        <!-- 如果校驗字段滿足多個規則,下面可以配置多個校驗器-->

</field>

 

2、非字段校驗器(本實例所使用):

<validator type="校驗器名">

          <param name="fieldName">需要被校驗的字段</param>

          <!--此處需要為不同校驗器指定數量不等的校驗規則-->          
    <param name="參數名">參數值</param>

         <message>校驗失敗后的提示信息</message>

</validator>

兩種配置只是風格上的不同,沒有本質區別。

二、實例

  本注冊項目中使用了4個內置校驗器。項目只有一個注冊頁面(register2.jsp),對應的業務控制器(Register2Action.java)。如果輸入的數據經內置驗證器驗證成功,跳轉到success2.jsp。

 

實例步驟如下:

注意:

Register2Action.java和Register2Action-validation.xml在同一個包validatorAction內

register2.jsp和success1.jsp在WebContent下(我用的是Eclipse)同一個文件夾validate內

1、web.xml配置FilterDispatcher

<?xml version="1.0" encoding="UTF-8"?>  
<web-app  version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  

  
    <filter>  
        <!-- 配置Struts2核心Filter的名字 -->  
        <filter-name>struts2</filter-name>  
        <!-- 配置Struts2核心Filter的實現類 -->  
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>  
    </filter>  
    <!-- 配置Filter攔截的URL -->  
    <filter-mapping>  
        <!-- 配置Struts2的核心FilterDispatcher攔截所有用戶請求 -->  
        <filter-name>struts2</filter-name>  
        <url-pattern>/*</url-pattern>  
    </filter-mapping>  

</web-app>  

 

2、編寫視圖組件(JSP頁面)

(1)注冊頁面(register2.jsp)

<%@ page language="java" import="java.util.*" 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>用戶注冊頁面</title>
</head>
<body>
    <center>
        請輸入信息:
        <hr>
        <s:form action="register2" method="post">
            <table border="1">
                <tr>
                    <td>
                        <s:textfield name="userName" label="姓名" size="16" />
                    </td>
                </tr>
                <tr>
                    <td>
                        <s:password name="userPassword" label="密碼" size="18" />
                    </td>
                </tr>
                <tr>
                    <td>
                        <s:password name="ruserPassword" label="再次輸入密碼" size="18" />
                    </td>
                </tr>
                <tr>
                    <td>
                        <s:textfield name="userAge" label="年齡" size="16" />
                    </td>
                </tr>
                <tr>
                    <td>
                        <s:textfield name="userTelephone" label="電話" size="16" />
                    </td>
                </tr>
                <tr>
                    <td>
                        <s:textfield name="userEmail" label="郵箱" size="16" />
                    </td>
                </tr>
                <tr>
                    <td>
                        <s:submit value="提交" />
                    </td>
                </tr>
            </table>
        </s:form>
    </center>
</body>
</html>

 

(2)驗證成功頁面(success2.jsp)

<%@ page language="java" import="java.util.*" 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>校驗成功</title>
</head>
<body>
    校驗通過,用戶信息如下:
    <hr>
    姓名:<s:property value="userName" />
    <br>
    密碼:<s:property value="userPassword" />
    <br>
    年齡:<s:property value="userAge" />
    <br>
    電話:<s:property value="userTelephone" />
    <br>
    郵箱:<s:property value="userEmail" />
</body>
</html>

 

3、編寫業務控制器(Register2Action.java)

package validatorAction;

import com.opensymphony.xwork2.ActionSupport;

public class Register2Action extends ActionSupport{

    private String userName;
    private String userPassword;
    private String ruserPassword;
    private int userTelephone;
    private int userAge;
    private String userEmail;
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getUserPassword() {
        return userPassword;
    }
    public void setUserPassword(String userPassword) {
        this.userPassword = userPassword;
    }
    public String getRuserPassword() {
        return ruserPassword;
    }
    public void setRuserPassword(String ruserPassword) {
        this.ruserPassword = ruserPassword;
    }
    public int getUserTelephone() {
        return userTelephone;
    }
    public void setUserTelephone(int userTelephone) {
        this.userTelephone = userTelephone;
    }
    public int getUserAge() {
        return userAge;
    }
    public void setUserAge(int userAge) {
        this.userAge = userAge;
    }
    public String getUserEmail() {
        return userEmail;
    }
    public void setUserEmail(String userEmail) {
        this.userEmail = userEmail;
    }
    
    
    public String execute(){
        return "success";
    }
    
    
}

 

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>    
    
    <package name="intercept" extends="struts-default">
        <action name="register2" class="validatorAction.Register2Action">
            <result name="input">/validate/register2.jsp</result>
            <result name="success">/validate/success2.jsp</result>
        </action>
    </package>
</struts>

 

5、內置驗證器的驗證文件(Register2Action-validation.xml)

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE validators PUBLIC  
        "-//Apache Struts//XWork Validator 1.0.3//EN"  
        "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> 
  
<validators>
    <!-- 字符串長度校驗器 ,校驗userName屬性-->
      <validator type="stringlength">
          <param name="fieldName">userName</param>
          <param name="maxLength">16</param>
          <param name="minLength">6</param>
          <message>姓名長度為${minLength}到${maxLength}個字符!</message>
      </validator>
      
      <!-- 字符串長度校驗器 ,校驗userPassword屬性-->
      <validator type="stringlength">
          <param name="fieldName">userPassword</param>
          <param name="maxLength">16</param>
          <param name="minLength">6</param>
          <message>密碼長度為${minLength}到${maxLength}個字符!</message>
      </validator>
      
      <!-- 字段表達式校驗器-->
      <validator type="fieldexpression">
          <param name="fieldName">userPassword</param>
          <param name="expression">
              <!-- 驗證兩次輸入的密碼是否相同 -->
              <![CDATA[userPassword==ruserPassword]]>
          </param>
          <message>兩次密碼不一致!</message>
      </validator>
      
      <!-- 整數校驗器-->
      <validator type="int">
          <param name="fieldName">userAge</param>
          <param name="min">1</param>
          <param name="max">130</param>
          <message>年齡必須在${min}到${max}之間!</message>
      </validator>
      
      <!-- 整數校驗器 -->
      <validator type="int">
          <param name="fieldName">userTelephone</param>
          <param name="min">22222222</param>
          <param name="max">99999999</param>
          <message>電話必須在${min}到${max}之間的八位號碼!</message>
      </validator>
      
  <!-- 郵件地址校驗器-->
      <validator type="email">
          <param name="fieldName">userEmail</param>
          <message>請使用正確的郵件格式!</message>
      </validator>
      
</validators>

如果驗證失敗:

注意文件命名規則(X-validation.xml)

檢查stringlength等屬性的大小寫,還有字段是否和前面匹配;

查看struts-2.3.28.1\src\xwork-core\src\main\resources\xwork-validator-1.0.3.dtd文件,拷貝前4行代碼,因版本而異。

等等……


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM