- 浏览: 821989 次
- 性别:
- 来自: 株洲->深圳
文章分类
- 全部博客 (283)
- JAVA (54)
- 数据库 (25)
- Linux (22)
- Spring (9)
- Hibernate (7)
- mybatis (1)
- struts (10)
- javascript (22)
- Web (11)
- 异常 (30)
- 工具 (21)
- pay (9)
- 软件相关 (7)
- 其它 (28)
- python (1)
- 缓存 (9)
- 面试题 (2)
- 代码规范 (14)
- 网络编程 (1)
- 架构设计 (1)
- 程序测试 (3)
- 移动 (1)
- 安全 (2)
- 服务器 (4)
- 程序员 (1)
- php (4)
- 非技术 (7)
- web容器 (3)
- 竞彩篮球 (1)
- nginx (5)
- 加密 (2)
- jquery (2)
- 原理 (2)
- 项目管理 (1)
- www..betradar.com (0)
- www.betradar.com (1)
- 爬虫 (1)
最新评论
-
July01:
有一款web 打印控件StratoIO,浏览器和系统的兼容性都 ...
WEB免费打印控件推荐(4款) -
lihaimian:
你好,有个问题咨询一个,为何我在java中,无法使用与运算符, ...
位运算、异或的实际应用 -
小黄牛:
很好谢谢分享!推荐几篇spring boot基础入门文章:ht ...
Spring Boot 快速入门 (官方quick start) -
littlesheep:
我按照你的方法从新生成了密钥可是还是报者个错误...
狗日的支付宝 -
di1984HIT:
学习了~~~
javassist:增强型的java反射工具,获取方法参数名
(1) Apache Commons Validator
Commons -Validator包用来把验证规则程序提取出来,以供重复使用。这个包可以使用在Struts中,也可以独立的应用在任何其它的应用中。用户可以通过 java类的方式自定义验证方法,也可以在配置文件中通过正则表达式配置验证方法。它不但支持服务器端的验证,客户端的验证也支持,具体需要使用tag把 相应的js方法写入相应的页面中。
配置示例:
<form-validation> <global> <constant> <constant-name>验证方法的标志名</constant-name> <constant-value>正则表达式</constant-value> </constant> <validator name="这个验证方法的标志名,供下面的depends调用" classname="这个验证方法在哪个类中,为类全名" method="验证方法的名称" methodParams="这个验证方法需要的参数类型,依次以逗号格开,为类全名" depends="基于什么验证之上,可以为多个值,以逗号格开,值为方法的标志名" jsFunction="js的方法全名,格式为文件路径.方法名。文件路径以点隔开, 如果不填,默认为org.apache.commons.validator.javascript.xxxx" msg="对应于properties文件中的一条,作为不通过验证时返回的信息"/> </global> <formset language="语言" country="城市" variant="方言?"> <constant> <constant-name>验证方法的标志名</constant-name> <constant-value>正则表达式</constant-value> </constant> <form name="bean 对象名称"> <field property="bean中的属性名" depends="需要什么样的验证,可以为多个值,以逗号格开,值为方法的标志名"> <arg name = "变量名" key = "properties文件的key,或者来自Var的name" resource = "是/否来自资源文件"/> <var> <var-name>变量名</var-name> <var-value>变量值</var-value> </var> </field> </form> </formset> </form-validation>
官方地址:http://commons.apache.org/validator/index.html
参考:http://hi.baidu.com/pengwx/blog/item/db85b84b33d785f183025ce8.html
(2) iScreen
iScreen是一个Java对象验证框架。它的思想与Apache Jakarta的commons-validator项目相似,验证规则使用XML进行配置但也支持其它配置类型。它比commons-validator更强大,灵活,易于使用。
示例:
<validation-root namespace="my.project"> <validation-set id="RegistrationInfoSet" default-resource="theResource"> <!-- First, let's validate the user's first name. --> <use-validator ref="org.iscreen.StringValidator"> <mapping from="firstName" /> <label key="label.FirstName" /> <constraint property="minLength">1</constraint> <constraint property="maxLength">25</constraint> </use-validator> <!-- Now the last name. --> <use-validator ref="org.iscreen.StringValidator"> <mapping from="lastName" /> <label key="label.LastName" /> <constraint property="minLength">1</constraint> <constraint property="maxLength">30</constraint> </use-validator> <!-- Make sure that the registration date is after the birthdate. --> <use-validator ref="org.iscreen.DateRangeValidator"> <mapping from="birthDate" to="from" /> <mapping from="registrationDate" to="to" /> <label key="label.RegistrationDate" /> <failure property="failure" key="failure.RegistrationDate" /> </use-validator> <!-- Check the email address. --> <use-validator ref="org.iscreen.StringValidator"> <mapping from="emailAddress" /> <label key="label.EmailAddress" /> <constraint property="minLength">1</constraint> <constraint property="maxLength">256</constraint> </use-validator> </validation-set> <resource id="theResource"> <resource-file file="messages" /> </resource> </validation-root>
官方:http://i-screen.org/docs/index.html
(3) Java对象验证框架 OVal
OVal 是一个可扩展的Java对象数据验证框架,验证的规则可以通过配置文件、Annotation、POJOs 进行设定。可以使用纯 Java 语言、JavaScript 、Groovy 、BeanShell 等进行规则的编写。
示例:
private static class TestEntity { @Min(1960) private int year = 1977; @Range(min=1, max=12) private int month = 2; @ValidateWithMethod(methodName = "isValidDay", parameterType = int.class) private int day = 31; private boolean isValidDay(int day) { GregorianCalendar cal = new GregorianCalendar(); cal.setLenient(false); cal.set(GregorianCalendar.YEAR, year); cal.set(GregorianCalendar.MONTH, month - 1); cal.set(GregorianCalendar.DATE, day); try { cal.getTimeInMillis(); // throws IllegalArgumentException } catch (IllegalArgumentException e) { return false; } return true; } }
eSciDoc
https://www.escidoc.org/
SaferJava
http://code.google.com/p/saferjava/
Pinky
https://github.com/pk11/pinky
JProvocateur
http://www.jprovocateur.org/
NexOpen
http://nexopen.sourceforge.net/
gdv.xport
http://repository.agentes.de/gdv/gdv-xport/site/
suz-lab-gae
http://code.google.com/p/suz-lab-gae/
Cubby Simple Web Application Framework
http://cubby.seasar.org/20x/cubby-oval/index.html
Metawidget
http://metawidget.org
Struts 2 OVal Plug-in
http://cwiki.apache.org/confluence/display/S2PLUGINS/OVal+Plugin
Play! Framework
http://www.playframework.org/
Cayenne annotations
http://sourceforge.net/projects/cayannotations/
jsfatwork
http://code.google.com/p/jsfatwork/
mtn4java
http://www.mvnrepository.com/artifact/org.criticalsection.mtn4java/mtn4java/
Polyforms
http://code.google.com/p/polyforms/
rsser
http://code.google.com/p/rsser/
saetc
http://code.google.com/p/saetc/
ultimate-roundtrip
http://code.google.com/p/ultimate-roundtrip/
官方:http://oval.sourceforge.net/
(4) JaValid
JaValid是一个基于标注的验证框架,它允许用户标注Java类来引入验证。JaValid可以应用于任何类型的Java应用程序
示例:
package org.javalid.examples.core.example01; import org.javalid.annotations.core.JvGroup; import org.javalid.annotations.core.ValidateDefinition; import org.javalid.annotations.validation.MinLength; import org.javalid.annotations.validation.NotEmpty; import org.javalid.annotations.validation.NotNull; @ValidateDefinition public class Employee { private String firstName; private String lastName; public Employee() { } public void setFirstName(String firstName) { this.firstName = firstName; } @JvGroup (groups={"group01"}) @NotNull public String getFirstName() { return firstName; } public void setLastName(String lastName) { this.lastName = lastName; } @JvGroup (groups={"group01"}) @NotEmpty @MinLength (length=4) public String getLastName() { return lastName; } }
import java.util.List; import org.javalid.core.AnnotationValidator; import org.javalid.core.AnnotationValidatorImpl; import org.javalid.core.ValidationMessage; public class Test { public Test() { } public static void main(String[] args) { AnnotationValidator validator = null; List<validationmessage> messages = null; Employee emp = null; // Creates a default core validator using default configuration validator = new AnnotationValidatorImpl(); // Create our employee, as valid (no errors should be found) emp = new Employee(); emp.setFirstName("Martijn"); emp.setLastName("Reuvers"); // Validate our employee messages = validator.validateObject(emp,"group01"); System.out.println("Employee errors=" + messages.size()); // Should print 0 // Make our employee invalid emp.setFirstName(null); // NotNull should get fired messages = validator.validateObject(emp,"group01"); System.out.println("Employee errors=" + messages.size()); // Should print 1 System.out.println("Message=" + messages.get(0)); // Should print a NotNull message error // Make our employee even more invalid emp.setLastName(""); messages = validator.validateObject(emp,"group01"); System.out.println("Employee errors=" + messages.size()); // Should print 2 System.out.println("Messages=" + messages); // Should print a NotNull / NotEmpty message error // Set firstName fine, lastName too short length but not empty emp.setFirstName("Martijn"); emp.setLastName("Re"); messages = validator.validateObject(emp,"group01"); System.out.println("Employee errors=" + messages.size()); // Should print 1 System.out.println("Messages=" + messages); // Should print a MinLength message error // Finally, wrong group specified, validates nothing, as its not in the @JvGroup anywhere messages = validator.validateObject(emp,"invalidGroup"); System.out.println("Employee errors=" + messages.size()); // Should print 0 } }
这个相对功能少些,好像目前不支持配置,纯注解。
个人认为大型的网站还是要使用配置的形式,统一管理验证规则。
不知道还有没有其它好的后台验证方式。
发表评论
-
linux 服务器挂载出问题,导致写文件失败,程序超时
2014-07-11 11:07 0linux 服务器挂载出问题,导致写文件失败,程序超时 -
HessianProxy cannot connect to 'http://localhost
2014-04-12 10:57 3278HessianProxy cannot connect t ... -
位运算、异或的实际应用
2013-12-24 15:53 10874一. 位操作基础,用 ... -
了解LinkedList原理
2013-12-25 14:38 11651.LinkedList介绍 线性链表集合,循环链表ht ... -
了解ArrayList原理
2013-12-18 10:45 11141.ArrayList 介绍 有序集合,按顺序存储元素 ... -
java Cookie的有效期
2013-12-03 19:55 6017Cookie的有效期 Cookie的maxAge决定着Co ... -
10 道 Java 泛型面试题
2013-10-20 19:07 1798关于泛型的面试题在 Java面试中变得越来越常见,因为 Ja ... -
tomcat 访问记录日志
2013-05-17 01:43 1722Tomcat7.0.xx访问请求记录是默认打开的 ... -
支付宝RSA 公私钥 程序生成,openssl rsa 密钥程序生成,想要多少有多少
2013-05-01 00:21 30521.先配置好openssl 环境变量 保证cmd 输 ... -
MD2withRSA is disabled
2013-04-25 14:44 1757请求https报以一错误: javax.net.ssl.S ... -
狗日的支付宝
2013-04-24 23:26 14708用openssl 生成的密钥老是报以下错误: ja ... -
quartz 启动时会自动启动检测是否有可用的新版本
2013-04-24 20:06 1843日志提示: [org.quartz.utils.Updat ... -
Data truncation: Incorrect datetime value: '' for column 'createTime' at row
2013-03-22 17:11 21988mysql SQL Error: 0, SQLState: ... -
session失效通过头信息判断跳转
2013-03-13 18:06 1672/** * 拦截用户是否登录跳转到登录页 * 页面请 ... -
jsonlib转换树型数据没其它框架好
2013-01-26 14:39 1442jsonlib的性能请看这篇文章:http://wangym ... -
[ava.net.SocketException四大异常解决方案
2012-12-05 12:31 5297java.net.SocketException如何才能 ... -
SSM1.0中UpdateSingleCache 参数keyIndex,dataIndex解释
2012-08-31 00:21 1436simple-spring-memcached 简称:ssm ... -
simple-spring-memcached-3.0.x 注解详解
2012-08-10 18:37 4630@CacheName: 指定缓存实例注解 @Cach ... -
simple-spring-memcached-3.0.x 用了lombok类库记录一下
2012-08-08 12:20 1501消除冗长的 Java 代码 Lombok Lombok ... -
Ehcache集群使用
2012-07-21 15:48 4793集群的事例是由别人提供(附件也提供下载,我将相关包已导入),我 ...
相关推荐
本文将详细介绍一种基于Java的后台验证框架设计思路及其应用场景,旨在为开发者提供一种高效、可扩展且易于使用的验证方案。 #### 二、应用场景 在实际开发过程中,特别是在action或facade层,我们需要实现统一的...
总的来说,OVal是一个强大的Java验证框架,通过提供声明式的验证规则和灵活的验证器机制,使得开发者能够有效地确保程序中数据的正确性。了解并掌握OVal的使用,可以帮助我们编写出更健壮、更具防御性的代码,减少因...
OVal框架由德国软件公司Xceptance开发,旨在为Java开发者提供一种方便、灵活的方式来验证对象属性是否满足预设的约束条件。这些约束可以包括基本的数据类型检查,如非空、长度限制,也可以是复杂的业务逻辑验证。 ...
Java对象验证框架OVal是一个强大的工具,用于在Java应用程序中执行对象级别的验证。它提供了一种声明性的方式来定义验证规则,使得代码更加清晰、可维护,并减少了错误的可能性。OVal框架的核心理念是将验证逻辑与...
首先,Java Web开发框架通常包含以下几个关键组成部分: 1. **模型(Model)**:模型是业务逻辑的载体,负责处理数据和业务规则。在Java Web开发中,这通常通过JavaBeans或Entity类来实现,它们封装了数据库操作和...
### Java技术框架图知识点概述 ...以上是对“30种java技术框架图”中所涵盖的主要知识点的详细介绍。这些框架和技术涵盖了从底层基础设施到高层应用的各个层面,对于深入理解和掌握 Java 生态系统具有重要意义。
本文将对几种常见的Java系统框架进行简要介绍,帮助开发者更好地理解和选择适用的技术栈。 1. **Spring框架** Spring是企业级Java应用的事实标准,它是一个全面的开发框架,支持依赖注入(DI)、面向切面编程(AOP...
Java Application Service,通常简称为Java应用服务框架,是Java开发者用于构建可扩展、模块化且易于维护的企业级应用程序的一种常用工具。它提供了一种结构化的框架,帮助开发人员快速搭建和部署应用程序,同时确保...
Java框架论坛系统是一种基于Java技术实现的在线讨论平台,它主要利用了Struts框架进行构建。Struts是Apache软件基金会下的一个开源项目,是MVC(Model-View-Controller)设计模式的一种实现,广泛应用于Java Web开发...
### Java高级面试框架知识点整理 #### Struts框架详解 **1. Struts框架的基本结构**...以上是针对Struts、Hibernate、AOP和Spring这几个Java框架的一些关键知识点的总结,希望能够帮助读者更好地理解和掌握这些技术。
- 在实际开发中,为了保证代码的可读性和可维护性,建议在转换前先对Java对象进行数据校验。 - 使用Gson或Jackson等更现代的库,它们提供了更强大和灵活的JSON处理功能,性能也更好。 - 对于大型项目,考虑使用...
在IT行业中,Java框架是开发高效、可维护的软件应用的重要工具。本项目涉及的是一个基于Java框架构建的简单聊天室,重点在于理解和运用各种布局管理器来优化用户界面的展示。下面将深入探讨Java框架、布局管理和聊天...
在Java编程语言中,面向对象程序设计(Object-Oriented Programming, OOP)是一种核心的编程范式,它基于“对象”概念,将数据和处理数据的方法封装在一起,以实现代码的模块化和可重用性。这个压缩包文件"JAVA面向...
通过这样的设计,我们可以构建出一个强大且可扩展的数据校验框架。它不仅可以应用于简单的对象校验,还可以扩展到复杂业务场景,如表单验证、数据库操作前的数据检查等。 总的来说,基于校验器链的实现为Java开发者...
【JAVA-CS快速开发框架设计文档】是一份详细指导JAVA开发者在无IDE环境下构建高效开发框架的资料,旨在帮助程序员在不依赖特定集成开发环境的情况下,实现界面设计与事件代码的动态开发。这份文档可能涵盖了从基础...
### Java常用框架学习笔记 #### Hibernate ##### 1.1 Hibernate 实现数据库操作步骤 - **导入所需的Jar包**...以上内容概述了Java开发中常用的几个框架的基本概念和使用方法,对于初学者来说是非常有用的参考资料。
在游戏开发领域,Java作为一种高效、跨平台的语言,被广泛应用于游戏服务器的构建。本资料“Java游戏服务器框架.zip”包含了一套完整的Java游戏服务器框架,适合于初学者和有经验的开发者进行游戏开发的学习与实践。...
在这个“java框架基础”的主题中,我们将主要探讨几个流行的Java Web框架,如Spring、Struts和MyBatis,以及它们在实际项目中的应用。 首先,Spring框架是Java企业级应用开发的核心框架。它提供了全面的基础设施...
本文将探讨如何结合几种著名的Java框架——Struts、Spring和Hibernate,来实现应用的松耦合。 Struts作为表示层框架,主要负责管理用户的请求并作出响应。它提供了一个Controller,用于调度业务逻辑和视图处理,...