Ajax:

即"Asynchronous JavaScript And XML", 异步JavaScript和XML , 是指一种创建的交互式页面应用的网页开发技术,它并不是新的技术

ajax 并非一种新的技术,而是几种原有技术的结合体。由以下几种技术组合而成

  • 1.使用CSS和XHTML来表示
  • 2.使用DOM模型来交互和动态显示
  • 3.XMLHTTPRequest来和服务器进行异步通信,是ajax的基础
  • 4.使用JavaScript来绑定和调用

在以上所述技术中,除了XmlHttpRequest对象以外,其他所有的技术都是基于Web标准并且已经得到了广泛使用,XMLHTTPRequest虽然还没有被W3C采纳,但已经是一种事实的标准。

典例:

  • 注册网站时,提示输入的用户名已经被注册

作用:

如果想要刷新网页局部内容,那么需要重新载入整个网页。Ajax解决了局部刷新的问题,提高了用户体验。

1 Ajax的简单使用

创建对象:

function ajaxFunction(){
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;
}

发送请求:

     //执行get请求
function get(){
// 1 创建xmlhttprequest对象
var request = ajaxFunction()
// 2 发送请求 参数一 请求类型 参数二 路径 参数三 是否异步
request.open("GET","/8AjaxAndJquery/ServletDemo01",true);
request.send();
}

2 AJAX GET 向服务器发送数据,获取服务器响应的数据

/*     //向Servlet发送数据
function get(){
// 1 创建xmlhttprequest对象
var request = ajaxFunction()
// 2 发送请求 参数一 请求类型 参数二 路径 参数三 是否异步
request.open("GET","/8AjaxAndJquery/ServletDemo01?name=aa&age=18",true);
request.send();
} */ //接收Servlet响应的数据
function get(){
// 1 创建xmlhttprequest对象
var request = ajaxFunction()
// 2 发送请求 参数一 请求类型 参数二 路径 参数三 是否异步
request.open("GET","/8AjaxAndJquery/ServletDemo01?name=aa&age=18",true);
// 3 获取响应数据,注册监听的意思,如果状态改变,执行等号右边的方法
request.onreadystatechange = function(){
if(request.readyState == 4 && request.status == 200){
//弹出响应的信息
alert(request.responseText);
}
}
request.send();
}

3 AJAX POST 向服务器发送数据,获取服务器响应的数据

//1 创建对象
function ajaxFunction(){
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;
} //2 发送请求
function post(){
// 1 创建对象
var request = ajaxFunction();
// 2 发送请求
request.open("POST" ,"/8AjaxAndJquery/ServletDemo01" ,true);

// 如果要获取数据,加一个状态的监听
request.onreadystatechange = function(){
if(request.readyState == 4 && request.status == 200){
alert("post:"+request.responseText);
}
}
// 3 带数据过去
//如果是post请求,那么这里要添加请求头,说明提交的数据是一个经过url编码的form表单数据
request.setRequestHeader("Content-type","application/x-www-form-urlencoded");
//在send方法里面写表单数据
request.send("name=aobama&age=29");
}

4 Ajax实现校验用户名功能

1 DAO层校验用户名,用ScalarHandler获取聚合函数count()的数量值,>0则用户名已经存在

@Override
/**
* 校验用户名是否存在
*/
public boolean checkUsername(String name) throws SQLException { QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource());
String sql = "select count(*) from test where name = ?";
Long result = (Long) runner.query(sql, new ScalarHandler() , name);
return result>0;
}

2 Servlet交互前后端数据

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
//检测是否存在
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=UTF-8");
String name = request.getParameter("name");
System.out.println("name:"+name);
UserDao dao = new UserDaoImpl();
boolean isExist = dao.checkUsername(name);
//通知页面
if(isExist){
response.getWriter().println(1);
}else{
response.getWriter().println(2);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

3 前端JSP&AJAX实现异步校验功能,绑定onblur函数,失去焦点执行

<script type="text/javascript">
//1 创建对象
function ajaxFunction(){
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;
} function checkUserName(){
//获取输入框的值
var name = document.getElementById("name").value;
// alert(name);
//1 创建对象
var request = ajaxFunction();
//2 发送请求
request.open("POST","/8AjaxAndJquery/CheckUserNameServlet", true);
//注册状态改变监听,获取服务器发送过来的数据
request.onreadystatechange = function(){
if(request.readyState == 4 && request.status == 200){
// alert(request.responseText);
var data = request.responseText;
if(data == 1){
document.getElementById("span01").innerHTML="<font color=red>用户名已存在</font>";
// alert("用户名已存在");
}else{
document.getElementById("span01").innerHTML="<font color=red>恭喜!用户名可以使用</font>";
// alert("恭喜!用户名可以使用")
}
}
}
request.setRequestHeader("Content-type","application/x-www-form-urlencoded");
request.send("name="+name);
}
</script>

十七 Ajax&校验用户名功能的更多相关文章

  1. AJAX校验用户名是否存在,焦点离开用户名、点击 【 检 查用户名 】的校验。分别用 XMLHttp 和 JQueryAJAX实现。

     XMLHttp方法: $("#name").blur(function () { var xmlhttp = new ActiveXObject("Microsoft. ...

  2. Ajax校验用户名是否可用

    准备 导包:DBUtil,JDBC,C3P0 在src下导入c3p0-config.xml 导入JDBCUtil 创建数据库 第2.3.条查看https://blog.csdn.net/weixin_ ...

  3. Ajax详解及其案例分析------如何获得Ajax对象,使用Ajax对象发送GET和POST请求,校验用户名,POST和GET请求时的乱码处理,实现级联的下拉列表

    本节主要内容预览: 1 获得Ajax对象 2 使用Ajax对象发送GET请求 3 使用Ajax对象发送POST请求 4 使用Ajax校验用户名 5 POST请求时的乱码处理 6 GET请求时的乱码处理 ...

  4. ajax案例_校验用户名

    目录 ajax案例_校验用户名 代码下载 需求 流程 搭建环境 开发代码 1_jsp 1_servlet 1_service.dao 2_servlet 2_jsp 测试后,功能实现,完结撒花 aja ...

  5. 案例1.用Ajax实现用户名的校验

    用Ajax实现用户名的校验 java的验证类 public class UserDao { public boolean checkUserName(String name) { //这里的name是 ...

  6. 使用AJAX完成用户名是否存在异步校验

    一.JSP代码: 1.事件触发:onblur 2.编写AJAX代码:向Action中提交,传递username参数 <script> function checkUsername(){ / ...

  7. ajax实现用户名校验的传统和jquery的$.post方式

    第一种:传统的ajax异步请求,后台代码以及效果在最下边 首先我们在eclipse中创建一个注册页面regist.jsp,创建一个form表单,注意,由于我们只是实现用户名校验的效果,下边红色部门是我 ...

  8. SSH网上商城---使用ajax完成用户名是否存在异步校验

    小伙伴在上网的时候,需要下载或者观看某些视频资料,更或者是在逛淘宝的时候,我们都需要注册一个用户,当我们填写好各种信息,点击确定的时候,提示用户名已经存在,小编就想,为什么当我们填写完用户名的时候,她 ...

  9. 零基础学习java------35---------删除一个商品案例,删除多个商品,编辑(修改商品信息),校验用户名是否已经注册(ajax)

    一. 删除一个商品案例 将要操作的表格 思路图  前端代码 <%@ page language="java" contentType="text/html; cha ...

随机推荐

  1. Java面向对象编程 -1.3

    类与对象的定义与使用 在Java之中类是一个独立的结构体,所以需要使用class来进行定义,而类之中主要由属性和方法所组成,那么属性就是一个个具体的变量,方法就是可以重复执行的代码. 定义一个类 cl ...

  2. java面试(一)

    一.java基础 1.JDK和JRE的区别? JDK是java的开发环境,JRE是java的运行环境,即编写java程序就一定需要JDK,只是运行java程序只要JRE就足够了. 2.java中==和 ...

  3. 操作系统OS,Python - 多进程(multiprocessing)、多线程(multithreading)

    多进程(multiprocessing) 参考: https://docs.python.org/3.6/library/multiprocessing.html 1. 多进程概念 multiproc ...

  4. leetcode菜鸡斗智斗勇系列(7)--- 用最小的时间访问所有的节点

    1.原题: https://leetcode.com/problems/minimum-time-visiting-all-points/ On a plane there are n points ...

  5. Tesseract-OCR 4.1.0 安装和使用— windows及CentOS

    OCR(Optical character recognition) —— 光学文字识别,是图像处理的一个重要分支,中文的识别具有一定挑战性,特别是手写体和草书的识别,是重要和热门的科学研究方向 截止 ...

  6. UINavigationController+FDFullscreenPopGesture全屏回滑手势阅读理解

    滑动返回纯oc.纯swifthttps://github.com/Bonway/BBGestureBack UINavigationController+FDFullscreenPopGesture全 ...

  7. python nohup linux 后台运行输出

    遇到问题 nohup python flush.py & 这样运行,生成了nohup.out文件,但是内容始终是空的,试了半天也不行.浪费了不少时间.原因 python的输出又缓冲,导致out ...

  8. 关于java自学的内容及感受

    这周自学了关于java类的知识,进度有点慢,需要抓紧学习剩下的知识,放假后由于自制力差而各种玩没有认认真真的学习,下周要认真的学习之后的进度,争取开学玩全部完成! /** * 动物的类 * */pub ...

  9. git pull 之后怎么找回别覆盖掉的内容

    [半夜吓出冷汗,git这个原理还真得好好学学] 不小心把本地写的东西pull了下,然后,全部覆盖掉了,以为就这样没了. 后面想到有“时光穿梭机”,“历史回滚”,在各大群友的帮助下,终于找回了. git ...

  10. DBCP 数据源获取连接

    Main package p1; import com.JdbcUtils; import org.apache.commons.dbcp.BasicDataSource; import org.ap ...