基于Annotation的输入校验
这种基于Annotation的输入校验实质上也属于Struts 2“零配置”特性的部分,它允许使用Annotation来定义每个字段应该满足的规则,Struts 2在com.opensymphony.xwork2.validator.annotations包下提供了大量校验器相关的Annotation,这些Annotation和前面介绍的验证器大致上一一对应,读者可以自行查阅API文档。
为了在Action类通过Annotation指定验证规则,经过如下配置即可:
Ø 使用验证器Annotation修饰Action里各属性对应的setter方法。
下面我们在前面I18NValidate应用的基础上进行修改,将该应用的WEB-INF\src\lee路径下的校验规则文件删除,修改该路径下的RegistAction.java文件,通过注释指定各属性应该满足的规则。修改后的Action代码如下所示。
程序清单:codes\04\4.2\annotation\WEB-INF\src\org\crazyit\app\action\RegistAction.java
- public class RegistAction extends ActionSupport
- {
- private String name;
- private String pass;
- private int age;
- private Date birth;
- //name属性的setter和getter方法
- //使用Annotation指定必填、正则表达式两个校验规则
- @RequiredStringValidator(key = "name.requried"
- , message = "")
- @RegexFieldValidator(expression = "\\w{4,25}"
- ,key = "name.regex" , message = "")
- public void setName(String name)
- {
- this.name = name;
- }
- public String getName()
- {
- return this.name;
- }
- //pass属性的setter和getter方法
- @RequiredStringValidator(key = "pass.requried"
- ,message = "")
- @RegexFieldValidator(expression = "\\w{4,25}"
- ,key = "pass.regex" ,message = "")
- public void setPass(String pass)
- {
- this.pass = pass;
- }
- public String getPass()
- {
- return this.pass;
- }
- //age属性的setter和getter方法
- @IntRangeFieldValidator(message = ""
- , key = "age.range", min = "1"
- , max = "150")
- public void setAge(int age)
- {
- this.age = age;
- }
- public int getAge()
- {
- return this.age;
- }
- //birth属性的setter和getter方法
- //使用Annotation指定日期范围校验规则
- @DateRangeFieldValidator(message = ""
- , key = "birth.range", min = "1900/01/01"
- , max = "2050/01/21")
- public void setBirth(Date birth)
- {
- this.birth = birth;
- }
- public Date getBirth()
- {
- return this.birth;
- }
- }
上面Action的粗体字代码使用了验证器Annotation修饰了各属性的setter方法,这样Struts 2就知道了各属性应该满足怎样的规则。通过在Action中使用Annotation指定各字段应该满足的校验规则,就可以避免书写XML校验规则文件。
关于使用Annotation来代替XML配置文件,这是JDK 1.5新增Annotation后的一个趋势,使用这种方式无须编写XML文件,从而可以简化应用开发,但带来的副作用是所有内容都被写入Java代码中,会给后期维护带来一定困难。
基于Annotation的输入校验相关推荐
- 转载 - Struts2基于XML配置方式实现对action的所有方法进行输入校验
出处:http://www.cnblogs.com/Laupaul/archive/2012/03/15/2398360.html http://www.blogjava.net/focusJ/arc ...
- Struts 2的输入校验(一)
9 Struts 2的输入校验 输入校验有两种:客户端和服务器端校验.客户端校验一般是通过JavaScript来完成,这种校验可减轻服务器压力.服务器校验主要通过服务器端编程的方式来完成. (1) 客 ...
- Struts 2的输入校验(二)
9.2 基于Struts 2验证框架的输入校验 Struts 2提供了更高效,简易的校验框架,用户只需设置校验配置文件即可完成输入校验.基于验证框架来完成输入校验,只需在与Action同目录下下创建一 ...
- java安全编码指南之:输入校验
文章目录 简介 在字符串标准化之后进行校验 注意不可信字符串的格式化 小心使用Runtime.exec() 正则表达式的匹配 简介 为了保证java程序的安全,任何外部用户的输入我们都认为是可能有恶意 ...
- Struts 2读书笔记-----使用Struts 2的输入校验
输入校验是所有的Web应用必须处理的问题.一个健壮的应用系统必须可以阻止一些非法的输入,防止这些非法的输入进入系统.这样才可以保证系统不受到影响. 输入校验可以分为客服端校验和服 ...
- 一步一步手绘Spring IOC运行时序图三(基于Annotation的IOC容器初始化)
相关内容: 架构师系列内容:架构师学习笔记(持续更新) 一步一步手绘Spring IOC运行时序图一(Spring 核心容器 IOC初始化过程) 一步一步手绘Spring IOC运行时序图二(基于XM ...
- SSM源码分析之Spring05-DI实现原理(基于Annotation 注入)
目录导航 前言 注解的引入 AnnotationConfigApplicationContext 对注解Bean初始化 AnnotationConfigApplicationContext注册注解Be ...
- java密码安全验证_java安全编码指南之:输入校验
简介 为了保证java程序的安全,任何外部用户的输入我们都认为是可能有恶意攻击意图,我们需要对所有的用户输入都进行一定程度的校验. 本文将带领大家探讨一下用户输入校验的一些场景.一起来看看吧. 在字符 ...
- java判断输入的格式化_java安全编码指南之:输入校验 - flydean - 博客园
目录简介 在字符串标准化之后进行校验 注意不可信字符串的格式化 小心使用Runtime.exec() 正则表达式的匹配 简介 为了保证java程序的安全,任何外部用户的输入我们都认为是可能有恶意攻击意 ...
最新文章
- R语言dplyr包all_equal函数检查多个dataframe是否相同实战
- linux upx 报错 NotCompressibleException
- java修改文件的大小限制_Struts2修改上传文件大小限制方法解析
- 关于$'\r': command not found错误的一点体会
- JVM笔记(JVM内存+垃圾回收器)详解
- 阿里巴巴AI智能专场:整理分享
- C#委托和事件的应用Observer模式实例
- 使用 tftp 无法向服务器上传文件问题解决
- ccproxy8.0破解版
- 华为云Hadoop与Spark集群环境搭建
- Java Day24
- 如何在论文中画出漂亮的插图?
- c语言error c2198,为何会出现error C2198: 'create' : too few actual parameters呢?
- 安卓如何使用layout布局的弹出框AlertDialog
- AppleWebKit/537.36(KHTML,likeGecko)与cdn讲解
- [telink sig mesh] 按键及任意按键长按清空网络
- 腾讯游戏盒子当中的游戏医生功能分析
- pam php水解加碱,PAM酸性水解反应聚丙烯酰胺
- 分享几种锂电池均衡电路的工作原理
- 如何画出广义表的存储结构