validators.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator Definition 1.0//EN"
"http://struts.apache.org/dtds/xwork-validator-definition-1.0.dtd">
<validators>
<validator name="passwordintegrity" class="com.jaeson.struts.validator.PasswordIntegrityValidator" />
</validators>
import java.util.regex.Pattern;
import java.util.regex.Matcher;
import com.opensymphony.xwork2.validator.ValidationException;
import com.opensymphony.xwork2.validator.validators.FieldValidatorSupport;
public class PasswordIntegrityValidator extends FieldValidatorSupport {
static Pattern digitPattern = Pattern.compile("[0-9]");
static Pattern letterPattern = Pattern.compile("[a-zA-Z]");
static Pattern specialDefaultPattern = Pattern.compile("[!@#$]");
@Override
public void validate(Object object) throws ValidationException {
String fieldName = this.getFieldName();
String fieldValue = (String) this.getFieldValue(fieldName, object);
fieldValue = fieldValue.trim();
Matcher digitMatcher = digitPattern.matcher(fieldValue);
Matcher letterMatcher = letterPattern.matcher(fieldValue);
Matcher specialMatcher;
if (this.getSpecialCharacter() != null) {
Pattern specialPattern = Pattern.compile("[" + this.getSpecialCharacter() + "]");
specialMatcher = specialPattern.matcher(fieldValue);
} else {
specialMatcher = specialDefaultPattern.matcher(fieldValue);
}
if (!digitMatcher.find()) {
this.addFieldError(fieldName, object);
} else if (!letterMatcher.find()) {
this.addFieldError(fieldName, object);
} else if (!specialMatcher.find()) {
this.addFieldError(fieldName, object);
}
}
private String specialCharacter;
public String getSpecialCharacter() {
return specialCharacter;
}
public void setSpecialCharacter(String specialCharacter) {
this.specialCharacter = specialCharacter;
}
}
validators.xml放在与struts.xml相同的目录下
本文介绍了一个用于Struts2框架的密码强度验证器实现,该验证器通过正则表达式检查密码是否包含数字、字母及特殊字符。此外,还支持自定义特殊字符集。
807

被折叠的 条评论
为什么被折叠?



