一、AJAX是啥?

  1.页面无需刷新,异步请求。

  2.为什么使用ajax?

  原因:

  1传统模式  需要将请求发送到服务器,服务器经过业务处理,返回一个页面给客户端。这样做,会很浪费资源。

  2.ajax  只需要请求一次页面,之后的数据交互 都无需重新记载当前页面。是不是很强大?

  3ajax的应用场景?

  注册中的 用户名校验、注册提交、注册验证码、登录提交等。

二、JSON?

  1.是啥?

  是一种数据格式

  2.为啥使用?

  优点:方便数据传输,便于传递和解析。

  3.啥时候用?

  ajax--------json------------后台

  后台------json-------------ajax

json  对象存储数据  类似java中的  foreach

 

三 ,检查注册页面 使用ajax技术。

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"+"views/";
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>注册 - 贵美·商城</title>
<base href="<%=basePath%>">
<link rel="icon" href="img/icon.png" type="image/x-icon">
<link rel="stylesheet" type="text/css" href="css/register.css"/>
</head>
<body>
<div class="wrap">
<div class="guimeilogo"></div>
<div class="register">
<div class="top">
<h1>新用户注册</h1>
<a href="/shop/views/login.jsp">已有账号</a>
</div>
<div class="mid">
<div style="color: red">${error}</div>
<form action="/shop/register" method="post">
<%--在这里添加提示信息 1.成功注册 2.失败注册--%>
<div id="showMsg"></div>
<input type="text" name="username" id="username" placeholder="用户名" required="required"/>
<div class="sec">
<input type="text" name="code" id="code" placeholder="验证码" required="required" />
<a class="send" onclick="send()"> 发送验证码 </a>
<script>
function send(){
return false;
}
</script>
</div>
<input type="password" name="password" id="password" placeholder="密码" required="required" />
<input type="password" name="reppw" id="reppw" placeholder="重复密码" required="required" />
<input type="text" name="telephone" id="telephone" placeholder="手机号" required="required"/>
<input type="text" name="nickname" id="nickname" placeholder="亲,您的昵称" required="required" />
<input type="text" name="email" id="email" placeholder="亲,您的邮箱" required="required"/>
<input type="submit" id="submit" value="注册"/>
</form>
</div>
</div>
</div>
<%--导入JS包--%>
<script src="js/jquery-2.1.0.js"> </script>
<script > /*
用户: 输入用户名完毕后 鼠标离开后 立刻提交用户名是否可用 给用户提示 1.给username 输入框 添加失去焦点的事件 onblur
username.onblur=function () {
alert(username.value)
}
2.获取用户输入的数据 value 3.通过ajax 将用户输入的用户名发送给服务器 注意 涉及到函数 需要导入js的包 jQuery-2.1.0.js $.post("url" ,"参数",function(data){});
$.post("/shop/CheckUsername",{username:username.value},function (data)
{username:username.value}
4.接受服务器返回响应 5.将回传的值 展示到页面中 后台?
1.接收请求的参数
2.通过 dao 检验用户名是否可用
3.将校验结果 响应给浏览器
*/
//1.给username 输入框 添加时期焦点事件 通过id的方式
username.onblur=function () {
//2.通过ajax 将用户的用户名发送给服务器
$.post("/shop/checkUsername",{username:username.value},function (data) {
if (data.code == "1044"){
$("#showMsg").html("用户名 已经被注册过").css("color","red");
} else{
$("#showMsg").html("此用户名 可以注册").css("color","green");
}
})
} if ("${success}"=="注册成功"){
if(confirm("注册成功,是否登录?")){
window.location.href="/shop/views/login.jsp";
}
}
</script>
</body>
</html>

servlet部分


package com.aaa.servlet;

import com.aaa.dao.Impl.UserDAOImpl;
import com.alibaba.fastjson.JSON; 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 java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap; /**
* 验证用户唯一性 在后台要先获取到 用户注册的参数。
* 1.获得请求参数
*
* 2.需要验证 用户名的唯一性 ? 调用dao 方法中的isExist
*
* 3.将检验结果 返回给浏览器 响应ajax的请求?
*
* 1.resp 响应浏览器 防止乱码 设置编码格式
* resp.setContentType("text/json:charset=UTF-8");
*
* 2.resp 获取数据
* PrintWriter out = resp.getWriter(); getWriter()获取通向浏览器的字符流(同一次请求处理中,字节流和字符流不能同时存在)
*
* 3.思考?
* json的格式 和java中的map相似 创建hashmap集合 存储数据? HashMap<Object, Object> map = new HashMap<>();
*
* JSON.parseObject,是将Json字符串转化为相应的对象;
* JSON.toJSONString则是将对象转化为Json字符串。 直接导包使用 fastjson-1.2.9.jar
*
* 4.输出数据?
*
* 5.关闭流?
*
*/
@WebServlet("/checkUsername")
public class CheckUsernameServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String username = req.getParameter("username"); UserDAOImpl dao = new UserDAOImpl();
boolean exist = dao.isExist(username); resp.setContentType("text/json:character=utf-8");
PrintWriter out = resp.getWriter();
HashMap<Object, Object> map = new HashMap<>(); if (exist){
map.put("code","1044");
map.put("message","用户名已被占用");
}else{
map.put("code","102200");
map.put("message","用户名 可用");
}
String s = JSON.toJSONString(map); out.write(s);
out.close();
}
}

 

效果

初始ajax技术的更多相关文章

  1. 使用ajax技术实现txt弹出在页面上

    使用ajax技术实现txt弹出在页面上   使用ajax技术实现点击按钮,将TXT文本里的内容通过弹出框显示到页面上 /*事件会在页面加载完成后触发.*/ <script> window. ...

  2. 《所用到的AJAX技术基础》

    来自百度网页,w3cshool网页:AJAX = Asychronous JavaScript and XML,翻译成中文为:异步的JavaScript XML. 异步的意思就是不重新加载整个页面,后 ...

  3. Ajax技术

    1.ajax技术的背景 不可否认,ajax技术的流行得益于google的大力推广,正是由于google earth.google suggest以及gmail等对ajax技术的广泛应用,催生了ajax ...

  4. Ajax技术详解

    Ajax技术:Ajax描述了一种主要使用脚本(JS)操纵HTTP的web应用架构,它的主要特点是使用脚本操纵HTTP和web服务器进行数据交换,不会导致页面重载.Ajax的核心是JS的XMLHttpR ...

  5. Java之Ajax技术

    ajax(asynchronouse javascript and xml) 异步的javascript 和 xml(现在常把xml换成json): ajax是2005年提出的,在2006,2007年 ...

  6. 在 PHP 中结合 Ajax 技术进行图片上传

    前面几则日志中讲述了在 PHP 中上传文件,相信大家对 PHP 中如何进行文件上传已经初步掌握.本文来继续探讨在 PHP 中上传文件的技术,不同的是,本次上传将仅限于图片文件的上传,并且将采用 Aja ...

  7. ajax 技术和原理分析

    ajax所包含的技术 大家都知道ajax并非一种新的技术,而是几种原有技术的结合体.它由下列技术组合而成. 1.使用CSS和XHTML来表示. 2. 使用DOM模型来交互和动态显示. 3.使用XMLH ...

  8. Ajax 技术一

    一.Ajax概述 1.历史起源 1998年,微软公司Outlook Web Access研发小组在当时的IE浏览器中集成了一种技术,可以在客户端无刷新的前提下向服务器端发送Http请求,这门技术称之为 ...

  9. AJAX技术的核心

    //创建一个XMLHttpRequest对象 ,利用此对象与服务器进行通信 是AJAX技术的核心 /** * 获取XmlHttpRequest对象 */ function getXMLHttpRequ ...

随机推荐

  1. JavaScript夯实基础系列(三):this

      在JavaScript中,函数的每次调用都会拥有一个执行上下文,通过this关键字指向该上下文.函数中的代码在函数定义时不会执行,只有在函数被调用时才执行.函数调用的方式有四种:作为函数调用.作为 ...

  2. IT企业级应⽤开发模式演化

    前端研发流程 传统To B类系统的研发模式 探索 & 思考设计模式库(DPL)设计语⾔设计语⾔详解基于MVVM模式的Web框架 & UI库优化后的开发模式实现价值实践 赋能 赋能授权( ...

  3. JAVA IO流编程 实现文件的写入、写出以及拷贝

    一.流的概念 流:数据在数据源(文件)和程序(内存)之间经历的路径. 输入流:数据从数据源(文件)到程序(内存)的路径. 输出流:数据从程序(内存)到数据源(文件)的路径. 以内存为参照,如果数据向内 ...

  4. 修改phpcms中的评论样式

    phpcms中自带的评论插件很好用!但是样式个人感觉丑的狠,百度一下也没能找到解决方式,也许是自己的搜索方式不对,于是自己就研究了研究,这里可以使用两种方法进行修改 方法一: 使用PHPCMS中的ge ...

  5. Bootstrap实现注册界面

    样式一 例图 代码 <head> <meta charset="UTF-8"> <title>用户注册</title> <li ...

  6. thymeleaf th:href url传递多参数

    <a th:href="@{/teacherShowMember(class_id=${class.classId},class_name=${class.className})}&q ...

  7. vivo7.0以上系统如何无需Root激活Xposed框架的方法

    在较多公司的引流或者业务操作中,基本都需要使用安卓的黑高科技术Xposed框架,几天前我们公司购买了一批新的vivo7.0以上系统,基本都都是基于7.0以上版本,基本都不能够获取Root的su超级权限 ...

  8. C++ 子类继承父类纯虚函数、虚函数和普通函数的区别

    C++三大特性:封装.继承.多态,今天给大家好好说说继承的奥妙 1.虚函数: C++的虚函数主要作用是“运行时多态”,父类中提供虚函数的实现,为子类提供默认的函数实现.子类可以重写父类的虚函数实现子类 ...

  9. 点击 Button触发事件将GridView1 CheckBox勾选的行添加到GridView2中

    有时候想实现一个CheckBox选取功能,但是很多细节不是很清楚 相信大家都有遇到类似的情况,直接看代码,如下: 前端代码GridView1,CheckBox控件设置 <asp:GridView ...

  10. vue 导出xlsx表功能

    详细步骤: 1.需要安装三个依赖: npm install -S file-saver xlsx npm install -D script-loader 两个命令行包含三个依赖. 2.项目中src下 ...