用户输入验证

这里我们来讨论 用户输入验证的两种方式:基于手工编程验证、基于Xml文件验证。

一、基于手工编程:

1、验证该动作类的所有方法:

(1)、在struts.xml中,创建相关的动作类,在书写标签的时候,记得把input这个返回值也写上,因为一旦在数据类型转换或者验证失败,都回转到input对应的结果处理。(这里为什么有类型转换?因为在许多Mvc框架中,类型转换和验证是不分家的,看struts2的拦截器加载顺序,是先类型转换器,然后是验证器,最后就是方法的调用,这个顺序就是说,当调用方法的前两个动作,只有1个出错,它都不会调用方法,在类型转换或者验证时出现的错误信息,被框架记录在fieldError中,其中维护着一个Map。)

代码如下:

    <package name="p1" namespace="/ns1" extends="struts-default">
        <action name="validate1_add" class="cn.ansel.validator.validate1" method="add">
            <result name="success">/add.jsp</result>
            <result name="input">/validate.jsp</result>
        </action>
    </package>

(2)、编写相关的用户输入页面,并定义好字段名以及目标动作类(参照struts.xml)

代码如下:

    <form action="${pageContext.request.contextPath}/ns1/validate1_adde" method="post">
        username:<input type="text" name="username"/><br/>
        password:<input type="text" name="password"/><br/>
        <input type="submit" value="go"/>
    </form>

(3)、根据struts.xml中对应动作,创建一个对应动作类及方法,并继承actionSupport

(4)、覆写其中的validate方法

(5)、在方法中输入自己的验证方法。

代码如下:

package cn.ansel.validator;

import java.io.Serializable;

import com.opensymphony.xwork2.ActionSupport;

public class validate1 extends ActionSupport implements Serializable {
    private String username;
    private String password;
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String add(){
        return SUCCESS;
    }
    public String update(){
        return SUCCESS;
    }
    @Override
    public void validate() {
        //手工编程验证:
        //1、判断用户名是否为null 或者空字符串,
        if(username==null||"".equals(username.trim())){
        //是的话放信息的addFiledError的Map中
            addFieldError("username", "username can not be null");
            }
        //判断密码是否为3-6位的数字,不是的话也放信息到addFiledError的mAP中
        if(password==null ||!password.matches("\\d{3,6}")){
            addFieldError("password", "password can only be numbers which length between 3 and 6");
        }
    }
}

(6)使用struts标签,在input结果的处理页面中,现实错误信息

代码如下:

<s:fielderror fieldName="username"></s:fielderror>
<s:fielderror fieldName="password"></s:fielderror>

2、验证该动作类的指定方法

步骤与上一致,只是不覆写动作类的validate方法,而是覆写validate方法名,但是方法名第一个字母要大写。代码如下:

    public void validateAdd(){
        //手工编程验证:
        //1、判断用户名是否为null 或者空字符串,
        if(username==null||"".equals(username.trim())){
        //是的话放信息的addFiledError的Map中
            addFieldError("username", "username can not be null");
            }
        //判断密码是否为3-6位的数字,不是的话也放信息到addFiledError的mAP中
        if(password==null ||!password.matches("\\d{3,6}")){
            addFieldError("password", "password can only be numbers which length between 3 and 6");
        }
    }

在这里需要注意的是,如果使用了指定方法验证,就应该把validate方法去掉,否则会验证2次。

二、基于xml文件验证:

1、验证动作类中的所有方法:

(1)、与上面不同的是,把上面中动作类的所有validate的相关方法去掉

(2)、在与动作类相同的包中建立名称为动作类-validation.xml文件

validate1-validation.xml

(3)、在xwork.core.jar文件中,打开xwork.validator-1.0.3.dtd(如果还没有提示的话,把整个文件拷贝作备用),复制里面dtd的引用:

<!DOCTYPE validators PUBLIC
        "-//OpenSymphony Group//XWork Validator 1.0.3//EN"
        "http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd">

(4)、在复制及设置提示完成后,开始设置里面的验证,代码如下:


 <validators>
    <field name="username">
        <field-validator type="requiredstring">
            <message>the username can not be null</message>
        </field-validator>
    </field>
    <field name="password">
        <field-validator type="requiredstring">
            <message>the password can not be null</message>
        </field-validator>
        <field-validator type="regex">
            <param name="expression"><![CDATA[/d{3,6}]]></param>
            <message>the password must contain 3 to 6 numbers</message>
        </field-validator>
    </field>
 </validators>

2、对于指定的方法进行验证:

直接更改xml文件名即可,格式为:动作类-动作名(struts.xml中的动作名)-validation.xml

validate1-validate1_add-validation.xml

以上

版权声明:本文为博主原创文章,禁止一切转载

时间: 2024-08-27 07:16:49

用户输入验证的相关文章

用户输入验证的集总

1 一.用户输入验证 2 1.编程方式: 3 动作类中的所有方法进行验证: 4 5 步骤: 6 a.动作类继承ActionSupport 7 b.覆盖调用public void validate()方法 8 c.在validate方法中,编写不符合要求的代码判断,并调用父类的addFieldError(String fieldName,String errorMessage) 9 如果fieldError(存放错误信息的Map)有任何的元素,就是验证不通过,动作方法不会执行. 10 Struts

struts2用户输入验证

一.用户输入验证 1.手工编程验证 动作类中的所有方法进行验证: 步骤: a.动作类继承ActionSupport b.覆盖调用public void validate()方法 c.在validate方法中,编写不符合要求的代码判断,并调用父类的addFieldError(String fieldName,String errorMessage) 如果fieldError(存放错误信息的Map)有任何的元素,就是验证不通过,动作方法不会执行. Struts2框架会返回到name=input的re

用户输入验证【提升篇】

本页主要基于:长度验证.相等验证.非空验证.合法验证,调用实现功能. 1 //长度验证 2 private bool ValidateLength(String str,int minLength,int maxLength) 3 { 4 //判断是否大于规定的最小值和小于规定的最大值 5 if (str.Length <= maxLength && str.Length >= minLength) 6 { 7 return true; 8 } 9 else 10 { 11 r

struts标签解决用户输入验证的解决方案

首先新建 User测试类 package com.cx.verify; /** * Created by cxspace on 16-7-14. */ public class User { private String userName; private String pwd; private String email; public String getUserName() { return userName; } public void setUserName(String userNam

jsf服务器端验证用户输入

服务器端验证用户输入数据步骤 1 html页面上插入要输入数据控件 ? 1 2 3 4 <h:inputText size="10" value="#{commodityBean.foradd.name}"                         id="input1">                         <f:validator validatorId="input1Validator"

使用JavaScript验证用户输入的是否为正整数

在项目开发中,需要使用JavaScript验证用户输入的是否为正整数. 方法一: var type="^[0-9]*[1-9][0-9]*$"; var r=new RegExp(type); var flag=r.test(subjectHour.value); if(!flag){ alert("课时应为正整数"); subjectHour.focus(); return false; } 方法二: var type="^[0-9]*[1-9][0-9

完成一个登陆页面。(用户名:F11;密码:123456)。要求用户输入用户 名和密码,验证是否等于正确值。如果等于告知登陆成功,程序结束;否则告 知用户名密码有误。用户三次输入不正确,告知登陆失败,程序结束 。

#include <stdio.h>#include <string.h> /*完成一个登陆页面.(用户名:F11:密码:123456).要求用户输入用户名和密码,验证是否等于正确值.如果等于告知登陆成功,程序结束:否则告知用户名密码有误.用户三次输入不正确,告知登陆失败,程序结束 .*/ void main(){ char username[20]; char password[20]; int i = 0; for(i = 0; i < 3; i++) { printf(

SpringMVC使用Hibernate Validator验证用户输入

一 简介 SpringMVC支持与JSR 349 Bean Validation API的集成.借助于Bean验证,可以非常容易地将验证元数据应用到实体类,并且通过合适的视图向用户展示可能的错误结果.在模型类中可以通过注解对属性验证进行定义,常见的注解有:@Size ,@Email ,@Pattern,@Max等,分别验证长度,邮箱格式,自定义正则表达式,最大值(PS:更多相关注解可以百度或者查API) 二 测试实例 (1)新建一个动态Java web项目,然后下载"Hibernate Vali

Flex笔记_验证用户输入

内置验证器 Flex提供了很多内置的验证器,它们都是Validator类的子类. Flex以扩展Validator类的方式创建了内置验证器,以用于满足常用需求. Validator组件的重要属性和函数: enabled:Boolean类型,决定是否启用验证功能 required:Boolean类型,是否必填 requiredFieldError:String类型,设置显示给用户的消息 source:Object,设置想要验证的对象(组件) property:String,设置想要验证的对象属性