Struts2的输入校验(2)

      ——客户端校验

Struts2客户端校验的使用:

  (1)使用Struts2的标签生成输入页面的表单;

  (2)为该<s:form>元素添加validate="true"属性

示例:

(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)返回的重新输入页面:

<%@ 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>Insert title here</title>
</head>
<body>
<s:fielderror/>
<s:form action="regist_1" validate="true">
    <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>

(3)Action类:

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基类的默认方法
}

(4)校验规则的配置文件:

<?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>

(5)注意事项:

  浏览者不能直接访问使用客户端校验的表单页。可以把启用客户端校验的表单页放在WEB-INF路径下,让浏览者访问所有资源前都经过它的核心Filter。

Struts2的输入校验(2)——客户端校验的更多相关文章

  1. Struts2的输入校验

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

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

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

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

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

  4. Struts2的输入校验(1)——校验规则文件的编写

    Struts2的输入校验(1) --校验规则文件的编写 Struts2提供了基于验证框架的输入校验,所有的输入校验只要编写配置文件,Struts2的验证框架将会负责进行服务器校验和客户端校验. 注: ...

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

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

  6. 自定义Attribute 服务端校验 客户端校验

    MVC 自定义Attribute 服务端校验 客户端校验/* GitHub stylesheet for MarkdownPad (http://markdownpad.com) *//* Autho ...

  7. Struts2第十篇【数据校验、代码方式、XML配置方式、错误信息返回样式】

    回顾以前的数据校验 使用一个FormBean对象来封装着web端来过来的数据 维护一个Map集合保存着错误信息-对各个字段进行逻辑判断 //表单提交过来的数据全都是String类型的,birthday ...

  8. Struts2之基于配置的字段校验

    上一篇struts2之输入校验介绍了手动完成输入校验,也即依靠重写validate方法和validateXxx方法,指定请求某个方法时对传入的参数进行校验. 本篇介绍基于配置的字段校验.下面是登录的常 ...

  9. Struts2——(6)表单校验

    一.表单校验 js,jquery是客户端校验,今天要说的是客户端校验. 禁止js,或者机器代码会破坏客户端校验,所以客户端校验相对不安全. 服务器端校验是基于java代码在服务器端进行校验,特点是相应 ...

随机推荐

  1. java jdbc数据库操作

    package shb.java.demo3; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQ ...

  2. js break continue

    for 循环从 1 到 10 迭代变量 i.在循环主体中,if 语句将(使用取模运算符)检查 i 的值是否能被 5 整除.如果能被 5 整除,将执行 break 语句.alert 显示 "4 ...

  3. 夺命雷公狗—angularjs—18—angularjs的事件

    对于一款前端框架,提起事件,很容易让人联想到DOM事件,比如说鼠标点击以及页面滚动等.但是我们这里说的angular中的事件和DOM事件并不是一个东西. 事件的发布 我们可以通过 $emit() 以及 ...

  4. linux的vim按了ctrl+s之后假死的解决办法

    习惯了很多软件的保存的快捷键,经常在vim中按下ctrl+s,然后就发现vim不响应了,之间一直采用kill的方式解决,近来搜了一下,是这样子的: 这时的vim并没有死掉,只是vim不再向终端输出东西 ...

  5. 好用的调色软件 ColorSchemer Studio

    软件名叫:ColorSchemer Studio 这是windows平台下的软件

  6. Openstack的删除错误网桥,虚拟网络

    在实验openstack的各种网络模式时,可能会产生一些错误的网络指向,需要删除那些网桥. 执行前 [root@node-9 ~]# ifconfig br40 Link encap:Ethernet ...

  7. 关于oracle 11g 64位与 32位的 plsql、及其他32位应用程序共存的问题

    因为 plsql 不支持 64位 oracle 客户端,所以plsql 必须使用 oracle 的 32位 instanclient 包.  解压缩后放一个目录,例如: D:\Oracle\insta ...

  8. 【python cookbook】【数据结构与算法】18.将名称映射到序列的元素中

    问题:希望通过名称来访问元素,减少结构中对位置的依赖性 解决方案:使用命名元组collections.namedtuple().它是一个工厂方法,返回的是python中标准元组类型的子类,提供给它一个 ...

  9. 如何获取各大平台的播放地址(获得优酷的m3u8播放地址)为例

    1.打开safari 2.在顶部(黑色小苹果)旁边,点击safari. 3.打开里面的 偏好设置. 4.在高级 中 找到 “在菜单栏中显示开发菜单” 并打勾. 5.关闭窗口后,可以发现safari 顶 ...

  10. Mysql query log

    一.查询日志的概念: 查询日志记录MySQL中所有的query,通过"--log[=file_name]"来打开该功能.由于记录了所有的query,包括所有的select,体积比较 ...