第15章struts2校验机制.docx

上传人:b****7 文档编号:23988059 上传时间:2023-05-23 格式:DOCX 页数:50 大小:117.67KB
下载 相关 举报
第15章struts2校验机制.docx_第1页
第1页 / 共50页
第15章struts2校验机制.docx_第2页
第2页 / 共50页
第15章struts2校验机制.docx_第3页
第3页 / 共50页
第15章struts2校验机制.docx_第4页
第4页 / 共50页
第15章struts2校验机制.docx_第5页
第5页 / 共50页
点击查看更多>>
下载资源
资源描述

第15章struts2校验机制.docx

《第15章struts2校验机制.docx》由会员分享,可在线阅读,更多相关《第15章struts2校验机制.docx(50页珍藏版)》请在冰豆网上搜索。

第15章struts2校验机制.docx

第15章struts2校验机制

输入校验

一、Struts2校验机制

Struts2框架提供了优秀的校验机制,它们可以分为3部分:

(1)内置校验器,对web应用开发中常见的校验功能进行了封装

(2)校验规则声明,允许开发人员通过XML配置文件或者JavaAnnoation来引用内置校验器定义输入校验规则

(3)校验拦截器,框架通过拦截器validation和workflow来实现对输入信息的校验工作。

Validation拦截器根据校验规则声明调用内置拦截器实现校验工作,并负责维护创建一个字段相关的错误信息列表,workflow负责检查此错误信息列表,如果存在错误信息,则返回Action组件相关的input结果视图,并在返回的视图中显示相关的错误信息。

此外还支持开发人员定义自己的校验器。

类型转换和输入校验是Struts2框架对客户端提交信息进行处理的两个阶段。

客户端提交的信息首先进行类型转换,不管是否在转换过程中出现异常,都将进入输入校验阶段。

只有在类型转换和输入校验没有任何错误的情况下才会进入Action组件的业务逻辑处理。

 

二、利用Struts2框架实现校验

【例子】

【Quiz.jsp】

<%@pagecontentType="text/html"pageEncoding="UTF-8"%>

<%@taglibprefix="s"uri="/struts-tags"%>

DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"

"http:

//www.w3.org/TR/html4/loose.dtd">

问卷调查

你喜欢的笔记本品牌

fielderror/>

formaction="basicValidate"method="post"namespace="/validate">

textfieldname="name"label="姓名"/>

textfieldname="age"label="年龄"/>

textfieldname="answer"label="笔记本品牌"/>

submitvalue="提交"/>

form>

【Quiz_success.jsp】

<%@pagecontentType="text/html"pageEncoding="UTF-8"%>

<%@taglibprefix="s"uri="/struts-tags"%>

<%@pageisELIgnored="false"%>

DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"

"http:

//www.w3.org/TR/html4/loose.dtd">

问卷结果

谢谢!

propertyvalue="name"/>

你喜欢的笔记本品牌是:

propertyvalue="answer"/>

【QuizAction.java】

packagemy.ognl;

importcom.opensymphony.xwork2.ActionSupport;

publicclassQuizActionextendsActionSupport{

privateStringname;

privateintage;

privateStringanswer;

publicStringgetName(){

returnname;

}

publicvoidsetName(Stringname){

this.name=name;

}

publicintgetAge(){

returnage;

}

publicvoidsetAge(intage){

this.age=age;

}

publicStringgetAnswer(){

returnanswer;

}

publicvoidsetAnswer(Stringanswer){

this.answer=answer;

}

}

【QuizAction-validation.xml】

xmlversion="1.0"encoding="UTF-8"?

>

DOCTYPEvalidatorsPUBLIC

"-//ApacheStruts//XWorkValidator1.0.2//EN"

"http:

//struts.apache.org/dtds/xwork-validator-1.0.2.dtd">

用户名不可为空

6

120

年龄值超出合理范围

【struts.xml】

class="my.ognl.QuizAction"method="execute">

/WEB-INF/page/Quiz_success.jsp

/Quiz.jsp

测试

地址栏输入

http:

//localhost:

8080/example_ch1/Quiz.jsp

如果不输入姓名,年龄输入200,笔记本品牌输入IBM,得到的结果为

 

在与Action组件同样的package路径下寻找名为**-validation.xml的校验规则声明文件,其中**代表Action组件的名称。

对于实现了输入校验的Action组件,必须定义一个名为input的Result视图,当框架调用校验器执行校验失败时,将返回此Result视图。

 

三、Struts2内置校验器

位于xwork-2.0.4.jar压缩包中( com.opensymphony.xwork2.validator.validators)有个文件default.xml ,该文件中定义了Struts2框架内建的校验器。

default.xml文件定义了常用的校验器类型。

 

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

 

 

四、校验器配置

字段校验器:

判断某个字段属性的输入是否有效

非字段校验器:

不是针对某个字段,而是针对多个字段的输入值之间的逻辑关系进行校验

相应的,Struts2内置校验器也就有两种配置风格,一种是字段校验风格,一种是非字段校验风格。

1、必填校验器,指定字段不允许为空:

(1)非字段校验:

    

        username

        用户名不能为空

    

(2)字段校验:

    

        

            用户名不能为空

        

    

 2、必填字符串校验器,字段值必须非空且长度大于0:

(1)非字段校验:

    

        username

        true

        用户名不能为空

    

(2)字段校验:

    

        

            true

            用户名不能为空

        

    

∙trim:

可选参数,用于指定是否在校验之前对字符串进行整理,默许为true。

3、字符串长度校验器,要求被校验的字段长度必须在指定范围之内:

(1)非字段校验:

    

        username

        4

        10

        用户名长度在${minLength}到${maxLength}之间

    

(2)字段校验:

    

        

            4

            10

            true

            

        

    

4、整数校验器,整数值在指定的范围内:

(1)非字段校验:

    

        age

        10

        100

        年龄必须在在${min}到${max}之间

    

(2)字段校验:

    

        

            10

            100

            年龄必须在在${min}到${max}之间

        

    

5、日期校验器,要求日期在指定范围内

(1)非字段校验:

    

        birthday

        1990-01-02

        2010-07-28

        生日数据错误

    

(2)字段校验:

    

        

            1990-01-01

            2010-07-28

            

        

    

∙min:

指定字段日期值的最小值,该参数为可选参数。

∙max:

指定字段日期值的最大值,该参数为可选参数。

6、浮点数值校验器:

(1)非字段校验:

    

        percentage

        20.1

        50.1

        数据错误

    

(2)字段校验:

    

        

            20.1

            50.1

            

        

    

∙minInclusive|minExclusive:

指定字段的最小值,包含该值|不包含该值。

∙maxInclusive|maxExclusive:

指定字段的最大值, 包含该值|不包含该值。

7、表达式校验器,要求满足指定的表达式要求:

    

        .......

        FailedtomeetOgnlExpression...

    

∙expression:

该参数为一个逻辑表达式,该参数使用OGNL表达式,并基于值栈计算,返回一个Boolean类型值。

8、字段表达式校验器,要求指定字段值满足表达式要求:

(1)非字段校验:

    

        myField

        

[CDATA[#myCreditLimit>#myGirfriendCreditLimit]]>

        MycreditlimitshouldbeMOREthanmygirlfriend

    

(2)字段校验:

    

        

            

[CDATA[#myCreditLimit>#myGirfriendCreditLimit]]>

            MycreditlimitshouldbeMOREthanmygirlfriend

        

    

9、邮件地址校验器,有效的邮件地址

(1)非字段校验:

    

        MyEmail

        非法的邮件地址

    

(2)字段校验:

    

        

           非法的邮件地址

        

    

10、网址校验器,指定字段是否是有效的URL地址:

(1)非字段校验:

    

        myHomePage

        Invalidhomepageurl

    

(2)字段校验:

    

        

            Inva

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1