`

008 - 输入校验

阅读更多

1. 输入校验

 

    流程:用户提交表单 -> 进行类型转换(有错,转到input视图) 

                                -> 输入校验validateXxxx()(有错,转到input视图) 

                                -> validate()(有错,转到input视图)                    
                         
      
                      

如果fliedErrors里存有信息,则Action转到input视图. 在转向的input视图中,可以用 <s:fielderror/> 拿到错误信息,但是默认带了<ul><li> XXXX </ul></li>,于是常用<s:properties>直接拿出值,再自己做修饰

 


1)手工在Action里写validate()或validateXxxx()方式


   在执行execute()方法前,首先执行输入校验
           * validate()对所有方法进行校验
           * validateXxxxx() 对 xxxxx()这个方法进行校验
  
如: 
    public void validate() {//会对action中的所有方法校验
            if(this.username==null || "".equals(this.username.trim())){
                    this.addFieldError("username", "用户名不能为空");
            }
           if(this.mobile==null || "".equals(this.mobile.trim())){
                    this.addFieldError("mobile", "手机号不能为空");
           }else{
                     if(!Pattern.compile("^1[358]\\d{9}$").matcher(this.mobile).matches()){
                    this.addFieldError("mobile", "手机号格式不正确");
                    }
           }

   }

2)运用验证框架

 

  1. 对所有方法进行校验
        在要校验的Action的包下建一文件 ActionName-validation.xml,如要对UserAction中所有方法都需要输入校验,则建文件UserAction-validation.xml
   
  2. 对某个方法进行校验

         在要校验的Action的包下建一文件 ActionName-action_url-validation.xml
   
    action_url 是访问该Action时除namespace外那些
 
    如: 要对UserAction中add()方法进行输入校验,则建文件UserAction-user_add-validation.xml
    该Action在struts.xml里的配置如下:
  
<struts>    
  <package name="person" namespace="/user" extends="struts-default">
         <action name="user_*" class="cn.itcast.action.PersonAction" method="{1}">
                   <result name="input">/index.jsp</result>
                   <result name="message">/WEB-INF/page/message.jsp</result>
         </action>
  </package>
</struts>

//表单里
<form action="user/user_add" method="post">
    ........
</form>

 

//ActionName-validation.xml
        这个文件的模板在struts2 的示例程序里可找到
        在xwork1.0.3.jar里的default.xml里可找到各种校验器

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.3//EN" "
http://www.opensymphony.com/xwork/xwork-

validator-1.0.3.dtd">

<validators>

       <field name="username">                       
              <field-validator type="requiredstring">   
<!--校验器requiredstring-->
                     <param name="trim">true</param>     
  
<!--给requiredstring的trim属性注入值-->
                     <message>用户名不能为空!</message>
              </field-validator>
    </field>
   
    <field name="mobile">
            <field-validator type="requiredstring">   
<!--校验器requiredstring-->
                  <message>手机号不能为空!</message>
            </field-validator>
        <field-validator type="regex">          
  
<!--校验器regex-->
                  <param name="expression"><![CDATA[^1[358]\d{9}$]]></param>
                   <message>手机号格式不正确!</message>
        </field-validator>
    </field>
</validators>

 

 


<![CDATA[^1[358]\d{9}$]]>

<![CDATA[ *** ]]>  表示里面的东西只当做普通字符串对待,也就是说,可以是一些特殊字符

校验文件执行顺序:BaseAction-validation.xml  -> BaseAction-xxxxx-validation.xml ->UserAction-validation.xml ->UserAction-

xxxx-validation.xml

当冲突时,后面的把前面的覆盖

分享到:
评论

相关推荐

    Struts2--输入校验

    在Struts2中,输入校验是确保数据安全和应用程序功能正确性的重要环节。本文将深入探讨Struts2中的输入校验机制,包括其重要性、实现方式以及如何在实际项目中应用。 输入校验对于任何Web应用程序都是必不可少的,...

    struts框架验证---输入校验器大全

    输入校验器就是这个过程中的核心工具。 在Struts2中,输入校验器是一种实现数据验证的组件,它们通过配置在XML文件(如`default.xml`)中来定义,并与Action类的属性关联。`default.xml`文件通常位于`...

    基于C++的串口数据CRC-16校验实现与应用

    通过对输入序列进行按字节逐位异或运算完成CRC-16检验,帮助确保通过串口通信所传送的数据完整性。附带详细的注解有助于开发者快速理解和运用该方法于他们的应用程序或者项目之中。 适合人群:熟悉基本C++概念,希望...

    CRC-32,CRC-8校验c++实现.pdf

    这个例子中定义了一个名为`CRC8`的函数,它接收一个字符指针`buffer`作为输入。函数首先将CRC初始化为0,然后遍历缓冲区中的每个字节,对每个字节进行异或操作,接着进行8次位移,每次位移后根据当前最低位是否为1来...

    crc-16校验程序

    使用CRC-16校验程序时,用户需要输入待校验的数据,程序会自动进行计算并返回CRC值。如果用户想要进一步理解或验证计算结果,可以利用程序提供的进制转换功能,将CRC值在十进制、十六进制和二进制之间自由切换。 总...

    Modbus RTU CRC-16校验码生成器 CRC_Calc v0.3 最新版

    通过输入报文数据,软件将自动生成对应的CRC-16校验码,同时也可以对已知的报文和CRC值进行匹配检查,以检测潜在的通信错误。 综上所述,CRC_Calc v0.3 是一款针对Modbus RTU协议的高效、便捷的CRC-16校验码生成器...

    Struts2输入校验总结

    ### Struts2输入校验深度解析 #### 一、手动输入完成校验 在Struts2框架中,输入校验是确保数据完整性和安全性的重要环节。对于手动输入完成校验,Struts2提供了灵活的机制。 1. **普通处理方式**:在Action类中...

    crc-16校验算法程序

    - 迭代过程:对每一个输入数据位,根据当前CRC寄存器的值和查找表查出的相应项进行异或操作,然后将数据位加到CRC寄存器的最高位。 - 结束处理:最后CRC寄存器的值就是CRC-16校验码。 4. 校验功能:程序还可能...

    LabVIEW计算CAN总线数据帧,CRC-15校验,LabVIEW2017可用

    使用这个VI,用户可以直接输入CAN总线的数据帧,然后获取校验后的结果。该VI可能是通过LabVIEW的位操作函数,如位左移、位右移、位与、位或等,结合生成多项式P(x)来完成CRC计算的。 在实际应用中,CRC-15不仅可以...

    javascript实例应用---密码校验类.rar

    总的来说,这个压缩包提供的实例对于学习和理解JavaScript如何实现密码校验规则具有很高的价值,可以帮助开发者提升网站的安全性和用户体验。通过深入研究这个实例,我们可以学习到如何有效地处理用户输入,创建更加...

    CRC-16校验码生成

    在提供的"CRC-16校验码生成"小程序中,用户可以输入需要校验的数据,程序会自动计算并返回CRC-16校验码。这大大简化了开发者的工作,他们不再需要手动编写复杂的除法和异或操作,只需要调用这个小程序即可快速获得...

    最详细易懂的CRC-16校验原理(附源程序).zip_CRC校验码程序_CRC校验程序_CRC码详解_attentionjcf_

    例如,可以创建一个16位的CRC寄存器,初始值为全1,然后按位处理数据,根据当前CRC寄存器和输入数据的位进行异或,同时更新CRC寄存器。这个过程反复进行,直到所有数据位都被处理。 在提供的压缩包中,"1.txt"可能...

    CRC-8校验方法.pdf

    DS18B20 中生成 CRC 码所用的方法不同于常规生成算法,它采用的是逆序 CRC 信息单元编码算法,该 CRC 的生成是由 DS18B20 中的多项式寄存器通过其中所包含的移位寄存器以及异或门对输入该多项式寄存器的每一位二...

    Modbus RTU CRC-16校验码生成器CRC_Calc v0.2

    2. 校验过程:程序会根据Modbus RTU协议规定的CRC-16算法对输入数据进行校验,生成对应的16位校验码。 3. 结果展示:程序会显示计算出的CRC-16校验码,通常以十六进制形式呈现。 4. 错误检测:如果输入的数据在传输...

    计算机组成原理实验-奇偶校验

    8. 设置各输入的值为 1 或 0,选中需要设置的引脚,然后单击左侧的 0 或 1。 9. 保存文件,编译 .bdf 文件。 10. 单击 Processing-&gt;Simulator Tool,选择 Functional,然后单击 Generate Functional Simulator ...

    一个crc-16校验的小程序

    5. **数据校验流程**:用户输入要校验的16进制数,程序首先将其转换为二进制,然后通过CRC-16算法计算校验码。计算完成后,将校验码以16进制字符串的形式返回给用户。如果用户需要验证其他数据,只需重复此过程。 6...

    labview Command-CRC校验

    - 创建一个VI(Virtual Instrument),将数据作为输入,通过调用CRC运算函数,得到CRC校验码。 - 可以将计算出的CRC值与接收到的CRC值进行比较,如果两者一致,则认为数据正确无误;否则,可能存在错误,需要重新...

    MOBUS-RTU-CRC校验

    每一个元素代表了一个8位输入数据经过CRC算法处理后的部分结果。当需要计算整个16位CRC值时,可以通过查表的方式来获取每8位数据对应的CRC部分值,然后将这些部分值组合起来得到最终的CRC校验码。 #### CRC计算流程...

    S7-200的CRC校验程序

    使用时,用户可能需要输入待校验的数据,程序会自动计算并返回CRC校验码。 说明.txt文件可能是对CRC校验程序的详细解释,包括如何在MicroWin SP中打开和运行程序,如何输入数据,以及如何解读结果。此外,它可能还...

    007-逻辑校验.zip

    在处理用户输入、数据库记录、网络传输的数据时,逻辑校验起到了保障数据质量的关键作用。 首先,逻辑校验可以防止错误的数据进入系统。例如,在注册表单中,我们可能需要验证用户输入的邮箱地址格式是否正确,或者...

Global site tag (gtag.js) - Google Analytics