ActionSupport类实现了Validateable、ValidationAware接口,

其中Validateable接口就是验证器接口,该接口有一个validate()方法,

validate()方法专门用来验证数据,实现的时候需要继承ActionSupport类,

所以编写一个Action类时重写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、编写视图组件(register1.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="register1" 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:textfield name="userAge" label="年龄" size="16" />
                    </td>
                </tr>
                <tr>
                    <td>
                        <s:textfield name="userTelephone" label="电话" size="16" />
                    </td>
                </tr>
                <tr>
                    <td>
                        <s:submit value="提交" />
                    </td>
                </tr>
            </table>
        </s:form>
    </center>
</body>
</html>

 

3、编写业务控制器Action类(RegistAction1.java)

   这里重写了validate()方法

package validatorAction;

import com.opensymphony.xwork2.ActionSupport;

public class RegistAction1 extends ActionSupport{

    private String userName;
    private String userPassword;
    private int userAge;
    private String userTelephone;
    
    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 int getUserAge() {
        return userAge;
    }
    public void setUserAge(int userAge) {
        this.userAge = userAge;
    }
    public String getUserTelephone() {
        return userTelephone;
    }
    public void setUserTelephone(String userTelephone) {
        this.userTelephone = userTelephone;
    }
    
    //重写validate()方法
    public void validate(){
        if(userName==null||userName.length()<6||userName.length()>16){
            addFieldError("userName","用户姓名的长度不符合要求,6~16位!");
        }
        if(userPassword.length()<6||userPassword.length()>16){
            addFieldError("userPassword","密码的长度不符合要求,6~16位!");
        }
        if(userAge>130||userAge<1){
            addFieldError("userAge","年龄不符合要求,1~130岁");
        }
        if(userTelephone.length()!=8){
            addFieldError("userTelephone","电话号码不符合要求,8位");
        }
    }
    
    
    public String execute(){
        return "success";
    }
    
    
}

 

4、struts.xml配置对应的action(name="register1")

<?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">
        <interceptors>
            <interceptor name="replace" class="interceptor.MyInterceptor" ></interceptor>
        </interceptors>
        
        
        <action name="public" class="interceptor.PublicAction">
            <result name="success">/success.jsp</result>
            <result name="login">/success.jsp</result>
            <interceptor-ref name="defaultStack"></interceptor-ref>
            <interceptor-ref name="replace"></interceptor-ref>
        </action>
        
        <action name="register1" class="validatorAction.RegistAction1">
            <result name="input">/validate/register1.jsp</result>
            <result name="success">/validate/success1.jsp</result>
        </action>
        
        <action name="register2" class="validatorAction.Register2Action">
            <result name="input">/validate/register2.jsp</result>
            <result name="success">/validate/success2.jsp</result>
        </action>
        
        
    </package>
    
</struts>

 

 posted on 2016-07-16 10:39  布鲁布鲁sky  阅读(316)  评论(0编辑  收藏  举报