`

struts2的输入校验+常用的校验器+基于XML实现的一些特性

阅读更多


输入验证的流程:
1. 类型转换器对请求参数执行类型转换,并把转换后的值赋给action的属性。

2. 如果在执行类型转换的过程中出现异常,系统会将异常信息保存到ActionContext,
   conversionError拦截器将异常信息添加到fileErrors里。不管类型转换是否出现异常
   ,都会进入第3步。

3. 系统通过反射技术先调用action的validateXxx()方法,Xxx为方法名。

4. 在调用action的validate()方法。

5. 经过上面4步 ,如果在系统中的fieldErrors存在错误信息(即存放错误信息的集合
   的size大于0),系统自动将请求转发至名称为input的视图 。如果系统中的fieldErrors
   没有任何错误信息,系统将执行action中的处理方法。 




对于输入校验struts2提供了两种实现
  @手工编写代码实现
  @基于配置XML的实现
 

1.手工编写代码实现对action中所有方法输入校验

通过重写validate()方法实现,validate方法会验证所有与execute方法签名相同的方法,当某个数据验证失败时,我们应该调用addFieldError()方法网系统的fieldErrors添加校验失败信息(为了使用addFieldError()方法,action必须继承ActionSupport),如果系统的fieldErrors包含错误信息,struts2会将请求转发到名为input的result。在input视图中可以通过<s:fielderror/>显示失败信息。
 
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.手工编写代码实现对action中指定方法输入校验 
通过validateXxx()方法实现,validateXxx()会验证action中方法名为xxx的方法,其它的流程与“手工编写代码实现对action中全部方法输入校验”一致。

3 . 基于XML配置实现对action中的所有方法进行输入校验
使用基于XML配置方式实现校验时,Action也要继承ActionSupport,并且提供校验文件,检验文件和action类放在统一包下,文件的取名格式为ActionClassName-validation.xml ,其中ActionClassName为action的简单类名,-validate为固定写法。
ActionClassName-validate.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">
            <param name="trim">true</param>
            <message>用户名不能为空!</message>
        </field-validator>
    </field>
    <field name="mobile">
        <field-validator type="requiredstring">
            <message>手机号不能为空!</message>
        </field-validator>
        <field-validator type="regex">
		     <param name="expression"><![CDATA[^1[358]\d{9}$]]></param>
		     <message>手机号格式不正确!</message>
		</field-validator>
    </field>
</validators>


常用的校验器
<field-validator type="requiredstring">
            <param name="trim">true</param>
            <message>用户名不能为空!</message>
</field-validator>  
<field-validator type="requiredstring">
            <message>手机号不能为空!</message>
</field-validator>
<field-validator type="regex">
	 <param name="expression"><![CDATA[^1[358]\d{9}$]]></param>
	 <message>手机号格式不正确!</message>
</field-validator>
<field-validator type="required">
	 <message>性别不能为空!</message>
</field-validator>
<field-validator type="stringlength">
	<param name="maxLength">10</param>
	<param name="minLength">5</param>
	<param name="trim">true</param>
	<message><![CDATA[产品名称应在5-10个字符之间]]></message>
</field-validator>
<field-validator type="email">
	 <message>电子邮件地址无效</message>
</field-validator>







4 . 基于XML配置实现对action中的指定方法进行输入校验 
   
    如果只需对action中的某个方法进行进行校验,只需步骤3的基础上,把校验文件的取名应为:
    ActionClassName-ActionName-validation.xml即可,但是这里的ActionName并不是struts中的配置的action名称(user_*)
    而应该是路径中的action,如现在要访问useraction的add方法
    http://localhost:8080/projectName/namespace/user_add.action
    那么此时的actionName应是user_add
    所以校验文件的名称应为UserAction-user_add-validation.xml。
 
5 . 基于XML校验的一些特性

  5.1 :当为某个action提供了ActionClassName-validation.xml和ActionClassName-ActionName-validation.xml
      两种规则的校验文件中,系统按下面顺序寻找校验文件,
         1>ActionClassName-validation.xml
         2>ActionClassName-ActionName-validation.xml
      在系统寻找到某一校验文件时还会继续搜索后面的校验文件,当搜索到所有校验文件时,会把校验文件里的所有校验规则汇总
     ,然后全部应用于action方法的校验。如果两个校验文件中的规则冲突,则使用后面文件中的校验规则。
  5.2 :当action继承了另一个action,父类的校验文件会被先搜到。
      假设UserAction继承BaseAction
         <action name="user" class="cn.action.UserAction" method="{1}">
         </action>
      访问上面的action,系统先搜索父类的校验文件:BaseAction-validation.xml,
      BaseAction-user-validation.xml,接着搜索子类的校验文件:UserAction-validation.xml,
      UserAction-user-validation.xml。应用于上面action的校验规则为这四个文件的总和。
 
 
  • 大小: 84.4 KB
1
0
分享到:
评论

相关推荐

    struts2的输入校验

    struts2的输入校验有两种方式: 一.重写validate()方式 二.采用配置文件的方式 先我们就以一个简单的登录的例子来讲解这个吧. 重点讲解下,第二个采用配置文件的方式: 1.添加一个xml的校验文件,保存在...

    struts2官方例子7-表单验证 xml形式的验证

    struts2官方例子7-表单验证 xml形式的验证,主要是在相应的action类旁,新建一个对应的xml文件,进行验证

    struts2校验器_xml格式

    使用struts2验证form表单信息_xml格式

    struts2基于xml验证(最常用的三种类型String、Date、int验证).doc

    struts2基于xml验证(最常用的三种类型String、Date、int验证).doc

    Struts2+Spring3+Hibernate3 用户管理系统实例源码

    本例主要是实现了struts2+spring3+hibernate3的 基本框架搭建的注册登录,以及用户增删改查,适于初学者学习。 包括:注册 登录功能 分页的实现 前端校验 验证码的实现 注册时有ajax 校验,登录时 后台从数据库...

    struts2 详解文档

    基于XML配置方式实现对action的所有方法进行校验 基于XML配置方式实现对指定action方法校验 配置国际化全局资源文件、输出国际化信息 输出带有占位符的国际化信息 配置包范围国际化资源文件 配置Action范围国际...

    struts2文件上传,与struts2-xml校验

    struts2文件上传,与xml校验 struts2文件校验可通过xml配对action的名称去校验属性的值。例如UploadAction.java中有一个book的属性。那么我可以定义一个UploadAction-validation.xml去校验这个book属性的内容。 xml的...

    struts2 spring2 hibernate3 ajax实现的一个注册登录实例

    演示功能包括: ...使用Struts2的JSON插件完成与Ajax的交互 实现校验用户名功能 压缩包中包括sql文件 修改reg_login\WEB-INF路径下的applicationContext.xml文件,将其中的数据库密码修改为你的数据库密码

    struts2-login校验.rar

    用tomcat服务器,通过struts.xml写的action来操作网页之间的重定向和对login数据的校验。(分为admin和user的login网页)

    struts2+spring整合登陆验证经典完整案例!

    启动Dos或shell窗口,进入reg_login\WEB-INF路径下,输入: ant compile -- 该命令用于编译应用。 5. 启动Tomcat服务器。 6. 系统的Login.jsp页面是登录页面,Regist.jsp页面是注册页面。

    Struts2正则表达式校验总结

    Struts2正则表达式校验总结正则表达式验证如下,注意验证框架的XML文件中如下写

    struts2讲义_吴峻申

    8.4 Struts2输入校验器大全 171 第9章 Struts2国际化 178 9.1 Struts2国际化基础应用 178 9.1.1 国际化基础使用方式 178 9.1.2 占位符国际化使用方式 182 9.2 Struts2国际化使用范围说明 185 9.2.1 Struts2包范围...

    基于 Java(SSH)+MySQL 实现(Web)的个人信息管理系统【100011128】

    Struts2+Spring3+Hibernate4集成框架,MySQL数据库搭建的个人... 要求: (1) 登录及注册页面要有输入校验,采取 struts2 的校验框架实现,即-validation.xml 配置文件的形式。 (2) 通讯录的查询功能必须支持模糊查询。

    Struts2入门教程(全新完整版)

    十二、总结 本教程对struts2的基本知识进行了一些说明,关于struts2的更多详细内容应参看struts2的官方文档及提供的app实例。 下面对struts2的基本执行流程作一简要说明,此流程说明可以结合官方提供的struts2结构图...

    基于struts2 的网络U盘

    数据库包括用户表和文件表,项目主体由Struts2框架搭建,前台jsp页面表单使用OGNL标签,XX_zh_CN(en_US).properties文件实现中英文国际化,XXAction-validation.xml实现表单校验,MD5加密文件绝对路径,保护文件安全...

    Struts 自定义 字符串长度校验

    这个一个简单的输入校验工程,通过 struts 的 校验文件 ActionName-validation.xml 文件 和 扩展的 校验类 CheckStringLength 进行字符串长度校验。工程使用 MyEclipse 8.5 编译,可以正常运行。

    23基于XML配置方式实现对指定action方法校验.zip

    23基于XML配置方式实现对指定action方法校验.zip

    22基于XML配置方式实现对action的所有方法进行校验.zip

    22基于XML配置方式实现对action的所有方法进行校验.zip

    struts2_validation

    Struts2提供了一些基于XWork Validation Framework的内建验证程序,它们大大简化了输入验证工作。 使用这些验证程序不需要编程,程序员只需要在一个XML文件里对验证程序应该如何工作做出声明就行了。需要声明的内容...

Global site tag (gtag.js) - Google Analytics