Struts2的输入校验(1)

      ——校验规则文件的编写

  Struts2提供了基于验证框架的输入校验,所有的输入校验只要编写配置文件,Struts2的验证框架将会负责进行服务器校验和客户端校验。

  注:

  客户端校验:过滤正常用户的误操作,使用JavaScript代码完成;

  服务器端校验:组织非法数据的输入,是整个应用的最后防线,在应用中通过编程的方式实现。

  使用Struts2的校验框架进行校验时,无须对程序的代码进行改变,只需要编写校验规则文件即可,校验规则文件制定每个表单域应该满足怎样的输入规则。

(1)现有如下表单需要提交:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>注册 - 1</title>
</head>
<body>
<s:form action="regist_1">
    <s:textfield name="username" key="用户名"/>
    <s:password name="password" key="密码"/>
    <s:textfield name="age" key="年龄"/>
    <s:textfield name="birth" key="生日"/>
    <tr>
        <td rowspan="1">
            <s:reset value="重置" theme="simple"/>
            <s:submit value="注册" theme="simple"/>
        </td>
    </tr>
</s:form>
</body>
</html>

(2)该请求对应的Action代码,这个Action类继承ActionSupport基类,使用其默认的处理逻辑,没有对封装的请求进行任何的校验:

package myAction;

import java.util.Date;

import com.opensymphony.xwork2.ActionSupport;

public class Regist1Action extends ActionSupport{
    //封装请求参数
    private String username;
    private String password;
    private int age;
    private Date birth;
    //setter、getter方法
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public Date getBirth() {
        return birth;
    }
    public void setBirth(Date birth) {
        this.birth = birth;
    }
    //处理逻辑使用ActionSupport基类的默认方法
}

(3)为该Action指定一个校验规则文件,对该Action进行校验

<?xml version="1.0" encoding="UTF-8"?>
<!-- 指定校验配置文件的DTD信息 -->
<!DOCTYPE validators PUBLIC
        "-//Apache Struts//XWork Validator 1.0.2//EN"
        "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
<!-- 校验文件的根元素 -->
<validators>
    <!-- 校验Action的username属性 -->
    <field name="username">
        <field-validator type="requiredstring">
            <param name="trim">true</param>
            <message>必须输入用户名</message>
        </field-validator>
        <field-validator type="regex">
            <param name="regex"><![CDATA[(\w(4,25))]]></param>
            <message>输入的用户名必须是字母和数字,且长度在4-25之间</message>
        </field-validator>
    </field>
    <!-- 校验Action的password属性 -->
    <field name="password">
        <field-validator type="requiredstring">
            <param name="trim">true</param>
            <message>必须输入密码</message>
        </field-validator>
        <field-validator type="regex">
            <param name="regex"><![CDATA[(\w(4,25))]]></param>
            <message>输入的密码必须是字母和数字,且长度在4-25之间</message>
        </field-validator>
    </field>
    <!-- 校验Action的age属性 -->
    <field name="age">
        <field-validator type="int">
            <param name="min">1</param>
            <param name="max">150</param>
            <message>年纪必须在1-150之间</message>
        </field-validator>
    </field>
    <!-- 校验Action的birth属性 -->
    <field name="birth">
        <field-validator type="date">
            <param name="min">1900-01-01</param>
            <param name="max">2050-01-01</param>
            <message>输入的生日必须在${min}到${max}之间</message>
        </field-validator>
    </field>
</validators>

注:此配置文件文件名格式为:ActionName-validation.xml,其中ActionName是对应Action的类名,并且此配置文件应该和Acion类在同一个路径下。

Struts2的输入校验(1)——校验规则文件的编写的更多相关文章

  1. Drools 规则文件语法概述

    概述(Overview) 以.drl为扩展名的文件,是Drools中的规则文件,规则文件的编写,遵循Drools规则语法.下面详细介绍一下Drools规则文件语法.具体参考官方文档: https:// ...

  2. Struts2的输入校验(2)——客户端校验

    Struts2的输入校验(2) --客户端校验 Struts2客户端校验的使用: (1)使用Struts2的标签生成输入页面的表单: (2)为该<s:form>元素添加validate=& ...

  3. Struts2的输入校验

    一.Struts2提供了基于验证框架的输入校验,在这种校验方式下,所有的输入校验只需要编写简单的配置文件,Struts2的验证框架将会负责进行服务器校验和客户端校验. 校验失败后将Struts2将自动 ...

  4. Struts2框架(8)---Struts2的输入校验

    Struts2的输入校验 在我们项目实际开发中在数据校验时,分为两种,一种是前端校验,一种是服务器校验: 客户端校验:主要是通过jsp写js脚本,它的优点很明显,就是输入错误的话提醒比较及时,能够减轻 ...

  5. (十三)struts2的输入校验

    输入校验是web应用必须处理的问题,要防止用户的误输入和恶意非法输入.struts2给我们提供了非常强大的输入校验体系. 输入校验分为客户端校验和服务器端校验.一般开发中两者都用,但是服务端校验必须使 ...

  6. JavaWeb框架_Struts2_(六)----->Struts2的输入校验

    1. 输入校验章节目录 输入校验概述 客户端校验 服务器端校验 手动编程校验 重写validate方法 重写validateXxx()方法 输入校验流程 校验框架校验 Struts2 内置的校验器 常 ...

  7. Struts2学习笔记(九)——数据校验

    Struts2的数据校验属于服务器端校验,Struts2 支持校验方式 : 手动校验(代码校验) :在服务器端通过编写java代码,完成数据校验 自动校验(配置校验) :XML配置校验(主流) 和 注 ...

  8. springMVC:校验框架:多规则校验,嵌套校验,分组校验;ssm整合技术

    知识点梳理 课堂讲义 学习目标 能够阐述表单验证的分类和区别 能够运用表单验证的常用注解 能够编写表单验证的示例 能够编写SSM整合的应用案例 能够总结SSM整合的步骤 1 校验框架 1.1 入门-视 ...

  9. 校验 CentOS 7 镜像文件

    验证镜像文件的原因 CentOS Vault(http://vault.centos.org/)页脚的镜像站链接上有段英文,指出页脚的镜像站链接不受 CentOS 团队的监控,除此之外还有一个原因就是 ...

随机推荐

  1. ligerUI_入门_001_设置文本能否被编辑、事件

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. docker 批量删除容器

     docker rm `docker ps -a |awk '{print $1}' | grep [0-9a-z]`

  3. java将数组中的零放到末尾

    package com.shb.java; /** * 将数组中的0放到数组的后边,然后原来的非零数的顺序不改变 * @author BIN * */ public class Demo2{ publ ...

  4. sql 表连接 join

    inner join  和  join  的 区别 inner join 是内连接 ,查询出两边 都有的数据 join  是交叉 连接, 假设集合A={a, b},集合B={0, 1, 2},则两个集 ...

  5. 夺命雷公狗---node.js---14之DNS

    node下如果想域名解析是需要通过apache或者ng的反向版定才可以实现的,但是他也给我们留下了哟套DNS操作方法: /** * Created by leigood on 2016/8/30. * ...

  6. SQL——存储过程

    1. 为什么使用存储过程 应用程序通过T-SQL语句到服务器的过程是不安全的. 1) 数据不安全 2)每次提交SQL代码都要经过语法编译后在执行,影响应用程序的运行性能 3) 网络流量大 2. 什么是 ...

  7. linux更新系统之后,删除多余的开机启动项

    实验环境是centos7,采用uefi的引导方式,启动管理软件是grub2 1. 进入 /boot 目录,应该可以发现许多文件的文件名是以 vmlinuz 开头,后面跟着版本信息,这些就是内核.我们要 ...

  8. 鸟哥的linux私房菜学习记录之bash

    当你对计算机输入一个指令时,bash会将指令传送给核心kernel,核心再去调用相关的程序,启动硬件. 如果直接让用户操作操作系统,可能会造成系统的崩溃,所以操作系统通过应用程序来让用户操作系统即壳程 ...

  9. ios app的真机调试与发布配置

    1.打开应用程序—>[钥匙串访问]—>[证书助理]—>[从证书办法机构请求证书]     2.在[用户电子邮件地址]填入apple账户用的邮箱,选择[存储到磁盘],点击[继续],会在 ...

  10. 第一个应用程序HelloWorld

    iOS7 Beta已经发布了,迫不及待地下载了iOS 7及Xcode 5并体验了一下.先做一个简单的Hello World看看都有哪些变化吧.1. 启动Xcode5-DP:2. 从菜单选择File-N ...