当前位置: 首页>开发笔记>正文

Ajax异步测试

Ajax异步测试

使用Ajax完成异步请求,对其使用有一个简单的认识

1.完成两个基本的小功能,效果如下


2.组成非常简单Servlet+jsp

jsp如下

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>AjaxTest</title><meta charset = "utf-8"/><style type="text/css">#divshow{height: 200px;width:200px;background : orange;border : "1px, solid";}</style><script type="text/javascript">function getData(){//获取ajax引擎对象var ajax = new XMLHttpRequest();//复写onreadystatechange方法ajax.onreadystatechange = function(){//获取响应数据var data = ajax.responseText;//获取要操作的元素var showdiv = document.getElementById("divshow");//操作元素内容showdiv.innerHTML = data;};//创建并发送请求ajax.open("get", "data", true);ajax.send(null);} //ajax的优化function getData1(){//获取ajax对象(判断不同的浏览器类型)var ajax ;if(window.XMLHttpRequest){				//火狐 与谷歌的获取方式ajax = new XMLHttpRequest();}else if(window.ActiveXObject){		//IE浏览器的获取方式ajax = new ActiveXObject("Msxml2.XMLHTTP");}//复写onreadystatechange方法ajax.onreadystatechange = function(){//判断数据的状态码  ----通过方法:  对象名.readyState 调用//(有0、1、2、3、4 合计5种,其中状态码为4的时候,表示数据已经接收成功)if(ajax.readyState==4){//判断相应码(200、404、500等)if(ajax.status==200){//获取相应结果var data = ajax.responseText;//获取所要操作的元素var showdiv = document.getElementById("divshow");//操作与元素showdiv.innerHTML = data;}else if(ajax.status==404){document.getElementById("divshow").innerHTML = "资源未找到";}else if(ajax.status==500){document.getElementById("divshow").innerHTML = "服务器繁忙";}}};ajax.open("get", "data", true);	//true表示:此ajax引擎对象采用异步处理。ajax.send(null);// alert("我是异步处理的测试警告");		//在data的servlet,线程休眠3000ms。异步处理的结果是,点击按钮后,此弹窗直接弹出,div中的内容自点击按钮后3秒刷新出来(不论是否去除弹窗)}//使用ajax配合servlet进行用户名校验(失去焦点后自动校验)function userNameCheck(){//获取用户数据var uname = document.getElementById("uname").value;//声明ajax引擎对象var ajax;if(window.XMLHttpRequest){ajax = new XMLHttpRequest();}else if(window.ActiveXObject){ajax = new ActiveXObject("Msxml2.XMLHTTP");}//重写onreadystatechange方法ajax.onreadystatechange = function(){//判断数据的就绪状态码if(ajax.readyState==4){//判断相应码if(ajax.status==200){//获取响应结果var data =ajax.responseText;//获取要操作的元素var span = document.getElementById("unameSpan");//处理响应结果if("empty"==data){span.innerHTML = "*用户名不能为空";span.style.color = "red";}else if(eval(data)){span.innerHTML = "*该用户名已存在";span.style.color = "red";}else{span.innerHTML = "*该用户名可以使用";    	span.style.color = "green";}}}};ajax.open("get", "user?uname="+uname, true);ajax.send(null);}</script></head><body><h3>测试Ajax异步请求</h3><hr /><input type="button" value="点击查看数据" id="btn" οnclick="getData1()" /><div id="divshow"></div><hr /><h3>使用ajax完成用户名校验(丧失焦点后,自动校验)</h3>用户名: <input type="text" name="uname" id="uname" value="" οnblur="userNameCheck()"/><span id=unameSpan></span></body>
</html>

3.第一个测试基本请求的Servlet

public class DataServlet extends HttpServlet {@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {//设置请求编码格式req.setCharacterEncoding("utf-8");//设置相应编码格式resp.setContentType("text/html;utf-8");resp.setCharacterEncoding("utf-8");//响应请求结果resp.getWriter().write("我是异步返回的数据!");}
}

4.第二个用户名校验的Servlet

package com.bjsxt.servlet;import java.io.IOException;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.bjsxt.pojo.User;
import com.bjsxt.service.UserService;
import com.bjsxt.serviceImpl.UserServiceImpl;public class UserServlet extends HttpServlet {UserService us = new UserServiceImpl();@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {//声明请求编码格式req.setCharacterEncoding("utf-8");//声明响应编码格式resp.setCharacterEncoding("utf-8");resp.setContentType("text/html; charset =utf-8");//获取请求信息String str = req.getParameter("uname");//处理请求信息,查询数据库,获取信息User userName = us.checkUserInfo(str);if (!"".equals(str)) {if (userName!=null) {//返回处理结果resp.getWriter().write("true");}else {resp.getWriter().write("false");}}else {resp.getWriter().write("empty");}}
}

5.效果如下


https://www.zydui.com/afb05V28HBA8.html
>

相关文章:

  • javaweb从入门到实战
  • js怎么实现异步
  • 前端解决跨域的三种方法
  • 不学ajax可以直接学vue吗
  • ajax深入浅出
  • ajax实践教程
  • 如何用ajax实现异步请求
  • ajax异步什么意思
  • vscode搭建nodejs環境,關于VS code ESP-IDF 提示“loading ‘build.ninja‘: 系統找不到指定的文件” 的解決方案
  • 什么是應用軟件并舉例,16.應用舉例
  • 【面經】美團春招三輪面經分享~涵蓋眾多知識點
  • 2021年面試題目,面試題--新增
  • magic king怎么讀,magick++ 簡介
  • 微信怎么設置定時發送,朋友圈可以定時發送嗎?
  • can not connect to rpc service,RPC service
  • ftpserver安卓版,FTPServer
  • server u使用教程,Server-U
  • rpc服務器,RPC 和 Web Service 有什么區別?
  • rpc服務器,web service和rpc的區別
  • psexec
  • dhclient命令,hpe?3par命令行查看狀況腳本
  • hp存儲默認管理口地址,HP3par 多路徑存儲磁盤使用方法
  • hp3par命令行手冊,3par命令集
  • 存儲器芯片的地址范圍,存儲器芯片類別有哪些?
  • 在pc機中各類存儲器,1.14各類存儲器芯片
  • 存儲芯片漲價最新消息,存儲器芯片
  • Windows/Linux性能監控軟件>csv文件,方便生成圖表
  • sqlserver nvarchar,【SQL開發實戰技巧】系列(四十五):Oracle12C常用新特性?VARCHAR2/NVARCHAR2類型最大長度由40
  • arcgis怎么導入地圖,Arcgis路網導入3dmax批量改成道路面
  • 定義animal父類,定義一個父類Animal eat方法 , 定義兩個子類 Dog 特有方法keepHome , Cat 特有方法 catchMouse ;并
  • 手機連接兩個藍牙方法,打開藍牙的設置
  • iconfont圖標免費嗎,關于阿里矢量圖標彩色icon使用
  • ps制作賽博朋克風格,如何用ps做出賽博朋克的風格?
  • ue4綠幕實時導入場景,如何在UE4中制作賽博朋克LED效果
  • 產品經理有哪些培訓課程,2023年全國NPDP產品經理國際認證火熱招生啦
  • B端產品需要什么能力,NPDP認證|B端產品經理是如何做競品調研的?
  • 超級工具,Supershell 一款牛叉閃閃的工具
  • buffer在c語言中是什么意思,QBuffer 用法理解