程序功能

当用户名输入完成(即用户名输入框失去焦点),利用Ajax检测用户名是否已经注册!

实现过程

利用Ajax向CheckUserServlet发送请求,判断该用户名是否可用。这里只是为了演示Ajax的用法,就不访问数据库了,直接设置一些用户名就好了,模拟一下即可。

关于中文编码的处理

坑爹,在javascript中传递中文参数,需要先编码,然后解码。详细见JavaScript利用URL向后台传入中文参数乱码问题解决之道

运行截图

代码实例

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>
</head>
<script type="text/javascript">
    function checkUser(username) {
        if (username.value == "") {
            alert("请输入用户名!");
            username.focus();
            return;
        } else {
            createRequest('CheckUserServlet?user='+encodeURI(encodeURI(username.value)));
        }
    }
    function createRequest(url) {
        http_request = false;
        if (window.XMLHttpRequest) {
            http_request = new XMLHttpRequest();
        } else if (window.ActiveXObject) {
            try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {

                }
            }
        }

        if (!http_request) {
            alert("不能创建XMLHttpRequest对象实例!");
            return false;
        }
        //alert("创建成功!");
        http_request.onreadystatechange = getResult;
        http_request.open('GET', url, true);
        http_request.send(null);
    }
    function getResult() {
        if (http_request.readyState == 4) { //请求已经完成
            if (http_request.status == 200) { //请求成功
                document.getElementById("msg").innerHTML = http_request.responseText;
            } else {
                alert("你请求的页面有错误!");
            }
        }
    }
</script>
<body>
<form method="post" name="registForm">
    用户名:<input type="text" name="username" id="username" onblur="checkUser(registForm.username);">
    <div id="msg"></div><br>
    密   码:<input type="password" >
</form>
</body>
</html>

检查是非已经注册的工具类

package cn.edu.pzhu.servlet.util;

public class UserUtils {
    private static String[] userList = {"张三", "李四", "Tom", "Jerry"};

    public static boolean checkUser(String username) {
        boolean ok = true;
        for (int i = 0; i < userList.length; i++) {
            if (username.equals(userList[i])) {
                ok = false;
                break;
            }
        }
        return ok;
    }
}

servlet处理

package cn.edu.pzhu.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLDecoder;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.jasper.tagplugins.jstl.core.Out;

import cn.edu.pzhu.servlet.util.UserUtils;

/**
 * Servlet implementation class CheckUserServlet
 */
@WebServlet("/CheckUserServlet")
public class CheckUserServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public CheckUserServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username = request.getParameter("user");
        //解码
        username = URLDecoder.decode(username, "UTF-8");
        System.out.println(username);
        PrintWriter out = response.getWriter();
        if (UserUtils.checkUser(username)) {
            out.print("该用户名可用!");
        } else {
            out.print("该用户名不可用!");
        }
        //request.getRequestDispatcher("index.jsp").forward(request, response);
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}

如有不当之处欢迎指出!

Ajax检测用户名是否已经注册的更多相关文章

  1. ajax 检测用户名是否可用

    下面是一个 ajax 检测用户名是否可用的例子. django  项目中. —— views.py 里—— from django.shortcuts import render,HttpRespon ...

  2. asp.net ajax 检测用户名是否可用代码

    原文  asp.net ajax 检测用户名是否可用代码 .net ajax 检测用户名是否可用代码 <script type="text/网页特效" src="c ...

  3. Ajax验证用户名是否被注册

    Ajax验证用户名是否被注册 var xmlHttp; function createXMLHttpRequest(){ // 创建XMLHttp请求对象 if(window.ActiveXObjec ...

  4. Django ajax 检测用户名是否已被注册

    添加一个 register.html 页面 <!DOCTYPE html> <html lang="en"> <head> <meta c ...

  5. MVC3学习:利用mvc3+ajax检测用户是否被注册

    假设用户名是保存在表Users中.关系模式为Users(Uid,UserName,PassWord) 可先利用mvc自带的模板生成Create页面. 将填写用户名的地方,由原来的 <div cl ...

  6. javaweb历史上最简单的使用Ajax判断用户名是否被注册(不跳转页面奥!)

    关于前端: 使用jquery-3.3.1.js记得要导入奥---最后我会附加我的源码的 哎我也不多说了新手加菜鸟jquery真的不太懂!看代码吧!个别地方我会写上我对本程序的理解. 关于后台也就是se ...

  7. php运用validate+ajax检测用户名是否已存在

    前提:如果还不知道什么是validate,请前往这里 一.remote rules: username:{ required:true, minlength:8, maxlength:8, remot ...

  8. ajax验证用户名是否被注册 ; ajax提交form表单

    register.html 文件代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" &quo ...

  9. Struts2+Ajax实现检测用户名是否唯一

    搞了慢慢两天,终于弄明白了怎么在Struts2框架中使用Ajax检测用户名的存在了.虽然,比起那些大牛们来,这速度确实够慢的,不过,最终弄出来还是满满的成就感啊. 闲话休提,言归正传.直接上代码: A ...

随机推荐

  1. PHP 运行 php-fpm 报错

      报错如下: [27-Aug-2017 18:34:23] WARNING: Nothing matches the include pattern '/usr/local/php/etc/php- ...

  2. SQL Server错误严重性级别和异常处理

    关于SQL Server的错误严重性级别的说明,强烈认真看一下下面的两个链接 脱机帮助 ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/sqlerrm9/html/ ...

  3. 定时任务schedule(spring boot )

    1. 定时任务实现方式:SpringBoot自带的Scheduled,可以将它看成一个轻量级的Quartz,而且使用起来比Quartz简单许多,本文主要介绍. 执行方式:单线程(串行)多线程(并行) ...

  4. Eralng的常用数据结构

    1.记录(record) 适用于小数据,并且用属性名方便查找 2.Key/Value 类型 a.属性列表 就是类似[{Key, Value}]的列表,可以通过proplists模块来处理这样的列表 当 ...

  5. 图像映射<map>、<area>

    1.<map>定义图像映射,图像映射(image-map)指带有可单击区域的一幅图像. 2.<area>定义图像映射中的区域,area元素永远嵌套在map元素内部,area元素 ...

  6. XML系列之--Linq操作带属性的XML(四)

    关于XML,之前解析过电文收发方面的,就是所谓的带表头.前缀(命名空间)SOAP格式.这次需求是解析一个xml的模板(xls内容),然后填充数据,最后保存.需要时可转换xls.pdf等文件.关于这种带 ...

  7. final修饰符,多态,抽象类,接口

    1:final关键字(掌握)    (1)是最终的意思,可以修饰类,方法,变量.    (2)特点:        A:它修饰的类,不能被继承.        B:它修饰的方法,不能被重写.      ...

  8. MUI 页面传值,因为用的是H5+ plus方法所以要在真机上才能测试出效果

    页面a.html <!doctype html> <html> <head> <meta charset="UTF-8"> < ...

  9. JAVA并发编程学习笔记------锁顺序死锁

    一.需求描述: 将资金从一个账户转移到另一个账户. 二.程序实现: (1)账户类: public class Account { private long account; public Accoun ...

  10. iOS-UINavigationBar【颜色设置】

    UINavigationBar的一些颜色设置,以前老是忘,这次记住了 - (void)setNavigationBar{ ///NavigationBar backgroundcolor[背景色] [ ...