Struts2用户输入的校验

来源:互联网 发布:sql的encode decode 编辑:程序博客网 时间:2024/06/06 07:46

1. 认知

校验工作量比较大
客户端校验:js
服务器端校验:代码
实际开发:客户端+服务器端校验

2.Struts2中的校验

前提:动作类继承ActionSupport
转换失败:都会转向一个name=input的逻辑视图

2.1 编程式校验:代码中编写校验代码

缺点:硬编码是最大的缺点
优点:对于验证可以做到更加精细化

2.1.1 针对动作类中的所有动作方法进行校验:

覆盖validate方法即可,会在动作方法执行前先执行(拦截器干的)
代码校验

2.1.2 针对某个动作方法进行校验

方式一:覆盖validate方法,对于不需要校验的使用@SkipValidation
方式二:覆盖validate方法时,遵守一定的命名规则
比如验证login动作方法:public void validateLogin(){}

public void validateRegist(){    if(StringUtils.isBlank(user.getUsername())){    //没有输入用户名    addFieldError("username","请输入用户名");     }}

2.2 声明式校验:可插入式的校验方式(推荐使用)

2.2.1 针对所有动作方法进行校验

在动作类所在的包中,建立一个名称为”动作类名-validation.xml”的配置文件

从xwork-core-.jar中找到xwork-validator-1.0.3.dtd

方式一:针对字段,先写字段,后指定的验证器

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE validators PUBLIC        "-//Apache Struts//XWork Validator 1.0.3//EN"        "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"><validators>    <!-- 针对某个字段进行验证:字段名对应表单的输入域的名称 -->    <field name="username">        <!-- 指定验证器:内置验证器requiredstring。判断是否为null或空字符串,默认去掉首位空格 -->        <field-validator type="requiredstring">            <!-- 错误消息提示 -->            <message>您的用户名呢</message>        </field-validator></validators>

方式二:先指定验证器,再告知要验证的字段

    <validator type="requiredstring">        <!-- 给验证器注入参数:setFieldName(),告知要验证的是哪个字段 -->        <param name="fieldName">password</param>        <param name="trim">false</param>        <message>您的密码呢</message>    </validator>

2.2.2 针对某个动作进行校验

在动作类所在的包中,建立一个名称为”动作类名-动作名-validation.xml”的配置文件

2.2.3 struts2中提供的内置验证器

在xwork-core-2.3.15.3.jar\com\opensymphony\xwork2\validator\validators\default.xml文件中
内置验证器

系统提供的校验器

0 0