做项目过程中,需要用到 ajax 实时验证注册的用户名是否已经存在。所以写了一个小例子,经过测试直接可用。

主要分为4个文件,分别为 web.xml 文件,login.jsp文件,login.js 以及
LoginServlet.java文件。
在eclipse中新建项目,文件的存放树如下:


注意引进所需的 jar 包.

1 . login.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%>
<!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>验证用户名是否存在</title>
<script type="text/javascript" src="./login.js"></script>
</head>
<body>
<form action="" enctype="application/x-www-form-urlencoded" >
用户名:<input type="text" name="username" value="" id="username">
<div id="divcheck"></div>
<input type="button" name="checkusername" value="查看用户名" id="checkusername"/>
</form>
</body>
</html>
login.jsp 即界面,在login.jsp中引入.js文件用来做ajax处理。

2 . login.js

window.onload = function() {//通过id获取页面button的onclick点击事件document.getElementById("checkusername").onclick = function() {var username = document.getElementById("username").value;//测试打印出username(输入值)alert(username);//1.创建ajax对象var xhr = ajaxFunction();xhr.onreadystatechange = function() {//处理后台返回的数据if(xhr.readyState == 4) {if(xhr.status == 200) {var data= xhr.responseText;document.getElementById("divcheck").innerHTML = data;}}}//规定发送数据的形式(post/get),url,以及传输方式(同步/异步)xhr.open("post","./LoginServlet?timeStamp="+new Date().getTime(),true);//post方式需要加下边这句,get方式不需要xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");//将页面输入数据发送到后台xhr.send("username="+username);}
}function ajaxFunction() {var xmlHttp;try {xmlHttp = new XMLHttpRequest();} catch(e) {try {xmlHttp = new ActiveXObject("Msxm12.XMLHTTP");} catch(e) {try {xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");} catch(e) {}}}return xmlHttp;
}
在.js文件中进行ajax的处理过程,处理过程分为4个阶段
1.创建ajax对象(XMLHttpRequest对象)
2.与服务器建立连接
3.客户端发送请求数据到服务器
4.服务器返回响应到客户端,客户端接收响应。
需要注意的是,第一步创建XMLHttpRequest对象,之后所有的操作都是针对于这个对象的属性来完成的。

3 . web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"><welcome-file-list><welcome-file>register.jsp</welcome-file></welcome-file-list><servlet><servlet-name>LoginServlet</servlet-name><servlet-class>com.test.Servlet.LoginServlet</servlet-class></servlet><servlet-mapping><servlet-name>LoginServlet</servlet-name><url-pattern>/LoginServlet</url-pattern></servlet-mapping>
</web-app>
web.xml是配置文件,配置前台页面和后台Servlet的映射关系,注意url路径的对应。

4 . LoginServlet.java

package com.test.Servlet;import java.io.IOException;
import java.io.PrintWriter;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class LoginServlet extends HttpServlet {public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException {doPost(request,response);}public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{response.setContentType("text/html;charset=utf-8");//定义输出流PrintWriter out = response.getWriter();//获取前端页面输入数据String username = request.getParameter("username");//测试打印,测试接收前台数据是否成功System.out.println(username);//进行比较并作出响应。if(username==null || username.equals("")) {out.println("请输入用户名 ");} else if("sa".equals(username)) {out.println("该用户名已经存在");} else {out.println("可以注册");}}
}

效果展示:

关于ajax验证的过程—-》需要验证两部分:
1 .验证ajax的状态,通过 readyState 状态码来验证 0-4

0 表示未初始化,还没有调用open方法
1 表示已经初始化,但是没有发送请求,即没有调用send方法,即正在加载
2 表示加载完毕,send已经被调用,请求开始
3 代表交互中,服务器正在发送响应
4 代表交互完成

2 . 验证返回的状态码是否为200或者304

404 没有找到页面
403 禁止访问
500 访问出错
200 一切正常
304 源文件没有被修改

做完这个小例子之后,我将servlet+ajax 和我之前写的项目结合到了一起。

之前的项目我用struts2框架写的,所以我将servlet+ajax+struts2结合到了一起去,并且成功运行。

需要注意的是默认情况下struts会拦截servlet的请求,所以我们只需要修改和servlet处理有关的配置文件就行,在web.xml配置文件中找到servlet的配置路径,加入.servlet后缀名。在ajax处理的.js文件中,找到servlet处理的路径,加入.servlet后缀名。如下图所示:

修改这两处就能避免struts2拦截servlet的请求,实现servlet+strut2+ajax
的处理。

ajax+servlet实现注册验证(验证用户名是否存在)相关推荐

  1. jQuery的Ajax方法实现注册邮箱时用户名查询

    利用jQuery实现邮箱注册时的重复用户名查询 Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术.通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新.这意味着可 ...

  2. ajax注册表单用户名实时验证,Ajax注册表单用户名实时验证..doc

    Ajax注册表单用户名实时验证. Ajax注册表单用户名实时验证 1.1.1 摘要 很多时候在网站上注册时,我们会发现,注册表单通常需要检查用户名和电子邮件地址的可用性:从而确保用户之间不拥有相同的用 ...

  3. Ajax注册表单用户名实时验证

    原文地址为: Ajax注册表单用户名实时验证 1.1.1 摘要 很多时候在网站上注册时,我们会发现,注册表单通常需要检查用户名和电子邮件地址的可用性:从而确保用户之间不拥有相同的用户名和电子邮件地址: ...

  4. Ajax+asp.net无刷新验证用户名

    注册用户页面代码如下 <script language="javascript" type="text/javascript"> var xmlHt ...

  5. java数据库验证用户名,java新手:注册时验证用户名是否在数据库里已存在

    java新手:最近在实现ssh实现注册时验证用户名是否已经存在 在register.jsp里 required="required"表示输入框不可以为空, onblur事件会在对象 ...

  6. Ajax+asp.net无刷新验证用户名的几种方法

    Ajax+asp.net无刷新验证用户名 注册用户页面代码如下 <script language="javascript" type="text/javascrip ...

  7. ajax用户注册验证视频,jquery+ajax实现注册实时验证实例详解

    本文实例讲述了jquery+ajax实现注册实时验证.分享给大家供大家参考,具体如下: 当我们注册一个用户时,会实时提示该用户的信息是否可用,这就是ajax的应用,很久以前就看过这个实现了,今天又看了 ...

  8. AJAX(三)--实例无刷新验证用户名是否存在

    我们知道在注册淘宝账户时,当我们注册的账户名与其他人同名的时候,系统会自动的给出提示,并且给出推荐使用的账户名,并没有完全的刷新整个页面,而是悄悄的向服务器端发送请求进行验证,让我们感觉很舒服,这就是 ...

  9. 使用Servlet和Ajax完成登录注册的校验+Vue

    一.Servlet登录注册校验 1.实现功能 实现功能:1.登录有记住密码选项2.使用Ajax输入用户名失去光标进行校验,不重复显示用户名可以使用,重复显示不可使用3.注册时加入验证码4.存入数据库中 ...

最新文章

  1. C++的 STL堆 实现获取中位数
  2. ubuntu下移植QT基本流程
  3. 年轻程序员需要学习的5大经验
  4. acquireQueued
  5. 总线的集中式仲裁(讲述计时器定时查询方式,独立请求方式,链式查询方式的优缺点)
  6. 锁——死锁——单个锁锁死
  7. 10款常用Java测试工具
  8. liunx 常用操作
  9. linux环境ubuntu: pushd: not found
  10. rust狗阳的师傅是谁_杨幂迪丽热巴新剧同天官宣,你更期待谁呢?
  11. ipq4029 高通 芯片 openwrt 资料收集
  12. webtrends 分析
  13. 数学魔鬼表达式——第一天
  14. 树莓派:DIY电视盒子
  15. 国外云服务器有哪些?国外云服务器大全
  16. SQLite 基本语法(二)
  17. SQL Server2008R2中文版安装教程
  18. 揭密win7pe制作全过程
  19. Java - GC是什么?为什么要有GC?
  20. Linux 用户 quote 配置 说明

热门文章

  1. Python实现飞机大战-第二部分(附源码、素材、超详细教程)
  2. 代码审计系列:熊海CMS V1.0 (iseaCMS_1.0)
  3. 【零知ESP8266教程】blynk控制RGB LED
  4. HP打印机驱动程序下载
  5. AD 2020 入门教程
  6. 如何利用Python画图
  7. 学做网站有哪些注意事项(下)
  8. TensorRT学习笔记--基于FCN-ResNet101推理引擎实现语义分割
  9. 分享12张企业数据中台架构图
  10. iso sqlserver2012sp1_SQL Server 2008 R2升级到SQL Server 2012 SP1