AJAX 技术

(1)博文概况:这篇文章记录ajax技术:全称:Asynchronous JavaScript And XML

(2)技术简介:只刷新局部页面的技术

        1)JavaScript:更新局部的网页

        2)XML:一般用于请求数据和响应数据的封装

       3)XMLHttpRequest对象:发送请求到服务器并获得返回结果

       4)CSS:美化页面样式

       5)异步:发送请求后不等返回结果,由回调函数处理结果

       6)JavaScript对象XMLHttpRequest是整个Ajax技术的核心,它提供了异步发送请求的能力

       

方法名

说    明

open(method,URL,async)

建立与服务器的连接

method参数指定请求的HTTP方法,典型的值是GETPOST

URL参数指定请求的地址

async参数指定是否使用异步请求,其值为truefalse

send(content)

发送请求content参数指定请求的参数

setRequestHeader(header,value)

设置请求的头信息

7)常用属性

       onreadystatechange:指定回调函数

       readystate: XMLHttpRequest的状态信息  

 

就绪状态码

说    明

0

XMLHttpRequest对象没有完成初始化

1

XMLHttpRequest对象开始发送请求

2

XMLHttpRequest对象的请求发送完成

3

XMLHttpRequest对象开始读取响应,还没有结束

4

XMLHttpRequest对象读取响应结束

statusHTTP的状态码 

responseText:获得响应的文本内容

responseXML:获得响应的XML文档对象

状态码

说    明

200

服务器响应正常

400

无法找到请求的资源

403

没有访问权限

404

访问的资源不存在

500

服务器内部错误

 

(3)作用

          1)减轻传输和服务器的负载

          2)更友好的与用户交互

(4)原理

         1)前端在指定事件后,异步发送请求。如失去输入焦点,键盘按下等

         2)发送信息到服务器端,由servlet处理,得到结果,返回

         3)再由javascript把内容写到页面

(5)例子

          1)自动补全

          2)弹幕等

         3)步骤:三部曲

                《1》创建使用Ajax的jsp:testAjax.jsp

<form name="form1" action="" method="post">
	用户名:<input type="text" id="uname" name="username" value=""
				onblur="checkUserExists()" />
	<div id="mess" style="display: inline"/>			
</form>

                《2》编写Ajax的js文件

//监听js
function checkUserExists() {
	//得到表单对象
	var f = document.form1;
	//获取表单username对应的输入框值
	var username = f.username.value;
	//使用if。。else判断输入是否为空
	if (username == "") {
	    alert("用户名不能为空");
	    return false;
	} else {
		//调用doAjax的js方法
	    doAjax("CheckUserServlet?username=" + username);
	}
}

//定义全局变量。js的基本类型只有四种
var xmlhttp;
//url是请求的地址
var xmlhttp;
function doAjax(url) {
	//创建xmlhttpRequest对象
	try {
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	 } catch (e) {
		try {
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (e) {
			try {
				xmhttp = new XMLHttpRequest();
				if (xmlhttp.overrideMimeType) {
					xmlhttp.overrideMimeType("text/xml");
				}
			} catch (e) {		

           }
		}
	}
	//调用回调函数:processRequest
    xmlhttp.onreadystatechange = processRequest;
    //建立与服务器的连接
    //第一个参数:请求方式post或get,第二个参数:指定请求的地址。第三个参数:指定是否使用异步请求,true/flase
	xmlhttp.open("post", url, true);
	//如果以post方式请求,必须要添加
	xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
	//指定请求的参数,如果没有就传null
	xmlhttp.send(null);

}
function processRequest() {
	//得到name为mess的html对象
	var messdiv = document.getElementById("mess");
	//xmlhttpRequest的状态信息。表示是否请求结束
	if (xmlhttp.readyState == 4)
		//HTTP的状态ma。表示是否相应结束
		if (xmlhttp.status == 200) {
			//responseText表示请求完成后,返回的字符串信息
		    if (xmlhttp.responseText == "false") messdiv.innerHTML = "用户名可以使用"; 	
		    else messdiv.innerHTML = "用户名已被使用";
		}  else {alert("请求处理返回的数据有错误");				
		}
	}

                    《3》创建处理异步请求的服务器程序:

   1、使用 PrintWriter的print方法给前端回应:即把需要信息传送给前端

 

package com.test.ssm.servlet;

import java.io.IOException;
import java.io.PrintWriter;

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

//继承HttpServlet
public class CheckUserServlet extends HttpServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	@Override
	public void init() throws ServletException {
		super.init();
	}
	
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doPost(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		req.setCharacterEncoding("UTF-8");
		resp.setContentType("text/html");
		PrintWriter out= resp.getWriter();
		String name=req.getParameter("username");
		if (name.equals("zhangsan")) {
			out.print("true");
		}else {
			out.print("false");
		}
		out.close();
	}

	@Override
	public void destroy() {
		super.destroy();
	}
}

 

备注说明

    一个小知识点!
1)适配器模式的一个知识点:适配器中的init(ServletConfig config)中帮我们把它当中的config对象赋值 且调用一个空参的init()。
 2)我们以后应该覆盖空参的init()。因为如果覆盖了这个带参数的,那么就无法实现为它的config对象赋值,由此导致其中使用config对象(this.)的方法会出错。
 3)其实这种方法(调用 一个空参的init()且 该参数方法中什么也没做 )也程序员之间的一种交流方式,告诉我们要覆盖空参的方法,这样它在帮我们做完事情会调用我们的覆盖方法

思考问题

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值