首页 > 其他 > 详细

用户输入验证的集总

时间:2014-06-06 11:00:15      阅读:404      评论:0      收藏:0      [点我收藏+]

 

bubuko.com,布布扣
 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                 Struts2框架会返回到name=input的result
11             d、在name=input指定的页面上使用struts2的标签显示错误信息。<s:fielderror/>
12         
13         动作类中指定的方法进行验证:
14             编写步骤与上面相同
15             
16             验证方法书写有要求:
17                 public void validateXxx()   Xxx代表的是要验证的动作方法名,其中要把动作方法名的首字母变为大写。
18                 
19     
20     2、基于XML配置文件的方式:
21         动作类中的所有方法进行验证:
22       在动作类的包中,建立一个名称为:动作简单类名-validation.xml ,比如要验证的动作类名是UserAction   UserAction-validation.xml
23             内容如下:(不同的struts2版本可能不同,要根据情况去寻找)
       在xwork-core-2.3.16.3.jar下的xwork-validator-1.0.3.dtd文件中有定义的        

        <!--           XWork Validators DTD.           Used the following DOCTYPE.


          <!DOCTYPE validators PUBLIC             "-//Apache Struts//XWork Validator 1.0.3//EN"           "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">            -->

          代替下面的老例子

24             <?xml version="1.0" encoding="UTF-8"?>
25             <!DOCTYPE validators PUBLIC
26                     "-//OpenSymphony Group//XWork Validator 1.0.3//EN"
27                     "http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd">
28             <validators>
29                 <field name="username">
30                     <!-- 内置验证器都是定义好的,在xwork-core.jar com.opensymphony.xwork2.validator.validators包中的default.xml文件中 -->
31                     <field-validator type="requiredstring"><!-- 不能为null或者""字符串,默认会去掉前后的空格 -->
32                         <message>用户名不能为空</message>
33                     </field-validator>
34                 </field>
35             </validators>
36         动作类中指定的方法进行验证:
37             配置文件的名称书写有一定要求。
38                     动作类名-动作名(配置文件中的动作名)-validation.xml
39                     UserAction-user_add-validation.xml
bubuko.com,布布扣

 <param name="字段名">内容</param>要去找对应的类名 看看它里面的setXXX()是什么 然后注入

bubuko.com,布布扣
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 
 3 
 4   <!DOCTYPE validators PUBLIC
 5           "-//Apache Struts//XWork Validator 1.0.3//EN"
 6           "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
 7 
 8 <validators>
 9     <validator type="requiredstring">
10         <param name="fieldName">name</param>          参数的寻找:针对com.opensymphony.xwork2.validator.validators包中的   default.xml中针对requiredstring寻找类,然后 看看setXxx()方法注入字段名针对name参数不能为空。
 11 <message>xml said username bu neng为空空啊啊</message> 12 </validator>
      两种方式等同
13 <field name="name"> 14 <field-validator type="requiredstring"> 15 <message>xml said username can not bu null</message> 16 </field-validator> 17 </field> 18 19 </validators>
bubuko.com,布布扣

 但是有些地方只能用 validator ,用不了 field name= ,比如表达式

<validator type="expression">

  <param name="expression">

    maxNum>minNum

  </param>

</validator>

jsp页面用<s:actionerror/>输出的是动作错误  

<s:fielderror/>输出的是字段错误

 

例子程序:

Validate.java

bubuko.com,布布扣
bubuko.com,布布扣
 1 import java.util.Date;
 2 
 3 import org.apache.struts2.ServletActionContext;
 4 import org.apache.struts2.dispatcher.mapper.ActionMapping;
 5 
 6 import com.opensymphony.xwork2.ActionContext;
 7 import com.opensymphony.xwork2.ActionSupport;
 8 
 9 public class Validate extends ActionSupport {
10 
11     private String name;
12     private String password;
13     
14     public String getName() {
15         return name;
16     }
17 
18     public void setName(String name) {
19         this.name = name;
20     }
21 
22     public String getPassword() {
23         return password;
24     }
25 
26     public void setPassword(String password) {
27         this.password = password;
28     }
29 
30     public String display() {
31         System.out.println(name+"    ffffffffffffffffffffffffffffffffffffffff     "+password);
32         if(name==null||"".equals(name.trim()))
33              addFieldError("username", "用户不能为空啊啊");
34         if(password==null||password.matches("\\d{3,6}")==false)
35             addFieldError("password", "密码错了啊啊");
36         System.out.println(name+"   222222222 ffffffffffffffffffffffffffffffffffffffff     "+password);
37         return SUCCESS;
38     }
39 
40     public String execute()
41     {
42         System.out.println("has come to here");
43         return null;
44         
45     }
46 }
View Code
bubuko.com,布布扣

Validate-validate_display-validation.xml

bubuko.com,布布扣
bubuko.com,布布扣
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 
 3 
 4   <!DOCTYPE validators PUBLIC
 5           "-//Apache Struts//XWork Validator 1.0.3//EN"
 6           "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
 7 
 8 <validators>
 9     <validator type="requiredstring">
10         <param name="fieldName">name</param>
11         <message>xml said username bu neng为空空啊啊</message>
12     </validator>
13 <!--     等同于 -->
14     <field name="name">
15         <field-validator type="requiredstring">
16             <message>xml said username can not bu null</message>
17         </field-validator>
18     </field>
19 
20 </validators>        
View Code
bubuko.com,布布扣

struts.xml中

bubuko.com,布布扣
bubuko.com,布布扣
 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 4     "http://struts.apache.org/dtds/struts-2.3.dtd">
 5 
 6 <struts>
 7     <constant name="struts.devMode" value="true" />
 8     <constant name="struts.enable.DynamicMethodInvocation" value="false"></constant>
 9     <package name="mypackage" extends="struts-default">
10         <global-results>
11         <result name="error">/success.jsp</result>
12         </global-results>
13     </package>
14 <!--     <include file=""></include> -->
15 
16     <package name="validate" namespace="/validate" extends="mypackage">
17         <action name="validate_*" class="cn.itcast.helloworldemo.Validate" method="{1}">
18         <result name="success">/success.jsp</result>
19         <result name="input">/submit.jsp</result>
20         </action>
21     </package>
22 
23 
24 
25 
26     <!-- Add packages here -->
27 
28 </struts>
View Code
bubuko.com,布布扣

submit.jsp中

bubuko.com,布布扣
bubuko.com,布布扣
 1     <s:fielderror name="username"/>
 2 <%--     <s:fielderror name="password"/> --%>
 3     <form action="${pageContext.request.contextPath}/validate/validate_display" method="post">
 4         <input type="text" name="name"> 姓名
 5         <br/>
 6         <input type="text" name="password">密码
 7         <br/>
 8         <input type="text" name="birthday">生日
 9         <br/>
10         <input type="submit" >
11     </form>
View Code
bubuko.com,布布扣

 

 

用户输入验证的集总,布布扣,bubuko.com

用户输入验证的集总

原文:http://www.cnblogs.com/friends-wf/p/3767195.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!