用户输入验证
来源:互联网 发布:excel数据清洗方法 编辑:程序博客网 时间:2024/05/23 22:25
这里我们来讨论 用户输入验证的两种方式:基于手工编程验证、基于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
以上
- 用户输入验证概述
- Ext 用户输入验证
- 用户输入验证
- 用户输入验证
- 常用用户输入验证
- angularJS-验证用户输入
- ASP+ 中的用户输入验证
- 怎么样验证用户的输入?
- WebLogic Workshop 验证用户输入
- 递归验证用户输入问题
- AngularJS之用户输入验证
- 用户输入验证码问题
- python之验证用户输入
- windows form 中的用户输入验证
- 实时验证用户输入的js代码
- 【转】使用Validators验证用户输入
- Thinkphp+AJAX动态验证用户输入是否合法
- JavaScript-常用于验证用户的输入
- 编译Wireshark 1.12.6
- html中读取xml文件中中文出现乱码
- QTP手工启动,录制WinAPP内容为空
- ios学习之旅
- ubuntu 硬盘安装 和 设置
- 用户输入验证
- eclipse tomcat 建立 web服务器
- pat-advanced(1073-1076)
- less学习笔记
- CF 513C 期望,概率
- jQuery,使用on代替delegate,live 写法区别
- (C/C++学习笔记操作符重载入门)
- 做一个有情操的程序员:论那没卵用的磁贴
- JDBC连接步骤