ajax案例_校验用户名
ajax案例_校验用户名
代码下载
链接:https://pan.baidu.com/s/1pb_sdSmV9Ncs6UIz3q2ztg
提取码:fgx6
复制这段内容后打开百度网盘手机App,操作更方便哦
需求
输入用户名,失去焦点后,通过ajax访问数据库判断用户名是否被占用。
流程
- 搭建环境:数据库、jsp页面
- 输入用户名,失去焦点
- 触发js方法,判断数据库是否已有用户名
- 在指定的span处加入对应的结果(存在、可用)
搭建环境
- jsp页面 - 其实只要有一个用户名就够了,其他就是为了稍微好看点,并用不到对应的功能。用户名后面的就是一个显示数据或者写数据的地方而已。 - <table border="1px" width="600px">
 <tr> <td>用户名 :</td>
 <td><input type="text" name="name" id="name"/><span id="span01"></span></td>
 </tr>
 <tr>
 <td>密码 :</td>
 <td><input type="password" name="password" /></td>
 </tr>
 <tr>
 <td>邮箱</td>
 <td><input type="text" name="email" /></td>
 </tr>
 <tr>
 <td>简介</td>
 <td><input type="text" name="info" /></td>
 </tr>
 <tr>
 <td colspan="2"><input type="submit" value="注册" /></td>
 </tr>
 </table>
 
- sql搭建 - /*创建一个包括用户名和密码的数据库*/ /*创建数据库stus*/
 CREATE DATABASE tuser;
 /*使用数据库tuser*/
 USE tuser;
 /*创建表t_user*/
 CREATE TABLE t_user(
 id INT PRIMARY KEY AUTO_INCREMENT,
 username VARCHAR(20),
 PASSWORD VARCHAR(20)
 );
 /*插入数据*/
 INSERT INTO t_user VALUES(NULL,'admin','10086'),(NULL,'kaikai','8888');
 INSERT INTO t_user(username,PASSWORD) VALUES('aobama','123'),('titi','234'),('aaa','234234');
 /*查看结果*/
 SELECT * FROM t_user;
 
开发代码
1_jsp
- jsp修改 - <td><input type="text" name="name" id="name" onblur="checkUserName()"/>
 
- 生成XmlHttpRequest的方法(复制来的) - function createXmlHttpRequest() {
 var xmlHttp;
 try { // Firefox, Opera 8.0+, Safari
 xmlHttp = new XMLHttpRequest();
 } catch (e) {
 try {// Internet Explorer
 xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
 } catch (e) {
 try {
 xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
 } catch (e) {
 }
 }
 }
 return xmlHttp;
 }
 
- ajax代码 - 先完成功能,在慢慢补全。 - function checkUserName() {
 //1.创建xmlhtttprequest对象
 var request = createXmlHttpRequest();
 //获取姓名输入框的值
 var name = document.getElementById("name").value; //2.用POST发送请求,模板复制来的,再修修改改
 //checkUserName是我后面设置的servlet名,这里可以转到对servlet的创建处理了
 request.open("POST", "checkUserName", true); //设置一个请求头,表明发送一个经过post编码的请求
 request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
 request.send("name="+name); //3.获取响应数据
 request.onreadystatechange = function () {
 if (request.readyState === 4 && request.status === 200) {
 //获取servlet中写好的响应,目前都没有
 var responseText = request.responseText;
 //测试能不能得到响应
 alert(responseText);
 }
 }
 };
 }
 
1_servlet
- servlet三步走 - response.setContentType("text/html;charset=UTF-8");
 //1.获取参数
 String name = request.getParameter("name");
 //2.调用方法
 //这里传给service处理
 CheckUserNameService service = new CheckUserNameServiceImpl();
 boolean isExist = service.checkUserName(name);
 //3.呈现数据,等下再说吧
 
1_service、dao
- //service就是调用dao,目前用boolean是OK的
 public boolean checkUserName(String username) throws SQLException {
 UserDao dao = new UserDaoImpl();
 return dao.checkUserName(username);
 - public boolean checkUserName(String username) throws SQLException {
 QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource());
 String sql = "SELECT count(*) FROM t_user WHERE username = ?";
 //这里有一个需要注意的地方
 //当用ScalarHandler时,如果用SELECT *不能查到数据时会报空指针异常
 //因此改成count(*)
 long query = runner.query(sql, new ScalarHandler<>(), username);
 return query > 0;
 }
 
2_servlet
- 补全servlet的第三步 - //用println是因为可以直接用int数字。如果是write的话就要传String的“1”
 response.getWriter().println(isExist ? 1 : 2);
 
2_jsp
- 把第3步改成需要的样子 - 当然可以先用alert测试好再改,我这里就不测试了 - request.onreadystatechange = function () {
 if (request.readyState === 4 && request.status === 200) {
 var responseText = request.responseText;
 if (responseText != 1) {
 document.getElementById("span01").innerHTML = "<font color='green'>可用</font>"
 } else {
 document.getElementById("span01").innerHTML = "<font color='red'>被占用</font>"
 }
 }
 };
 
测试后,功能实现,完结撒花
//这里是用jQuery的post方法改写的,流程和上面差不多
function checkUserName() {
    //1.得到数据
    var name = $("#name").val();
    //2.发送请求
    $.post("checkUserName", {name : name}, function (data) {
    //3.输出要页面上
        if (data != 1) {
            //可用
            $("#span01").html("<font color='green'>可用</font>")
        } else {
            //不可用
            $("#span01").html("<font color='red'>被占用</font>")
        }
    });
}
ajax案例_校验用户名的更多相关文章
- JQuery去实现校验用户名
		JQuery 是什么? javascript 的代码框架. 有什么用? 简化代码,提高效率. 核心 write less do more , 写得更少,做的更多. load //找到这个元素, 去执行 ... 
- 零基础学习java------35---------删除一个商品案例,删除多个商品,编辑(修改商品信息),校验用户名是否已经注册(ajax)
		一. 删除一个商品案例 将要操作的表格 思路图 前端代码 <%@ page language="java" contentType="text/html; cha ... 
- Ajax详解及其案例分析------如何获得Ajax对象,使用Ajax对象发送GET和POST请求,校验用户名,POST和GET请求时的乱码处理,实现级联的下拉列表
		本节主要内容预览: 1 获得Ajax对象 2 使用Ajax对象发送GET请求 3 使用Ajax对象发送POST请求 4 使用Ajax校验用户名 5 POST请求时的乱码处理 6 GET请求时的乱码处理 ... 
- 案例16-validate自定义校验规则校验用户名是否存在
		1 知识点 2 register.jsp代码 注意自定义校验规则的时候,提交必须是同步的方式. <%@ page language="java" contentType=&q ... 
- 十七 Ajax&校验用户名功能
		Ajax: 即"Asynchronous JavaScript And XML", 异步JavaScript和XML , 是指一种创建的交互式页面应用的网页开发技术,它并不是新的技 ... 
- 校验用户名是否存在(ajax+jackson)
		只是简单的仿某度注册的用户名输入离焦后检验 目录结构 没有涉及到数据库 html <!DOCTYPE html> <html lang="en"> < ... 
- 【JAVAWEB学习笔记】22_ajax:异步校验用户名和站内查询
		Js原生Ajax和Jquery的Ajax 学习目标 案例1-异步校验用户名是否存在 案例2-站内查询 一.Ajax概述 1.什么是同步,什么是异步 同步现象:客户端发送请求到服务器端,当服务器返回响应 ... 
- 案例_(单线程)使用xpath爬取糗事百科
		案例_(单线程)使用xpath爬取糗事百科 步骤如下: 首先通过xpath插件找出我们要爬取的信息的匹配规则 url = "https://www.qiushibaike.com/8hr/p ... 
- AJAX案例二:简单表单验证
		案例:如果用户名输入为张三,那么在失去焦点时后面会显示该用户名已被注册,否则显示可以注册! <%@ page language="java" import="jav ... 
随机推荐
- 【转】使用ASP.NET Web API构建Restful API
			https://blog.csdn.net/mzl87/article/details/84947623 要点:使用DTO将内部实体与传输实体分离,利用Automapper实现两者的自动映射 
- apply,call和bind的使用及区别
			1.用途 1)apply,call和bind都是 用来改变this的指向 2)apply和call会让当前函数立即执行,而bind会返回一个函数,后续需要的时候再调用执行 2.this指向问题 thi ... 
- 使用Jenkins编译打包SpringCloud微服务中的个别目录
			意义说明: 使用Jenkins从Gogs拉取SpringCloud微服务,拉取的是整个仓库的内容,分好多个模块文件夹,但是使用maven编译打包的话只编译打包指定的模块文件夹 Gogs Webhook ... 
- 在Windows平台搭建C语言开发环境
			一.在Windows平台搭建DEV C++集成开发环境 官网 https://sourceforge.net/projects/orwelldevcpp/ 中下载Dev C++运行即可 环境准 ... 
- [转发]C++中new和malloc的区别
			原文地址:https://blog.csdn.net/linux_ever/article/details/50533149 new与malloc的10点区别 1. 申请的内存所在位置 new操作符从 ... 
- win10重装系统修改信息
			在安装win10系统之前要先进行ahci硬盘模式更改 ,以防止win10系统安装完成后出现蓝屏现象,那么如何进行ahci硬盘模式bios设置呢?今天我们就以映泰主板为大家介绍u盘装win10系统硬盘模 ... 
- 修改mysql/MariaDB数据库的端口号+远程
			1.修改端口 2.远程+开放端口 (1)设置远程账号:xxx和密码yyyyyyygrant all privileges on *.* to 'xxx'@'%' identified by 'yyyy ... 
- Android笔记(八) Android中的布局——相对布局
			RelativeLayout又称为相对布局,也是一种常用的布局形式.和LinearLayout的排列规则不同,RelativeLayout显得更加随意一下,它通常通过相对定位 的方式让控件出现在布局的 ... 
- CentOS7.X+LAMP+zabbix4.2环境下搭建Grafana6.1数据库可视化
			1.GrafanaRPM包部署(yum install wget) wget https://dl.grafana.com/oss/release/grafana-6.1.4-1.x86_64.r ... 
- 基于numpy实现矩阵计算器
			要求 制作一个Python的矩阵计算器: ① 程序提供任意两矩阵的加.乘法运算:方阵的行列式计算.逆矩阵计算.特征分解:任意矩阵的转置等计算功能,可自行添加功能 ② 从控制台通过键盘获取数据并完成以上 ... 
