Archive for the 'Java技术' Category

WebWork基于正则表达式(regex)的输入验证

Tuesday, July 19th, 2005

本文内容
1.开发动机。
2.开发过程及示例程序代码
3.遇到的问题及思考。
4.引用内容
版权声明:可以任意转载,转载时请务必标明文章原始出处、作者及本声明:http://www.upulife.com
一:动机
前天学习了webwork的服务器端validation,不过xwork提供的几个验证类不能很符合开发的需要,特别是对于输入输出特殊字符的过滤功能,比如说用户名密码只能由字母和数字组成,而如果针对每种类型写一个验证类,那会很辛苦,不是吗?如果有一个通用的验证类该有多好啊。别急,有办法,文本处理和匹配正是正则表达式的长处,上午查了一下xwork文档中关于validation的描述和示例没找到相关的内容,所以决定自己写一个类,来实现正则表达式检验功能。经过实现和测试基本符合要求,不过使用了jdk1.4的regex库,低版本jdk不能使用。不知别人有什么其它办法?
由于刚转做java没几天对junit不是很熟悉,不知道像本文中写到的validation类如何进行单元测试,请高手指点。

二:开发过程及示例程序代码
先想一下我需要了解什么
1.由于对java不是很熟悉,首先要知道java中如何使用正则表达式。
2.如何实现一个validator类,可以在xwork中使用?
对于第二个问题很容易解决,因为我们有xwork的源代码嘛(赫赫,开源真是好啊。)
找到xwork源代码中StringLengthFieldValidator.java看一下人家是怎么实现的,xwork中实现 验证倒是不难,继承com.opensymphony.xwork.validator.validators.FieldValidatorSupport类就可以了,期间我又找到它们的父类以及实现的接口看了看,,也没细看(以后有时间慢慢看。)就开始考虑下一个问题了。。
如何在java中使用regex呢?不是很清楚,以前jdk中没这方面的库,据说oralily还是worx有一个实现,于上google搜索了一下,找到一个jdk的api,没想到jdk1.4已经开始支持regex了(看来regex魅力真是大呀,到处都有实现,unix下的工具我最喜欢的就属grep了。),怎么用呢?又找到csdn上的一篇文章< >http://dev.csdn.net/article/60/60832.shtm,呵呵,挺简单的(反正我也只用简单功能)
用是开始动手写validator类了:

/*
* Created on 2005-2-4
* hjleochen@hotmail.com
* GPL
*/
package com.xxxxxx.validator;

import java.util.regex.*;

import com.opensymphony.xwork.validator.validators.FieldValidatorSupport;
import com.opensymphony.xwork.validator.ValidationException;

/**
* @author leo
*
*使用正则表达式来检验输入字段是否符合条件,如果找到匹配则检验通过,不匹配则检验失败
*在xwork的validators体系中使用。
*使用了java的regex包,需要在jdk1.4及以上版本才能运行。
*
*/
public class StringRegexValidator extends FieldValidatorSupport {

private String regex=”";
private boolean doTrim = true;

public void validate( Object object )throws ValidationException{

String fieldName = getFieldName();
[…]

WebWork服务器端Validation的实现.(补充)

Tuesday, July 19th, 2005

文中说到的登陆程序的验证其实是很不严密的,还存在很多问题,比如:SQL注入问题没有处理,也就是输入中的特殊符号没有过滤等,所以只是一个示例实际应用中不可直接使用.
本来在那天写的时候想到了上面的问题,但是后来忘记写了。
现在正在找client side validation 和有没有regex功能的validation,如果没有就决定自己写一个了。.

WebWork服务器端Validation的实现.

Saturday, July 16th, 2005

系统测试。