java调用ajax_配合JAVA的AJAX使用

概要

Ajax是“Asynchronous JavaScript and XML”的简称,即异步的JavaScript和XML。

readyState属性用来返回当前的请求状态,有五个可选值。分别是0到4,每个值的含义如下描述。 0:“未初始化”状态, 表示已经创建一个XMLHttpRequest对象,但是还没有初始化请求对象。 1:“打开”状态,表示已经调用了XMLHttpRequest对象的open()方法,已经准备好向服务器端发送请求。 2:“发送”状态,表示已经调用了XMLHttpRequest对象的send()方法把一个请求发送到服务器端,但是还没有收到服务器的响应。 3:“正在接收”状态,表示已经接收到HTTP响应头的信息,但是消息体部分还没有完全接收。 4:“已加载”状态,表示响应已经被完全接收。

status属性用来返回服务器的响应状态码,例如200表示OK,一切正常;404表示请求的文件没有找到;500表示内部服务器发生错误等。

statusText属性的含义与status属性非常类似,不过statusText用文本的形式表示服务器的响应状态,而status以状态码的形式表示。例如,statusText值为OK时,表示一切正常,对应status为200;值为Not Found表示文件没有找到,对应status为404。

onreadystatechange是一个事件触发器,其值往往是一个JavaScript的函数名。任何一个状态的变化,不管是readyState还是status的变化,都会触发该事件,并调用指定的JavaScript函数。

responseText属性用来接收服务器端返回的文本内容,以一个字符串的形式存在。使用responseText属性可以直接将返回的内容赋值给某一个域的innerHTML值,显示到客户端。

responseXML用来接收服务器的响应,以XML的形式存在,这个对象可以解析为一个DOM对象,进一步使用DOM的API更新客户端页面。

GET方式解析XML的AJAX

js代码:

varxmlHttp;//创建XMLHttpRequest对象

functioncreateXMLHttpRequest() {if (window.ActiveXObject) {//Microsoft

xmlHttp= new ActiveXObject("Microsoft.XMLHTTP");

}else if(window.XMLHttpRequest) {

xmlHttp= newXMLHttpRequest();

}

}functionvalidate() {//创建xmlHttp对象

createXMLHttpRequest();//使用DOM,得到id值是username的域

var username = document.getElementById("username");var url = "ValidateUsernameServlet?username=" +escape(username.value);//向服务器端的 ValidateUsernameServlet发送异步请求

xmlHttp.open("GET", url, true);//当状态有变化的时候,调用callback方法

xmlHttp.onreadystatechange =callback;

xmlHttp.send(null);

}functioncallback() {//当客户端完全接收完服务器的响应后,并且状态为200,也就是正常

if (xmlHttp.readyState == 4) {if (xmlHttp.status == 200) {//使用responseXML属性,接收服务器端返回的的XML文件 ,使用DOM解析XML

//用以下二种方式都可以得到页面上的值

//var message = xmlHttp.responseXML.getElementsByTagName("message")[0].firstChild.data;

var message = xmlHttp.responseXML.getElementsByTagName("message")[0].childNodes[0].nodeValuevar passed = xmlHttp.responseXML.getElementsByTagName("passed")[0].firstChild.data;

setMessage(message, passed);

}

}

}functionsetMessage(message, passed) {//使用DOM得到id值为usernamemsg的域,用来显示提示信息

var validateMessage = document.getElementById("usernamemsg");var fontColor = "red";if (passed == "true") {

fontColor= "green";

}

validateMessage.innerHTML= "" +message+ " ";

}

servlet代码:

public class ValidateUsernameServlet extendsHttpServlet {public voiddoGet(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {

doPost(request,response);

}public voiddoPost(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {

response.setContentType("text/html;charset=utf-8");

request.setCharacterEncoding("utf-8");boolean flag=true;

String message="";//用户名可以使用

boolean e=true;if(e == true){

message="用户名可以使用";

}else{

flag=false;

message="用户名已经存在,请选择使用其他用户名";

}//将校验的结果,以XML格式返回给客户端

response.setContentType("text/xml;charset=utf-8");

PrintWriter out=response.getWriter();//禁止缓存 HTTP1.0中通过Pragma 控制页面缓存,HTTP1.1中启用Cache-Control 来控制页面的缓存与否//参数:no-cache,浏览器和缓存服务器都不应该缓存页面信息;

response.setHeader("Cache-Control","no-cache");

out.println("<?xml version='1.0' encoding='"+"utf-8"+"' ?>");

out.println("");

out.println("" + flag + "");

out.println("" + message + "");

out.println("");

out.close();

}

}

html代码根据实际需求编写,这里不做演示。

POST方式解析XML的AJAX

js代码:

var xmlHttp;//创建XMLHttpRequest对象

function createXMLHttpRequest() {if(window.ActiveXObject) {

xmlHttp= new ActiveXObject("Microsoft.XMLHTTP");

}else if(window.XMLHttpRequest) {

xmlHttp= newXMLHttpRequest();

}

}

function validate() {//创建xmlHttp对象

createXMLHttpRequest();//使用DOM,得到id值是username的域

var username = document.getElementById("username");

var url= "ValidateUsernameServlet";//向服务器端的 ValidateUsernameServlet发送异步请求

xmlHttp.open("POST", url, true);

xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");//当状态有变化的时候,调用callback方法

xmlHttp.onreadystatechange =callback;

xmlHttp.send("username="+encodeURI(username));

}

function callback() {//当客户端完全接收完服务器的响应后,并且状态为200,也就是正常

if (xmlHttp.readyState == 4) {if (xmlHttp.status == 200) {//使用responseXML属性,接收服务器端返回的的XML文件 ,使用DOM解析XML

var message = xmlHttp.responseXML.getElementsByTagName("message")[0].firstChild.data;

var passed= xmlHttp.responseXML.getElementsByTagName("passed")[0].firstChild.data;

setMessage(message, passed);

}

}

}

function setMessage(message, passed) {//使用DOM得到id值为usernamemsg的域,用来显示提示信息

var validateMessage = document.getElementById("usernamemsg");

var fontColor= "red";if (passed == "true") {

fontColor= "green";

}

validateMessage.innerHTML= "" + message + " ";

}

servlet代码与GET方式相同。

POST方式解析文本的AJAX

js代码:

varxmlHttp;//创建XMLHttpRequest对象

functioncreateXMLHttpRequest() {if(window.ActiveXObject) {

xmlHttp= new ActiveXObject("Microsoft.XMLHTTP");

}else if(window.XMLHttpRequest) {

xmlHttp= newXMLHttpRequest();

}

}functionvalidate() {//创建xmlHttp对象

createXMLHttpRequest();//使用DOM,得到id值是username的域

var username = document.getElementById("username");var url = "ValidateUsernameServlet2";//向服务器端的 ValidateUsernameServlet发送异步请求

xmlHttp.open("POST", url, true);

xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");//当状态有变化的时候,调用callback方法

xmlHttp.onreadystatechange =callback;

xmlHttp.send("username="+encodeURI(username));

}functioncallback() {//当客户端完全接收完服务器的响应后,并且状态为200,也就是正常

if (xmlHttp.readyState == 4) {if (xmlHttp.status == 200) {//使用responseXML属性,接收服务器端返回的的XML文件 ,使用DOM解析XML

var responseText=xmlHttp.responseText;

document.getElementById("usernamemsg").innerHTML=responseText;

}

}

}

servlet代码:

public class ValidateUsernameServlet2 extendsHttpServlet {public voiddoGet(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {

doPost(request, response);

}public voiddoPost(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {

response.setContentType("text/html;charset=utf-8");

request.setCharacterEncoding("utf-8");boolean flag = true;

String message= "";//用户名可以使用

boolean e = true;if (e == true) {

message= "用户名可以使用";

}else{

flag= false;

message= "用户名已经存在,请选择使用其他用户名";

}//将校验的结果,以XML格式返回给客户端

response.setContentType("text/xml;charset=utf-8");

PrintWriter out=response.getWriter();//禁止缓存 HTTP1.0中通过Pragma 控制页面缓存,HTTP1.1中启用Cache-Control 来控制页面的缓存与否//参数:no-cache,浏览器和缓存服务器都不应该缓存页面信息;

response.setHeader("Cache-Control", "no-cache");

out.println("" + message + "");

out.flush();

out.close();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本课程详细讲解了以下内容:    1.jsp环境搭建及入门、虚拟路径和虚拟主机、JSP执行流程    2.使用Eclipse快速开发JSP、编码问题、JSP页面元素以及request对象、使用request对象实现注册示例    3.请求方式的编码问题、response、请求转发和重定向、cookie、session执行机制、session共享问题     4.session与cookie问题及application、cookie补充说明及四种范围对象作用域     5.JDBC原理及使用Statement访问数据库、使用JDBC切换数据库以及PreparedStatement的使用、Statement与PreparedStatement的区别     6.JDBC调用存储过程和存储函数、JDBC处理大文本CLOB及二进制BLOB类型数据     7.JSP访问数据库、JavaBean(封装数据和封装业务逻辑)     8.MVC模式与Servlet执行流程、Servlet25与Servlet30的使用、ServletAPI详解与源码分析     9.MVC案例、三层架构详解、乱码问题以及三层代码流程解析、完善Service和Dao、完善View、优化用户体验、优化三层(加入接口和DBUtil)    1 0.Web调试及bug修复、分页SQL(Oracle、MySQL、SQLSERVER)     11.分页业务逻辑层和数据访问层Service、Dao、分页表示层Jsp、Servlet     12.文件上传及注意问题、控制文件上传类型和大小、下载、各浏览器下载乱码问题     13.EL表达式语法、点操作符和中括号操作符、EL运算、隐式对象、JSTL基础及set、out、remove     14.过滤器、过滤器通配符、过滤器链、监听器     15.session绑定解绑、钝化活化     16.以及Ajax的各种应用     17. Idea环境下的Java Web开发
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值