Ajax

B/S架构的web应用相比C/S应用程序在界面效果和操控性方面差很多,但是使用了Ajax异步发送请求方式可以让用户获得类似桌面程序的用户体验。

 

痛点:传统WEB应用---每次请求生成新的页面,用户提交后,要等待服务器相应(独占式请求),若服务器相应没有结束,用户要一直等待,用户体验很差,服务器负担重。

Ajax技术--可以完美弥补以上缺点,Ajax应用使用JavaScript异步发送请求(在一个请求的服务器响应还没返回时,可以再次发送请求),不用每次请求都重新加载页面,发送请求时可以继续其他操作,在服务器完成相应后,再使用JavaScript将相应展示给客户。

从用户发送请求到获得相应,当前用户界面在整个过程中不受干扰。而且我们可以在必要的时候只更新页面的一小部分,而不用刷新整个页面,即“无刷新”技术。

优势:1.避免了重复加载,浪费网络资源的现象,提高了加载速度

           2.提供连续的用户体验,而不被页面刷新中断(看视频时的其他操作)

传统web开发技术和Ajax技术的区别:

共同点:流程都是先由客户端发送Http请求,然后由服务器对请求生成响应。

差异:

1.发送请求方式不同:传统web应用-------通过web浏览器发送请求,Ajax技术------通过JavaScript的XMLHttpRequest对象

2.服务器响应不同:传统web应用------服务器的响应的是一个完整页面,Ajax技术-------服务器的响应只是需要的数据

3.客户端处理响应方式不同:传统web应用---------浏览器等待服务器响应完成后重新加载整个页面,Ajax-------通过JavaScipt动态更新页面中需要更新的部分

 

Ajax(Asynchronous JavaScript and XML)由JavaScript、XML、CSS等现有技术整合而成。

Ajax执行流程:

1.用户界面触发时间调用JavaScript

2.通过Ajax引擎--XMLHttpRequest对象异步发送请求到服务器

(Ajax引擎:即XMLHttpRequest,以异步方式在客户端与服务器端之间传递数据)

3.服务器返回XML、JSON、HTML格式的数据

4.利用返回的数据使用DOM和CSS技术局部更新用户界面

 

XMLHttpRequest:

XMLHttpRequest对象可以在不刷新当前页面的情况下向服务器端发送异步请求,并接收服务器端的响应结果,从而实现局部更新当前页面的功能。

1.创建XMLhttpRequest对象:

用window.XMLHttpRequest的返回值判断创建哪个,返回true:IE6↑;false:IE6↓

分为IE6以上和IE6以下版本:

老版本IE(IE5/IE6):XMLHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");

新版本IE和其他大部分浏览器:XMLHttpRequest = new XMLHttpRequest();

 

XMLHttpRequest对象常用属性和方法

一、方法:

open(String method,String url,boolean async):用于创建一个新的HTTP请求

method:设置HTTP请求方法,post还是get,大小写无所谓

url:请求的url地址

async:指定次请求是否为异步方法,默认为true

 

send(String data):发送请求到服务器

data:字符串类型,,通过次请求发送的数据。此参数值决定于open方法中的method参数。

如果method为post,则可以指定参数。

如果method为get,则该参数为"null"

 

setRequestHeader(String header,String value)单独设置请求的某个HTTP头信息,header:要指定的HTTP头名称

value:要指定的HTTP头名称所对应的值。---一般用于post方法设置

 

二、属性:

onreadystatechange:设置回调函数

readyState:返回请求的当前状态

0-------------未初始化

1-------------开始发送请求

2-------------请求发送完成

3-------------开始读取响应

4-------------读取响应结束

status:返回当前请求的HTTP状态码

200----------正确返回

404----------找不到访问对象

500----------内部错误

403----------无访问权限

用readyState==4&&status==200判断响应成功,再继续下一部的判断

statusText:返回当前请求的响应行状态  正常显示“OK”

responseText:以文本形式获取响应值(一般在回调函数中使用)

responseXML:以XML格式获取响应值,并且解析成DOM对象返回

示例:

使用Ajax实现:用户文本框失去焦点,发送请求到服务器判断用户名是否存在,若存在提示“用户名已被使用”

前端页面:

<%@ 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>My JSP 'testname.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
	<script>
		var httpRequest;  //在外面声明为公共对象
		//创建XMLHttpRequest对象
		function createRequest(){
			if(window.XMLHttpRequest){     //返回true说明是IE6以上版本或其他浏览器
				httpRequest = new XMLHttpRequest();
			}else{						   //返回true说明是IE6以下版本
				HttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
			}
		}
		
		function doajax(){   		//创建HTTP请求,发送HTTP请求,创建回调函数
			createRequest(); 		//调用函数创建XMLHttpRequest对象
			var uname = document.getElementById("uname").value;  //获取表单输入内容
			httpRequest.onreadystatechange=huidiao;    			 //设置回调函数,监听服务器的响应状态并做出相应处理
			//httpRequest.open("get", "TestServlet?name="+uname, true);  		 //通过open方法创建新的HTTP请求,把name值发送到服务器端
			//httpRequest.send(null);
			httpRequest.open("post", "TestServlet", true);
			httpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded");    //post方法,需要设置setRequestHeader,死的
			httpRequest.send("name="+uname);
		}
		
		function huidiao(){										 //创建回调函数
			var sp = document.getElementById("sp");
			if(httpRequest.readyState==4&&httpRequest.status==200){   //readyState=4和status=200同时满足意味着响应接收成功
				var fg = httpRequest.responseText; 				//通过responseText属性获取响应值
				if(fg==2){
					sp.innerHTML="可以使用";
				}else{
					sp.innerHTML="用户名已被使用";
				}
			}
		}
		
	</script>
  </head>
  
  <body>
    name:<input type="text" id="uname" name="uname" onblur="doajax()"/><span id="sp"></span></br>
  </body>
</html>

服务器端:

package 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;
 
public class TestServlet extends HttpServlet {
 
 
	public TestServlet() {
		super();
	}
 
 
	public void destroy() {
		super.destroy(); // Just puts "destroy" string in log
		// Put your code here
	}
 
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
 
		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		String name = request.getParameter("name");
		if(name.equals("sa")){
			out.println(1);		//如果是1,则显示用户名已存在
		}else{
			out.println(2); 	//如果是2,则用户名可以使用
		}
	}
 
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
 
		this.doGet(request, response);
	}
 
	
	public void init() throws ServletException {
		// Put your code here
	}
 
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 内容概要 《计算机试卷1》是一份综合性的计算机基础和应用测试卷,涵盖了计算机硬件、软件、操作系统、网络、多媒体技术等多个领域的知识点。试卷包括单选题和操作应用两大类,单选题部分测试学生对计算机基础知识的掌握,操作应用部分则评估学生对计算机应用软件的实际操作能力。 ### 适用人群 本试卷适用于: - 计算机专业或信息技术相关专业的学生,用于课程学习或考试复习。 - 准备计算机等级考试或职业资格认证的人士,作为实战演练材料。 - 对计算机操作有兴趣的自学者,用于提升个人计算机应用技能。 - 计算机基础教育工作者,作为教学资源或出题参考。 ### 使用场景及目标 1. **学习评估**:作为学校或教育机构对学生计算机基础知识和应用技能的评估工具。 2. **自学测试**:供个人自学者检验自己对计算机知识的掌握程度和操作熟练度。 3. **职业发展**:帮助职场人士通过实际操作练习,提升计算机应用能力,增强工作竞争力。 4. **教学资源**:教师可以用于课堂教学,作为教学内容的补充或学生的课后练习。 5. **竞赛准备**:适合准备计算机相关竞赛的学生,作为强化训练和技能检测的材料。 试卷的目标是通过系统性的题目设计,帮助学生全面复习和巩固计算机基础知识,同时通过实际操作题目,提高学生解决实际问题的能力。通过本试卷的学习与练习,学生将能够更加深入地理解计算机的工作原理,掌握常用软件的使用方法,为未来的学术或职业生涯打下坚实的基础。
### 内容概要 这份《计算机试卷1》包含多个部分,主要覆盖了计算机基础知识、操作系统应用、文字处理、电子表格、演示文稿制作、互联网应用以及计算机多媒体技术。试卷以单选题开始,涉及计算机历史、基本概念、硬件组成、软件系统、网络协议等。接着是操作应用部分,要求考生在给定的软件环境中完成一系列具体的计算机操作任务。 ### 适用人群 本试卷适用于计算机科学与技术、信息技术相关专业的学生,以及准备计算机水平考试或职业资格认证的人士。它适合那些希望检验和提升自己计算机操作能力的学习者,也适用于教育工作者作为教学评估工具。 ### 使用场景及目标 1. **学习评估**:作为教育机构的课程评估工具,帮助教师了解学生对计算机基础知识的掌握程度。 2. **自学检验**:供个人自学者检验自己的计算机操作技能和理论知识,为进一步学习提供方向。 3. **职业发展**:为职场人士提供计算机技能的自我提升途径,增强其在信息时代的竞争力。 4. **考试准备**:为准备计算机相关考试的考生提供实战演练的机会,加强考试自信。 5. **教学资源**:教师可以将其作为教学资源,设计课程和实验,提高教学效果。 试卷的目标是通过理论知识的测试和实践技能的操作,全面提升考生的计算机应用能力。考生应掌握从基础的计算机组成原理到复杂的数据处理、演示文稿制作、网络应用以及多媒体技术处理等多方面技能。通过本试卷的学习与练习,考生将能够更加熟练地使用计算机解决实际问题,为未来的学术或职业生涯打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值