黑马day17 ajax入门案例

如何实现Ajax异步交互:

*实现Ajax的步骤:

(1).创建XMLHttpRequest对象

固定写法,不用记...如果面试问到,所以最好是背诵下来

(2).注册监听

利用XMLHttpRequest对象的onreadystatechange属性:用来监听属性的状态

利用XMLHttpRequest对象的readyState属性:获取服务器端的状态

利用XMLHttpRequest对象的status属性:获取状态码(200,404等)

(3).建立连接

利用XMLHttpRequest对象的open()方法

(4).发送请求

利用XMLHttpRequest对象的send方法(如果请求类型是get方式,send方法不起作用.如果请求方式是post方式,send方法起作用)

Ajax异步交互中get和post方式的区别

如果请求类型是post方式的话,需要设置请求头部信息:"Content-Type"为"application/x-www-form-urlencoded"

send方法起作用

open方法的第一个参数

案例1:测试get方式:

1.测试使用的jsp页面...其中导入要使用的js文件...test.js

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title></title>
	<meta http-equiv=" pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">
	<script type="text/javascript" src="test.js"></script>
  </head>

  <body>
    <form action="">
    	<input type="button" name="ok" id="ok" value="测试服务器连接"/>
    </form>
  </body>
</html>

2.js文件:

<span style="font-size:14px;">//当页面加载完毕之后才执行下面的代码
window.onload=function(){
	//当点击按钮的时候就会触发下面的事件
	document.getElementById("ok").onclick=function(){
		//1.得到xmlHttpRequest对象
		var xhr=ajaxFunction();
		//2.监听服务器...服务器端向客户端进行响应
		xhr.onreadystatechange=function(){//用于监听服务器端的状态
			if(xhr.readyState==4){//readyState 属性表示请求的当前的状态。他的值可是是下面的5中情况
				if(xhr.status==200||xhr.status==304){//如果响应码是200或者304的话就接受数据
				//接收服务器端的响应结果 文本类型
					var data=xhr.responseText;
					alert(data);
				}
			}
		}
		//3.建立客户端与服务器的连接
		//-- *method:get 或者 post *url:请求路径,可以是相对路径也可以是绝对路径. *asych 是不是异步处理请求
		xhr.open("get","../servlet/TestGetServlet?c=5",true);
		//4.客户端向服务器端发送请求
		//-- * 如果请求方式是get方式的话,send方法发送数据服务器接收不到数据 * 该步骤不能够被省略
		</span><span style="font-size:18px;color:#ff0000;"><strong>xhr.send("a=3&b=4");</strong></span><span style="font-size:14px;">
		}
}
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;
 }
</span>

3.写servlet类:

package app.servlet;

import java.io.IOException;

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

public class TestGetServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.getWriter().write("connect is successful!");
		String a = request.getParameter("a");
		String b=request.getParameter("b");
		String c=request.getParameter("c");
		System.out.println(a);
		System.out.println(b);
		System.out.println(c);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

}

控制台:仅仅打印了c但是send方法中的参数没有打印..这说明send方法对get方式无效

页面:

案例2:测试post请求方式:这里的jsp页面中的form中的参数method改为了post

1.jsp页面...post提交

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title></title>
	<meta http-equiv=" pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">
	<script type="text/javascript" src="test.js"></script>
  </head>
  <body>
    <form action=""<span style="color:#ff6666;"> </span><span style="color:#cc0000;"><strong>method="post"</strong></span>>
    	<input type="button" name="ok" id="ok" value="测试post连接"/>
    </form>
  </body>
</html>

2.js文件

<span style="font-size:14px;">window.onload=function(){
	document.getElementById("ok").onclick=function(){
		//1.得到xhr对象
		var xhr=ajaxFunction();
		//2.服务器对客户机的响应
		xhr.onreadystatechange=function(){
			if(xhr.readyState==4){
				if(xhr.status==200){
					var data=xhr.responseText;
					alert(data);
				}
			}
		}
		//3.建立客户机和服务器的连接
		xhr.open("post","../servlet/TestPostServlet",true);

		//如果请求类型是POST方式的话,需要设置请求首部信息
		</span><strong><span style="font-size:18px;color:#ff0000;">xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");</span></strong><span style="font-size:14px;">
		//4.客户机向服务器发送数据
		xhr.send("a=7&b=8");
	}
}
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;
 }
</span>

3.servlet:

package app.servlet;

import java.io.IOException;

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

public class TestPostServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String a = request.getParameter("a");
		String b = request.getParameter("b");
		response.getWriter().write("connection is successful!");
		System.out.println(a);
		System.out.println(b);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

}

控制台:

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-07 10:53:30

黑马day17 ajax入门案例的相关文章

简易 Ajax 入门案例

<html> <body> <form name="myForm"> 用户: <input type="text" name="username" /> 时间: <input type="text" name="time" /> </form> </body> </html> private DataTable

黑马day11 事务入门案例

事务:事务是逻辑上的一组操作,这组操作要么同时执行要么同时不完成 事务的管理:默认情况下,数据库会自动管理事务,管理的方式是一条语句就独占一个事务. 如果需要自己控制事务也可以通过如下命令开启/提交/回滚事务 start transaction commit rollback jdbc的事务管理: conn.setAutoCommit(false)//设置自己开启事务 conn.commit()//提交事务 conn.rollback()//回滚事务 SavePoint sp=con.setSa

黑马day17 ajax&amp;实现用户名自动刷新

1. regist.jsp文件 <%@ page language="java" pageEncoding="utf-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>校验用户名是否存在</title> <script type="

黑马day17 ajax&amp;实现二级联动

手工方式实现二级联动的效果: jsp页面: <%@ page language="java" pageEncoding="utf-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>级联菜单</title> <script type="

ActiveMQ入门案例以及整合Spring的简单实用

先来个ActiveMQ介绍哈: MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法,是一个消息中间件. 应用场景:为了实现系统之间的通信,把系统之间的调用耦合度降低就可以使用MQ. 1) activeMQ 是Apache出品,最流行的,能力强劲的开源消息总线. 2) avtiveMQ主要特点:完全支持JMS1.1和J2EE 1.4规范:支持spring,很容易内嵌到spring中:支持ajax. 3) activeMQ的消息形式: a) 点对点形式,即生产

AJAX入门--- XMLHttpRequest对象的属性和方法

由于刚刚接触到Ajax对其比较陌生,而其中的XMLHttpRequest对象更是未曾听闻.开始学之前,了解一下它的属性和方法为它的使用做下铺垫.本文重点介绍XMLHttpRequest的属性和方法. XMLHttpRequest对象的属性和事件 属性 描述 readyState 表示XMLHttpRequest对象的状态[1] responseText 包含客户端接收到的HTTP相应的文本内容[2] responseXML 服务器响应的XML内容对应的DOM对象[3] status 服务器返回h

Ajax 入门笔记

AJAX =Asynchronous Javascript + XML,是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新. XMLHttpRequest 是 AJAX 的基础.XMLHttpRequest 用于在后台与服务器交换数据.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新. 1:创建 XMLHttpRequest 对象 为

Hibernate介绍和入门案例

一身转战三千里,一剑曾当百万师 如果你在之前没有学过SSH三大框架,那么你之前肯定是通过JDBC来对数据库进行操作.现在,你完全可以把跟数据库交互的操作直接交给Hibernate. Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的 orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. Hibernate可以应用在任何使用JDBC

一起学习Hibernate: Hibernate01 —— Hibernate的概述与入门案例

一 Hibernate的介绍 1 让我们从JDBC与替代它的框架Hibernate进行一下对比. 1.1 JDBC的缺点 1) 代码结构繁琐.每次书写sql语句操作数据库都得需要很多步; 2) 是面向过程的编程,而非面向对象的: 3) 没有做到数据缓存.这会导致程序与数据库的交互的次数很多: 4) 因为事务是自动开启的,所以存在安全隐患. 1.2 JDBC的优点 1) 因为是底层的数据库操作,所以执行效率很高: 2) sql语句可以自己编写,可以进行优化从而选择效率最高的那些. 1.3 Hibe