害怕别人乱输数据吗?提高你的数据校验功能-AJAX输入校验(8)

数据校验及校验和总结 1.校验和(Checksum) 总和检验码,校验和。在数据处理和数据通信领域中,用于校验目的的一组数据项的和。这些数据项可以是数字或在计算检验总和过程中看作数字的其它字符串。 2.数据校验的作用 数据校验是为保证数据的完整性,用一种指定的算法对原始数据计算出的一个校验值。接收方用同样的算法计算一次校验值,如果和随数据提供的校验值一样,说明数据是完整的。保证数据的完整性和准确性。 3.常用的校验和(Checksum) 算法总结 (1).最简单的校验 ... 阅读详情

7.4  AJAX输入校验

Struts 2框架在使用客户端校验的时候,由于需要转换为JavaScript脚本,所以并不是所有服务器端的校验规则均能转换为客户端校验,而AJAX校验则可以使用所有的服务器端校验规则。

AJAX是一种新兴的技术,主要特点是可以异步处理用户请求,例如,用户在填写一个表单的时候,当填写完一个文本框后,该文本框失去焦点的同时,会异步地完成同服务器的交互,提示校验信息,而不是所有表单填写完后单击“提交”按钮时显示校验信息。

在这里笔者简单演示一个示例,让读者体验AJAX的特点,关于AJAX的详细内容,读者可以参考本书后面的介绍。

7.4.1   配置AJAX环境

下面笔者按照建立顺序,引导读者配置AJAX环境。

1.安装dwr-1.1-beta-3.jar文件

Struts 2框架要整合AJAX,需要一个JAR文件,读者可以在Struts 2的struts2-showcase- 2.0.11 应用示例中找到,在该示例中lib目录下有一个dwr-1.1-beta-3.jar文件,将该文件复制到当前Web应用的WEB-INF/lib目录下。

★ 注意 ★

struts2-showcase- 2.0.11 为一个war压缩文件,读者可以解压该文件来获得dwr-1.1- beta-3.jar。

 

2.dwr.xml文件

建立一个dwr.xml配置文件,该文件保存在同web.xml相同的目录下,在该文件中加入如下内容:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE dwr PUBLIC

    "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"

    "http://www.getahead.ltd.uk/dwr/dwr10.dtd">

<dwr>

    <allow>

        <create creator="new" javascript="validator">

            <param name="class" value="org.apache.struts2.validators.DWRValidator"/>

        </create>

        <convert converter="bean" match="com.opensymphony.xwork2.ValidationAware Support"/>

    </allow>

    <signatures>

        <![CDATA[

        import java.util.Map;

        import org.apache.struts2.validators.DWRValidator;

        DWRValidator.doPost(String, String, Map<String, String>);

        ]]>

    </signatures>

</dwr>

★ 说明 ★

该文件内容为固定格式。

 

3.web.xml文件

在web.xml文件中加入相关配置内容,修改后的内容如代码7.20所示。

代码7.20  加入AJAX配置的web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app id="WebApp_9" version="2.4"

    xmlns="http://java.sun.com/xml/ns/j2ee"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

    <display-name>Struts Blank</display-name>

    <!--配置Struts 2的核心filter-->

    <filter>

        <filter-name>struts2</filter-name>

        <!--配置Struts 2的核心实现类-->

        <filter-class>

            org.apache.struts2.dispatcher.FilterDispatcher

        </filter-class>

    </filter>

    <filter-mapping>

        <!--拦截所有的URL请求-->

        <filter-name>struts2</filter-name>

        <url-pattern>/*</url-pattern>

    </filter-mapping>

    <!--配置欢迎界面-->

    <!-- 配置Struts2的核心Servlet -->

    <servlet>

        <servlet-name>dwr</servlet-name>

        <!-- 指定Servlet的实现类 -->

        <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>

        <!-- 指定处于开发阶段 -->

        <init-param>

            <param-name>debug</param-name>

            <param-value>true</param-value>

        </init-param>

    </servlet>

    <!-- 指定DWR的核心Servlet拦截的URL -->

    <servlet-mapping>

        <servlet-name>dwr</servlet-name>

        <url-pattern>/dwr/*</url-pattern>

    </servlet-mapping>

    <welcome-file-list>

        <welcome-file>index.html</welcome-file>

    </welcome-file-list>

</web-app>

至此,一个简单的AJAX环境便搭建完成了。

7.4.2   建立业务控制器

建立一个简单的业务控制器实现类,如代码7.21所示。

代码7.21  AJAX校验示例的业务控制器

package ch7;

import java.util.Date;

import com.opensymphony.xwork2.ActionSupport;

public class Reg_ajax_Action extends ActionSupport {

    private String name;

    private int age;

    private Date birthday;

    //属性的getter和setter方法

 public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

    public int getAge() {

        return age;

    }

    public void setAge(int age) {

        this.age = age;

    }

    public Date getBirthday() {

        return birthday;

    }

    public void setBirthday(Date birthday) {

        this.birthday = birthday;

    }

}

该Action非常简单,只是定义了3个相应的属性。在配置文件中加入如下内容:

<action name="Reg_ajax_Action" class="ch7.Reg_ajax_Action">

            <result name="input">/ch7/reg-ajax.jsp</result>

</action>

7.4.3   建立校验规则文件

建立一个Reg_ajax_Action-validation.xml校验规则文件,如代码7.22所示。

代码7.22  AJAX校验示例的校验规则文件

<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2 //EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">

<!--

    Add the following DOCTYPE declaration as first line of your XXX-validation.xml file:

    <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2 //EN"

"http://www.opensymphony.com/xwork/xwork-validator- 1.0.2 .dtd">

-->

<validators>

    <field name="name">

        <field-validator type="requiredstring">

            <message>用户名不能为空!</message>

        </field-validator>

    </field>

    <field name="age">

        <field-validator type="int">

            <param name="min">13</param>

            <param name="max">19</param>

            <message>年龄必须在13至19岁之间</message>

        </field-validator>

    </field>

    <field name="birthday">

        <!--定义类型为date-->

        <field-validator type="date">

            <!--校验生日有效时间段-->

            <param name="min"> 1990-01-01 </param>

            <param name="max"> 2006-01-01 </param>

            <message>生日必须在${min}至${max}之间</message>

        </field-validator>

    </field>

</validators>

★ 说明 ★

该校验规则文件也是一个标准的校验规则文件。

 

7.4.4   建立JSP视图

建立一个reg-ajax.jsp视图文件,如代码7.23所示。

代码7.23  AJAX校验示例的JSP视图

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%@ taglib prefix="s" uri="/struts-tags" %>

<!-- START SNIPPET: ajaxValidation -->

<html>

<head>

    <title>Validation - Basic</title>

    <s:head theme=" ajax "/>

</head>

<body>

<s:form method="post" validate="true" theme=" ajax ">

    <s:textfield label="用户名" name="name"/>

    <s:textfield label="年龄" name="age"/>

    <s:textfield label="生日" name="birthday"/>

    <s:submit/>

</s:form>

</body>

</html>

<!-- END SNIPPET: ajaxValidation -->

该文件同以往JSP视图文件不同的是,在<s:form/>标签中加入了theme="ajax"属性定义。

7.4.5   运行AJAX校验示例

在浏览器中输入http://localhost:8080/bookcode/ch7/Reg_ajax_Action!input.action,在运行界面年龄一栏中输入“0”,当光标焦点离开该文本框时,会立刻显示校验异常信息,而不需要单击“submit”按钮后才显示校验异常信息。可见,AJAX使用了异步的方式同服务器端进行交互,并在某个元素失去焦点时触发。其运行界面如图7.11所示。

AJAX技术给用户带来了更加友好的体验,请读者参考本书中后面详细的介绍。

★ 注意 ★

运行本示例时,需要在地址栏输入http://localhost:8080/bookcode/ch7/Reg_ajax_ Action!input.action,而不是http://localhost:8080/bookcode/ch7/test.jsp。

 

图7.11  AJAX校验界面

 
Ajax 异步请求-校验用户名唯一性 项目采用MVC分层结构, 使用Ajax异步请求技术实现校验用户名唯一性的功能 立即下载

相关推荐

ajax的异步校验功能实现

用ajax,jQuery实现用户名的异步校验功能

前端的ajax你知多少?ajax完全指南奉上

异步 JavaScript 和 XML()是一种与服务器交换数据并更新网页的某些部分的技术,而无需重新加载整个网页。换句话说,允许通过与幕后服务器交换少量数据来异步更新网页。如果应用未使用 AJAX,则必须在用户提出的每个请求上重新加载网页。在本面向初学者的ajax 教程中,我将介绍在开发基于 ajax 的应用之前,您应该了解的所有基本和重要事实,以充分利用 ajax 的功能。

奇想派 2358

555定时器呼吸灯电路制作全攻略:从仿真到实物搭建(附避坑指南)

本文详细介绍了使用555定时器制作呼吸灯电路的完整流程,从基础原理到实物搭建,包括电路设计、元件选择、仿真验证、焊接技巧及调试优化。特别提供了避坑指南,帮助电子爱好者快速掌握这一经典DIY项目,实现美观的呼吸灯效果。

weixin_33734785的博客 402

ajax判断某个input输入文本框是否为空

jsp &lt;script type="text/javascript"&gt; function checkAccount() { //点击输入账号时,触发ajax事件 $.ajax({ url:"checkAccount.do", type:"post", data:{ ...

qq1641725218的博客 2368

STM32F103VET6实战:用W25Q64外部Flash实现Bootloader远程升级(含完整代码解析)

本文详细介绍了基于STM32F103VET6与W25Q64外部Flash的Bootloader远程升级实现方案,包含硬件选型、存储分区策略、双校验机制及完整代码解析。通过SPI接口实现固件存储与升级,适用于物联网设备开发,提升OTA功能可靠性。

weixin_42620340的博客 357

信息隐藏 数字图像空域隐写与分析技术的实现

【代码】信息隐藏 数字图像空域隐写与分析技术的实现。

Yungoal的博客 468

怎么使用ajax进行校验,jQuery使用$.ajax进行即时验证的方法

本文实例讲述了jQuery使用$.ajax进行即时验证的方法。分享给大家供大家参考,具体如下:使用jQuery和一般处理程序即时验证用户录入的学号是否重复,当光标离开输入框即给出提示。/p>"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">.clsShow{font-size: 13px;border: solid 1p...

weixin_39781945的博客 346

23 RAG 为什么答不准:召回、分块、排序的常见坑

RAG 答不准时,不要先怪模型。本文把常见失败拆成召回不到、召回不准、分块不完整、排序靠后、上下文污染和生成不忠实六类,并给出从 Top-K 检查到评估集的排查流程。

老于的笔记的专栏 245

转: 数据校验功能-AJAX输入校验(9)中

7.4.2  建立业务控制器 建立一个简单的业务控制器实现类,如代码7.21所示。 代码7.21  AJAX校验示例的业务控制器   package ch7;import java.util.Date;import com.opensymphony.xwork2.ActionSupport;public class Reg_ajax_Action extends...

serenity的技术笔记 149

ESP32S3 TLS 握手WIFI可用但是在蜂窝热点下卡死:排查方法与根因

设备卡在等。

摸鱼专家 85

YOLO26改进 - 注意力机制 | ParNet并行子网络:多分支协同优化特征表达,增强模型判别能

本文介绍了ParNet注意力机制及其在YOLO26中的应用。ParNet注意力通过并行子网络结构,将网络层组织成多个子网络并行处理输入特征,降低了传统注意力机制在处理长序列时的计算复杂度。该机制采用VGG风格的块和特征融合策略,具有低深度高性能、参数效率高、可扩展性强和并行化能力好等创新点。我们将ParNet注意力引入YOLO26,在检测头部分应用该机制。通过实验训练改进后的模型,有望提升YOLO26在目标检测任务中的性能。

魔改工程师的博客 443

基于Ajax的输入校验

    Ajax的输入校验不是客户端校验,而是服务器端校验,但这种服务器端校验是以异步方式进行的,浏览者无需显示提交请求,系统自动完成校验。   Struts2的Ajax校验建立在DWR和Dojo两个框架之上,其中DWR负责实现在JavaScript中调用远程方法,而Dojo则负责 页面效果的实现。   DWR是Java领域的Ajax框架,它允许客户端JavaScript代码直接调用服务器端的

坤哥的专栏 927

基于PyQt5和OpenCV的传统图像分割应用UI程序

主要功能包括:加载和显示图像应用多种图像分割算法调整算法参数保存处理结果。

Henry的博客 471

使用AJAX(包含正则表达式)验证用户登录的步骤例子解析

在Web开发中,使用AJAX(Asynchronous JavaScript and XML)进行用户登录验证是一种常见的实践,它允许网页在不重新加载整个页面的情况下与服务器交换数据并更新部分网页。

IT老农民的博客 857

Openclaw第3章:进阶部署

本章面向需要在特定环境中稳定运行 OpenClaw 的用户,介绍 Windows、Linux、Docker 以及 Cloudflare Workers 四种进阶部署方式。每种方式各有侧重:Windows 部署适合桌面用户日常使用,Linux 部署适合开发者,Docker 部署适合追求环境隔离的运维场景,Cloudflare Workers 部署则适合希望获得全球边缘网络加速的用户。读者可根据自身环境和需求选择合适的方案,完成本章后可继续阅读第4章了解维护升级流程。

Maynor的博客 1295

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Ajax校验

Ajax实现局部校验:注册用户时,保证用户名不重复,为了保证实现功能需要在不提交表单的情况下,实现局部校验前台代码为: 姓名:&lt;input type="text" name="username" id="username" /&gt; &lt;span id="ref"&gt;&lt;/span&gt;实现用户名输入文本框在前台校验时 ,&lt;%@taglib p

select_up的博客 420

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Ajax---后台校验用户输入的数据

Ajax----校验用户输入的数据 index.jsp     Ajax技术演示         //把name提交到后台校验;看是否可用     function chacke1(obj){     var name=obj.value;       //创建一个Ajax       var xhr=null;//XMLHttpRequest        if(wind

ZHL_blog 753

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

前端用ajax异步做数据校验

ajax是可以改变用户体验的技术,ajax对象是浏览器提供的特殊对象,即XMLHttpRequest对象,向服务器发送异步请求,服务器返回部分数据,浏览器利用这部分数据进行页面部分更新。整个过程,无需刷新界面,不打断用户的操作。给用户带来了很好的体验。接下来就举个完成的例子。1.Mybatis手写的sql语句。2.数据访问层3.业务逻辑层4.表示层5.jsp界面...

demo_gsl的博客 1788

ajax实现实时校验

有时候我们在注册用户时候我们输入用户名,他会提示用户名已存在,我们该怎么去实现他呢? 我们要实现以下代码: &lt;script type="text/javascript"&gt; $(function(){ $("填写输入框的ID").blur(function(){ var value=$(this).val(); ...

ccczequn的博客 3262

使用ajax异步校验数据的两种方法

使用ajax异步校验数据的两种方法 两种方法: 使用js 使用jquery 一使用js <script type="text/javascript"> //ajax异步校验 function checkUsername() { // 获得文件框值: var username = document.getElementById("us

只有变秃 才能变强 2438

Jquery Validate 相关参数及常用的自定义验证规则

Jquery Validate 相关参数 //定义中文消息 var cnmsg = { required: “必选字段”, remote: “请修正该字段”, email: “请输入正确格式的电子邮件”, url: “请输入合法的网址”, date: “请输入合法的日期”, dateISO: “请输入合法的日期 (ISO).”, number: “请输入合法的数字”,

ITSTAR 8万+

[计算机组成原理]数据校验的基本原理

文章目录一、数据校验的必要性二、校验的基本原理三、码距的概念四、码距与检错或纠错能力的关系五、选择码距要考虑的因素 一、数据校验的必要性 1、受元器件的质量、电路故障或噪音干扰等因素的影响,数据在被处理、传输、存储的过程中可能出现错误; 2、若能设计硬件层面的错误检测机制,可以减少基于软件检错的代价(系统观)。 二、校验的基本原理 原理:增加冗余码(校验位) 有效信息(k位) 校验信息(r...

shiawaseli的博客 2620

用ajax异步获取数据或校验的方法

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34177064的博客 374
上一篇: 中英文支持-你的程序做到了吗?---不落伍的应用Struts 2 的国际化支持特性(7)
下一篇: 半路杀出程咬金-你的程序是否能做到?Struts 2的拦截器-你手中的程咬金(9)
Struts2BBS
博客等级 码龄19年 19粉丝 18原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值