Struts2输入验证
标签: JAVA框架
一、输入验证
用户输入的内容进行验证
客户端验证 用js
服务端的验证
实际开发的时候,客户端和服务端都验证
1、编程式验证
a、针对动作类中的所有动作方法进行验证
1、动作类需要实现ActionSupport,覆盖public void validate()
2、方法中,编写你的验证规则,不正确情况调用addFieldError添加错误信息
3、验证失败
视图:会自动转向一个name=input的逻辑视图
错误消息提示,在structs2标签库中提示,s:fielderror
struct2标签库使用规则:
引入struct2标签库<%@taglib uri = "/structs-tags" prefix="s" %>
<s:fielderror></s:fielderror>
b、针对动作类中的某个方法不想验证
方式一:简单 使用一个注解
@SkipValidation
public String query(){
System.out.println("query");
System.out.println("11"+custom);
//bs.register(custom);
return SUCCESS;
}
方式二:只针对某一个方法进行验证,如只针对register进行验证
可以定义一个方法public void validateRegister() 这样就只针对register进行验证
2、声明式验证
把验证规则写到配置文件中
a、针对动作类中所有的方法进行验证
在动作类所在的包中建立:动作类名-validation.xml配置文件
文件具体代码见工程
b、针对动作类中的指定动作方法进行验证
在动作类所在的包中建立:动作类名-动作名(是请求的struts.xml配置文件中的)-validation.xml配置文件。
<!--field 指定要验证的字段 name是字段名 和表单中的名称一致 -->
<field name="username">
<!--指定验证规则 type 是验证规则 required是struts2内置的验证器
内置验证器在xwork-core-2.3.34.jar包中的com\opensymphony\xwork2\validator\validators\default.xml文件中
-->
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>用户名不能为空</message>
</field-validator>
<field-validator type="regex">
<param name="regexExpression">^[a-zA-Z]\w{5,15}$</param>
<message>用户必须为6到16位,必须是英文字母数字下划线</message>
</field-validator>
</field>