1.Action类
public class ValidateAction extends ActionSupport{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String execute(){
return SUCCESS;
}
}
2.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>My JSP 'HelloWorld.jsp' starting page</title>
</head>
<body>
<s:form action="validateAction" method="post">
<s:textfield name="name" label="用户名"></s:textfield>
<s:submit value="提交"></s:submit>
</s:form>
</body>
</html>
3.struts.xml配置
<package name="validator" extends="struts-default">
<action name="validateAction" class="com.skymr.struts2.chapter4.action.ValidateAction">
<result name="success">/regSuc.jsp</result>
<result name="input">/validate.jsp</result>
</action>
</package>
4.校验文件配置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="required" class="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator"/>
<validator name="requiredstring" class="com.opensymphony.xwork2.validator.validators.RequiredStringValidator"/>
<validator name="int" class="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator"/>
<validator name="long" class="com.opensymphony.xwork2.validator.validators.LongRangeFieldValidator"/>
<validator name="short" class="com.opensymphony.xwork2.validator.validators.ShortRangeFieldValidator"/>
<validator name="double" class="com.opensymphony.xwork2.validator.validators.DoubleRangeFieldValidator"/>
<validator name="date" class="com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator"/>
<validator name="expression" class="com.opensymphony.xwork2.validator.validators.ExpressionValidator"/>
<validator name="fieldexpression" class="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator"/>
<validator name="email" class="com.opensymphony.xwork2.validator.validators.EmailValidator"/>
<validator name="url" class="com.opensymphony.xwork2.validator.validators.URLValidator"/>
<validator name="visitor" class="com.opensymphony.xwork2.validator.validators.VisitorFieldValidator"/>
<validator name="conversion" class="com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator"/>
<validator name="stringlength" class="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator"/>
<validator name="regex" class="com.opensymphony.xwork2.validator.validators.RegexFieldValidator"/>
<validator name="conditionalvisitor" class="com.opensymphony.xwork2.validator.validators.ConditionalVisitorFieldValidator"/>
<validator name="sensitive" class="com.skymr.struts2.chapter4.action.SensitiveValidator"/>
</validators>
名为sensitive校验器是自定义的.
配置文件ValidateAction-validate.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.2//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
<validators>
<field name="name">
<field-validator type="requiredstring">
<message>请填写用户名</message>
</field-validator>
<field-validator type="sensitive">
<message>包含敏感词汇</message>
</field-validator>
</field>
</validators>
5.自定义校验类
package com.skymr.struts2.chapter4.action;
import com.opensymphony.xwork2.validator.ValidationException;
import com.opensymphony.xwork2.validator.validators.FieldValidatorSupport;
public class SensitiveValidator extends FieldValidatorSupport{
public void validate(Object object) throws ValidationException {
String filedName = super.getFieldName();
String filedValue = super.getFieldValue(filedName, object).toString();
if(!this.check(filedValue)){
super.addFieldError(filedName, object);
}
}
protected boolean check(String value){
String[] valiArr = new String[]{"***","***"};
for(String vali: valiArr){
if(value.indexOf(vali) >= 0){
return false;
}
}
return true;
}
}
敏感字符串数组要经过自己修改