原生的ajax判断用户名是否占用

原生的ajax判断用户名是否占用

当我们在注册页面上输入用户名之后,点击下一个地方,去数据库中查询有无该用户名,最后提示信息

jax
    异步JavaScript和XML,
    AJAX 是一种用于创建快速动态网页的技术。
    通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
    传统的网页(不使用 AJAX)如果需要更新内容,必须重载整个网页页面。
ajax入门程序:
    步骤:
        1.创建一个核心对象 XMLHttpRequest
        2.编写一个回调函数
        3.编写请求方式和请求的路径(open操作)
        4.发送请求(send操作)
ajax-api详解
    常用属性:
        onreadystatechange:检测readyState状态改变的时候
        readyState:ajax核心对象的状态
            0:核心对象创建
            1:调用了open方法
            2:调用了send方法
            3:部分响应已经生成(没有意思)
            4:响应已经完成(使用的是这个状态)
        status:状态码
            if(xmlhttp.readyState==4 && xmlhttp.status==200){
            }
        responseText:响应回来的文本
    常用方法:
        open("请求方式","请求路径"[,"是否异步"]):设置请求的方式和请求的路径
        send(["参数"]):发送请求 参数是请求方式为post的时候的参数
        setRequestHeader("content-type","form表单enctype属性"):设置post请求的参数的类型 必须放在send方法之前.
步骤分析:
    1.数据库和表
        CREATE TABLE `user` (
          `id` INT(11) NOT NULL AUTO_INCREMENT,
          `username` VARCHAR(20) DEFAULT NULL,
          `password` VARCHAR(20) DEFAULT NULL,
          `email` VARCHAR(20) DEFAULT NULL,
          `name` VARCHAR(20) DEFAULT NULL,
          `sex` VARCHAR(10) DEFAULT NULL,
          `birthday` DATE DEFAULT NULL,
          `hobby` VARCHAR(50) DEFAULT NULL,
          PRIMARY KEY (`id`)
        ) ENGINE=INNODB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
        INSERT  INTO `user`(`id`,`username`,`password`,`email`,`name`,`sex`,`birthday`,`hobby`) VALUES (1,'bbb','123','123@163.com','张三','男','1992-01-02','篮球, 足球, 排球'),(2,'ccc','123','ccc@itcast.cn','李四','女','1992-03-20','排球, 乒乓球'),(3,'aaa','123','aaa@itcast.cn','王守义','男','1990-08-11','足球, 排球'),(5,'tom','123','haha@qq.com','提莫','男',NULL,'篮球');
    2.新建项目
        导入 jar包 工具类 配置文件
    3.新建一个注册页面 表单 在用户名文本框上输入用户名 失去焦点
        发送ajax请求,将输入的值发送到servlet
    4.checkUsername4Ajax
        接受用户名
        调用service完成查询操作 返回一个用户
        判断user是否为空
            若为空 :写1 代表可以使用
            若不为空:写0
    5.在表单接受响应的数据
        判断一下,
            若为0,则提示用户名已被占用 表单不可用提交 提交按钮禁用

                document.getElementById("sub").disabled=true;

hello.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>Insert title here</title>
</head>
<body>
   <input type="button" value="点我" onclick="btnClick()">
</body>
  <script  type="text/javascript">
      function btnClick(){
        //创建核心对象
          xmlhttp=null;
        if(window.XMLHttpRequest){
            
            xmlhttp=new XMLHttpRequest();
        }
        else if(window.AactiveXObject){
            xmlhttp=new AactiveXObject("Microsoft.XMLHTTP");
        }
        //编写回调函数
          xmlhttp.onreadystatechange=function(){
            //alert(xmlhttp.readyState);
            if(xmlhttp.readyState==4 && xmlhttp.status==200){
                //接受服务器回送过来的数据
                alert(xmlhttp.responseText);
            }
        }
        //open 设置请求的方式和请求路径
          xmlhttp.open("get","${pageContext.request.contextPath}/ajax1")
        
          //send  发送请求
          xmlhttp.send();
      }
  </script>
</html>

 

 

get.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>Insert title here</title>
</head>
<body>
    <input type="button" value="点我" onclick="btnClick()">
    
</body>
<script type="text/javascript">
     function btnClick(){
         //核心对象
          xmlhttp=null;
          if(window.XMLHttpRequest){
              
              xmlhttp=new XMLHttpRequest();
          }
          else if(window.AactiveXObject){
              xmlhttp=new AactiveXObject("Microsoft.XMLHTTP");
          }
          //编写回调函数
          xmlhttp.onreadystatechange=function(){
              if(xmlhttp.readyState==4 && xmlhttp.status==200){
                  alert(xmlhttp.responseText);
              }
          }
          //open
          xmlhttp.open("get","/webfour4/ajax2?username=张三");
          //send
          xmlhttp.send();
     }
</script>
</html>

post.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>Insert title here</title>
</head>
<body>
    <input type="button" value="点我" onclick="btnClick()">
    
</body>
<script type="text/javascript">
     function btnClick(){
         //核心对象
          xmlhttp=null;
          if(window.XMLHttpRequest){
              
              xmlhttp=new XMLHttpRequest();
          }
          else if(window.AactiveXObject){
              xmlhttp=new AactiveXObject("Microsoft.XMLHTTP");
          }
          //编写回调函数
          xmlhttp.onreadystatechange=function(){
              if(xmlhttp.readyState==4 && xmlhttp.status==200){
                  alert(xmlhttp.responseText);
              }
          }
          
          //open
          xmlhttp.open("post","/webfour4/ajax2");
          
          //设置一个请求头
            xmlhttp.setRequestHeader("content-type","application/x-www-form-urlencoded");
          
          //send
          xmlhttp.send("username=张三");
     }
</script>
</html>

 

 

demo1

<%@ 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>Insert title here</title>
</head>
<body>
    <form method="post">
        <tr>
            <td>用户名</td>
            <td><input type="text" name="username"onblur="checkUsername(this)"></td>
            <td><span id="username_msg"></span></td>
        </tr><br>
        <tr>
            <td>密码</td>
            <td><input type="text" name="password"></td>

        </tr>
        <tr>
            <td colspan="3"><input type="submit" id="sub"></td>

        </tr>
    </form>
</body>
<script type="text/javascript">
    //失去焦点发送ajax
    function checkUsername(obj) {
        // alert(obj.value);

        //创建核心对象
        xmlhttp = null;
        if (window.XMLHttpRequest) {

            xmlhttp = new XMLHttpRequest();
        } else if (window.AactiveXObject) {
            xmlhttp = new AactiveXObject("Microsoft.XMLHTTP");
        }
        //编写回调函数
          xmlhttp.onreadystatechange=function(){
            if(xmlhttp.readyState==4 &&xmlhttp.status==200){
                //alert(xmlhttp.responseText);
                if(xmlhttp.responseText==1){
                    document.getElementById("username_msg").innerHTML="<font color='green'>用户名可以使用</font>";
                    document.getElementById("sub").disabled=false;
                }else{
                     document.getElementById("username_msg").innerHTML="<font color='red'>用户名不可以使用</font>";
                     document.getElementById("sub").disabled=true;
                }
            }
        }
        //open操作
        xmlhttp.open("get","${pageContext.request.contextPath}/checkUsername4Ajax?username="+obj.value);
        
        //send操作
        xmlhttp.send();
    }
</script>

</html>

 Ajax1Servlet

package com.feizhu.ajax;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 入门程序
 */
public class Ajax1Servlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("请求来了~~");
        response.getWriter().print("success");
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
        doGet(request, response);
    }
}

 

demo2

<%@ 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">
<script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-1.11.3.min.js"></script>
<title>Insert title here</title>
<script type="text/javascript">
    $(function(){
        //给username 派发一个失去焦点事件  发送ajax请求
        $("input[name='username']").blur(function(){
            //获取输入的值
              var $value= $(this).val();
              //alert($value);
              $.get("/webfour4/checkUsername4Ajax","username="+$value,function(d){
                  //alert(d);
                  if(d==1){
                      $("#username_msg").html($("<font color='green'>用户名可以使用</font>"));
                  }else{
                      $("#username_msg").html($("<font color='red'>用户名已被使用</font>"));
                  }
              });
        });
    })
</script>
</head>
<body>
    <form method="post">
        <tr>
            <td>用户名</td>
            <td><input type="text" name="username"></td>
            <td><span id="username_msg"></span></td>
        </tr><br>
        <tr>
            <td>密码</td>
            <td><input type="text" name="password"></td>

        </tr>
        <tr>
            <td colspan="3"><input type="submit" id="sub"></td>

        </tr>
    </form>
</body>
<script type="text/javascript">
    //失去焦点发送ajax
    
</script>

</html>

Ajax2Servlet

package com.feizhu.ajax;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * get 请求
 */
public class Ajax2Servlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       //接受参数
        String username=request.getParameter("username");
        username=new String(username.getBytes("iso8859-1"),"utf-8");
        System.out.println(username);
        
        //响应数据
        response.setContentType("text/html;charset=utf-8");
        response.getWriter().println("姓名"+username);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
        System.out.println(request.getMethod());
        request.setCharacterEncoding("utf-8");
         //接受参数
        String username=request.getParameter("username");
        System.out.println(username);
        
        //响应数据
        response.setContentType("text/html;charset=utf-8");
        response.getWriter().println("post姓名"+username);
    }

}

 

CheckUsername4AjaxServlet

package com.feizhu.web.servlet;

import java.io.IOException;
import java.sql.SQLException;

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

import com.feizhu.domain.User;
import com.feizhu.service.UserService;

/**
 * 原生ajax检测用户名是否被占用
 */
public class CheckUsername4AjaxServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //设置编码
        
        //接受用户名
        String username=request.getParameter("username");
        username=new String(username.getBytes("iso-8859-1"),"utf-8");
        System.out.println(username);
        
        //调用service 完成查询 返回值为user
        
        User user = null;
        try {
            user = new UserService().checkUsername4Ajax(username);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        //判断user  写回 信息
        if(user==null) {
            response.getWriter().println("1");
        }
        else {
            response.getWriter().println("0");
        }
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
        doGet(request, response);
    }

}

 

UserService

package com.feizhu.service;

import java.sql.SQLException;

import com.feizhu.dao.UserDao;
import com.feizhu.domain.User;

public class UserService {

    /**
     * 检测用户名是否被占用
     * @param username
     * @return
     * @throws SQLException
     */
    public User checkUsername4Ajax(String username) throws SQLException {
    
        return new UserDao().getUserByUsername4Ajax(username);
    }

}

 

UserDao

package com.feizhu.dao;

import java.sql.SQLException;

import javax.sql.DataSource;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import com.feizhu.domain.User;
import com.feizhu.utils.DataSourceUtils;

public class UserDao {

    /**
     * 通过用户名获取一个用户
     * @param username
     * @return
     * @throws SQLException
     */
    public User getUserByUsername4Ajax(String username) throws SQLException {
        QueryRunner qr=  new QueryRunner(DataSourceUtils.getDataSource());
        String sql="select *from user where username=? limit 1";
        return  qr.query(sql, new BeanHandler<>(User.class),username);
    }

    
}
 

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_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>webfour4_ajax</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <description></description>
    <display-name>Ajax1Servlet</display-name>
    <servlet-name>Ajax1Servlet</servlet-name>
    <servlet-class>com.feizhu.ajax.Ajax1Servlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Ajax1Servlet</servlet-name>
    <url-pattern>/ajax1</url-pattern>
  </servlet-mapping>
  <servlet>
    <description></description>
    <display-name>Ajax2Servlet</display-name>
    <servlet-name>Ajax2Servlet</servlet-name>
    <servlet-class>com.feizhu.ajax.Ajax2Servlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Ajax2Servlet</servlet-name>
    <url-pattern>/ajax2</url-pattern>
  </servlet-mapping>
  <servlet>
    <description></description>
    <display-name>CheckUsername4AjaxServlet</display-name>
    <servlet-name>CheckUsername4AjaxServlet</servlet-name>
    <servlet-class>com.feizhu.web.servlet.CheckUsername4AjaxServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>CheckUsername4AjaxServlet</servlet-name>
    <url-pattern>/checkUsername4Ajax</url-pattern>
  </servlet-mapping>
  <servlet>
    <description></description>
    <display-name>JqueryAjaxServlet</display-name>
    <servlet-name>JqueryAjaxServlet</servlet-name>
    <servlet-class>com.feizhu.jquery_ajax.JqueryAjaxServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>JqueryAjaxServlet</servlet-name>
    <url-pattern>/jqueryAjax</url-pattern>
  </servlet-mapping>
  <servlet>
    <description></description>
    <display-name>SearchKwServlet</display-name>
    <servlet-name>SearchKwServlet</servlet-name>
    <servlet-class>com.feizhu.web.servlet.SearchKwServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>SearchKwServlet</servlet-name>
    <url-pattern>/searchKw</url-pattern>
  </servlet-mapping>
  <servlet>
    <description></description>
    <display-name>SelectProServlet</display-name>
    <servlet-name>SelectProServlet</servlet-name>
    <servlet-class>com.feizhu.web.servlet.SelectProServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>SelectProServlet</servlet-name>
    <url-pattern>/selectPro</url-pattern>
  </servlet-mapping>
  <servlet>
    <description></description>
    <display-name>SelectCityServlet</display-name>
    <servlet-name>SelectCityServlet</servlet-name>
    <servlet-class>com.feizhu.web.servlet.SelectCityServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>SelectCityServlet</servlet-name>
    <url-pattern>/selectCity</url-pattern>
  </servlet-mapping>
</web-app>

备注:由于个人原因,本博客暂停更新。如有问题可联系本人,本人提供技术指导、学习方向、学习路线。本人微信wlp1156107728(添加注明来意)   QQ1156107728(添加注明来意)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值