验证框架的使用

如何使用验证框架!

1、定义一个xml文件,位置和需要执行校验的类位置一致,名称定义规则为

              类名称-validation.xml   类似于validate方法

              类名称-请求地址-validation.xml  类似于validateAdd方法

             

              例如:目前需要针对UserAction进行服务器端数据校验,则xml文件和UserAction类文件的位置相同

              这里是针对 add方法的校验,则xml文件名称为UserAction-user_add-validation.xml

             

2、给xml文件引入dtd说明,可以参照struts2-core.jar中/xwork-validator-1.0.3.dtd

              <?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">

 

3、在UserAction-user_add-validation.xml中定义校验规则--需要针对哪个属性执行什么校验

              定义方法有2种:字段优先非字段优先

                            这两种写法没有什么本质区别,但是从可读性的角度上说,建议优先考虑使用字段优先

              校验子定义在struts2-core.jar的中/com/opensymphony/xwork2/validator/validators/default.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>

                            <field name="username">采用字段优先的定义方法,所以首先说明针对哪个属性进行校验

                                          <field-validator type="requiredstring">  说明需要进行什么校验,具体的校验子的名称定义在default.xml

                                                        <message>用户名称不能为空!</message>  默认的报错信息

                                          </field-validator>

                            </field>

              </validators>             

 

4、在<action>的配置中必须定义<result name="input">,用于说明所使用的校验报错页

必填验证required

              验证null,要求必须填写,用于针对对象类型属性,如果使用简单类型则失效,因为默认值

                            <field name="age">

                                          <field-validator type="required">

                                                        <message>年龄必须填写!</message>

                                          </field-validator>

                            </field>

                           

必须字串验证requiredstring

              验证null和空串,默认自动使用trim()方法

                            <field name="username">

                                          <field-validator type="requiredstring">

                                                        <message>用户名称不能为空!</message>

                                          </field-validator>

                            </field>

                           

整型数据范围验证int/short/long

              属性非空时执行范围验证,其中参数min用于定义最小值,max用于定义最大值,可以只定义一个方向,允许等于

                                          <field name="age">

                                                        <field-validator type="int">

                                                                      <param name="min">18</param>

                                                                      <param name="max">65</param>

                                                                      <message>年龄应该在${min}到${max}之间!</message>

                                                        </field-validator>

                                          </field>

                                         

浮点数范围验证double

              参数  minInclusive maxInclusive  允许等于

                             minExclusive  maxExclusive             不允许等于

                            可以自行搭配使用

                                          <field name="salary">

                                                        <field-validator type="double">

                                                                      <param name="minInclusive">1000</param>

                                                                      <param name="maxExclusive">10000</param>

                                                                      <message>工资额度只能在1000到10000之间!</message>

                                                        </field-validator>

                                          </field>                                                    

 

日期范围验证date(基本没用)

              参数min和max

                            <field name="hiredate">

                                          <field-validator type="date">

                                                        <param name="min">1989-2-3</param>

                                                        <param name="max">2018-4-5</param>

                                                        <message>入职日期应该在1989-2-3到${max}之间!</message>

                                          </field-validator>

                            </field>            

             

字段表达式验证fieldexpression()

              参数expression用于定义一个和字段相关的OGNL表达式

                            <field name="password">

                                          <field-validator type="fieldexpression">

                                                        <param name="expression">

                                                                      <![CDATA[password==repassword]]>

                                                        </param>

                                                        <message>两次输入口令必须一致!</message>

                                          </field-validator>

                            </field>

                           

邮箱格式验证email

信用卡号格式验证creditcard  --VISA

网址格式验证url

 

数据类型转换验证conversion

              数据类型转换失败的默认报错信息为:Invalid field value for field "字段名称"

                            <field name="age">

                                          <field-validator type="conversion">

                                                        <message>数据格式错误!</message>

                                          </field-validator>

                            </field>

             

              去除默认的报错信息

                            1、配置常量,说明全局资源文件名称

                                                        struts.custom.i18n.resources=testmessages,testmessages2

                                                       

                                          sturts.xml                  <constant name="struts.custom.i18n.resources" value="msgs"/>

                                         

                            2、定义对应的全局的资源文件   src/msgs.properties

                                          对应的key值可以在struts2-core.jar中查找     /com/opensymphony/xwork2/xwork-messages.properties

                            3、在properties文件中定义

                                          xwork.default.invalid.fieldvalue=

                                          注意等号后面没有任何内容,目的在于不显示任何报错信息,具体的格式错误报错使用conversion实现

                            新的问题:

                            <field name="age">

                                          <field-validator type="conversion">

                                                        <message>数据格式错误!</message>

                                          </field-validator>

                                          <field-validator type="required">

                                                        <message>年龄必须填写!</message>

                                          </field-validator>

                            两个报错信息都显示,不符合一般的使用习惯,针对这个问题,验证框架提供了短路校验的支持,也就是说上面的校

              验没有通过则后续校验不执行

                           

如何实现短路校验?short-circuit

                                          <field name="age">

                                                        <field-validator type="conversion" short-circuit="true">

                                                                      <message>数据格式错误!</message>

                                                        </field-validator>

                                                        <field-validator type="required">

                                                                      <message>年龄必须填写!</message>

                                                        </field-validator>

字串长度校验stringlength

              参数minLength和maxLength,不区分中英文

                            <field name="username">

                                          <field-validator type="stringlength">

                                                        <param name="minLength">6</param>

                                                        <param name="maxLength">20</param>

                                                        <message>名称应该在6到20个字符之间!</message>

                                          </field-validator>

                            </field>                        

正则式验证regex

                            <field name="username">

                                          <field-validator type="regex">

                                                        <param name="regex">

                                                                      <![CDATA[^[a-zA-Z0-9]{6,20}$]]>

                                                        </param>

                                                        <message>用户名称不合法!</message>

                                          </field-validator>

                            </field>

                           

验证框架同时支持客户端验证(开发时基本不用,因为验证受限)

              <s:form action="user_add.action" validate="true">在具体开发中不建议使用,因为能够支持的客户端验证比较有限,一般建议使用jquery.validate.js                                                                                                                                                                                                                                                                         

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
框架简介: 本框架适由PHP+MYSQL语言开发,纯API接口,可快速对接外部app、web、各类软件开发; 本框架采用成熟稳定的Discuz3.4论坛系统,MVC框架环境下开发; 本框架无缝整合Discuz用户系统内置功能,采用插件形式开发的独立框架、分离代码、支持二次开发扩展; 通过本框架,可无限扩展数据输出接口,通过外部访问api接口,对数据进行操作、输出等功能; 本系统所有功能实现及控制均采用api外部接口,数据输出形式以JSON为主,可接收外部GET、POST参数; 客户端支持Python、Java、C、易语言、PHP、易安卓、火山移动、部分游戏开发引擎、等所有主流开发语言。 适用环境: 建议:PHP版本>5.4以上; 建议:DISCUZ版本>3.0以上; 建议:MYSQL版本>5.0以上; 其他环境,请大家自行测试 框架流程: 客户端:通过框架协议将数据提交到入口文件; 服务端-控制器:接到数据后,通过控制流程进行分流; 服务端-模型:接到分流指令,进行模块化数据处理; 服务端-视图:接到处理后数据,通过JSON返回客户端接收。 框架处理流程:传入数据-->入口文件-->控制器-->模型处理-->数据返回! 框架特色: 独立框架:独立开发的api专用框架协议,采用DB、原生代码三种方式独立封装核心库,不附带任何多余指令,代码简洁、速度快; 代码分离:本框架下所有代码与discuz框架分离,与discuz版本和其他插件不冲突,原生代码不对数据库有任何非官方流程操作,保证数据和结构逻辑不被破坏; 独特加密:本框架下采用动态双向、可自定义加密技术,有效保证token值保持动态变化验证技术,此加密技术可以添加特征码、干扰码。另外根据自身情况,可定制个人加密方式来强化,更是天衣无缝,世界唯一的个人专用加密技术; 动态验证:在独特加密的基础上应运而生动态时效,设定密文有效时间,时间一到必须重新更新验证数据,每一次更新密文都不一样,确保数据安全; 参数防护:数据传输都经过discuz安全机制进行过滤,但是discuz对参数负值、字符串转义过滤不严谨,容易造成错误,本框架强化数值、字符串的格式化,有效封堵恶意注入攻击! 核心处理:本框架核心逻辑、验证功能均在框架内处理,有效杜绝因外部软件安全等级低,被破解导致的逻辑错误,造成的安全隐患; 二次扩展:本框架可以在discuz框架内功能范围内,无限扩展任何自定义逻辑功能,也可以对discuz框架内所有功能模块,以及所有插件进行数据操作和调用; 访问验证:本框架结合discuz框架内置禁止IP、禁止访问会员组功能,实现对代理IP、会员组登录控制; 时间验证:本框架通过客户端时间与服务端时间进行验证,保证数据逻辑安全; 文件验证:本框架通过自定义客户端md5签名验证,确保客户端文件的完整性,有效防止对文件的破解、更改; 收费模式:扣点模式、购买用户组模式、计时扣费模式; 充值功能:结合discuz框架内置充值、充值卡功能,对用户进行积分充值; 代理功能:结合discuz框架内置充值、充值卡功能,用户可申请售卡打折权限,获取分红; 推广功能:结合discuz框架内置推广邀请人,被邀请人使用充值卡充值时,邀请人获取一定比例奖励; 心跳包功能:返回用户在线活动,验证机器码,对过期未发送心跳包进行下线处理; 变量功能:提供强大的远程变量、私人变量,单个变量理论可存储数据4G,让开发者更完美的开发软件; 卡号登陆:实行卡号直接登陆,与帐号绑定,卡号状态设置,独立控制更方便管理; 接口控制:强大的接口控制系统,每个接口独立设置每秒、每小时访问上线,并进行处理; 整合接口:本框架下通过自定义接口功能,添加外部api调用接口,通过本框架进行数据调用,扩展更强功能;(待开发) 接口模块: 登录模块:用户登录、插件配置、注册用户; 用户模块:用户信息、扩展信息、获取头像; 积分模块:积分增减; 好友模块:消息发送、好友信息; 充值模块:积分充值; 代理模块:提卡销售; 扩展模块:新增用户扩展数据存储、备注; 调用模块:帖子调用、会员排行; 日志模块:接口日志: 提现模块:申请提现、后台打款; 用户组模块:购买、充值、切换; 论坛模块:列表、发帖、回帖 排行模块:会员积分排行、扩展资料排行 手机模块:短信发送、手机绑定账号、手机登录 QQ模块:QQ登录 后续功能……
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值