一.Ajax的使用步骤

  步一:创建AJAX异步对象,例如:createAJAX()

步二:准备发送异步请求,例如:ajax.open(method,url)

步三:如果是POST请求的话,一定要设置AJAX请求头,例如:ajax.setRequestHeader()

如果是GET请求的话,无需设置设置AJAX请求头

步四:真正发送请求体中的数据到服务器,例如:ajax.send()

  步五:AJAX不断的监听服务端响应的状态变化,例如:ajax.onreadystatechange,后面写一个无名处理函数

步六:在无名处理函数中,获取AJAX的数据后,按照DOM规则,用JS语言来操作Web页面

    分析:

二.用用实例(状态的切换)当我们点击图片就切换到另一种状态,并且图片发生改变

    1.当我们点击图片会进入到servlet的doGet方法

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { //获取浏览器端的数据
String lid=request.getParameter("lid");
String isshow=request.getParameter("isshow");
LinkService service=new LinkServiceImpl(); int flag=1;//1表示成功0表示失败
try{
//执行修改isshow的值
service.updateIsshow(Integer.parseInt(lid), Integer.parseInt(isshow));
}catch(Exception e){
flag=0;
} //返回给浏览器
//response.setContentType("text/html");
PrintWriter out = response.getWriter();
if(flag==1)
out.print("1");
else
out.print("0");
out.close();
}

  2.调用service层的修改方法

	public void updateIsshow(int lid,int isshow) {
String sql = "UPDATE Link SET isshow=? WHERE lid=?";
Connection conn = JdbcUtil.getConn();
PreparedStatement ps = null;
try {
ps = conn.prepareStatement(sql);
ps.setInt(1, isshow==1?0:1);
ps.setInt(2, lid);
ps.execute();
} catch (SQLException e) {
e.printStackTrace();
}
JdbcUtil.closeAll(null, ps, conn); }

  3.进入页面调用ajax中的方法,并传入id和当前状态isshow

 <script type="text/javascript">
//1获取ajax内置对象 function createAjax() {
var ajax = null;
try {
ajax = new ActiveXObject("microsoft.xmlhttp");
} catch (e) {
ajax = new XMLHttpRequest();
}
return ajax;
}
var obAjax = createAjax();
var info = "";
var vlid = "";
function changeIsshow(lid, isshow) {
vlid = lid;
if (isshow == 1){
info = " 不显示  <IMG onclick=changeIsshow("
+ lid
+ ",0) border=0 align=absMiddle src=../images/edit.gif width=14 height=14>";
}else{
info = " 显示  <IMG onclick=changeIsshow("
+ lid
+ ",1) border=0 align=absMiddle src=../images/XiuGai.gif width=14 height=14>";
} //2 准备发送异步请求 method请求方式 get,post, 请求地址 url
var url = "LinkChangeServlet?lid=" + lid + "&isshow=" + isshow+ "&dates="+new Date(); obAjax.open("get", url);
//4发送请求体中的数据
obAjax.send(null);
//5监听状态
obAjax.onreadystatechange = function (){
//a 服务器是否正确接收数据 readyState ==4
if (obAjax.readyState == 4) {
//b 服务器是否正确返回数据给浏览器status==200
if (obAjax.status == 200) {
//接收服务器返回的数据,reponseText返回changeCity.jsp中out.println()中的所有文本信息
var riceive = obAjax.responseText;
if (riceive == 1) {
document.getElementById("isshowInfo" + vlid).innerHTML = info;
} else {
alert('修改失败');
} }
}
};
}
</script> //jquery当中的ajax
<script src="../js/jquery.js" ></script>
<script>
function changeIsshowTwo(lid, isshow){ if (isshow == 1){
info = " 不显示  <IMG onclick=changeIsshowTwo("
+ lid
+ ",0) border=0 align=absMiddle src=../images/edit.gif width=14 height=14>";
}else{
info = " 显示  <IMG onclick=changeIsshowTwo("
+ lid
+ ",1) border=0 align=absMiddle src=../images/XiuGai.gif width=14 height=14>";
}
//调用jquery的ajax中的get方式
var url = "LinkChangeServlet?lid=" + lid + "&isshow=" + isshow+ "&dates="+new Date(); $.get(url,null,function(data){
if(data==1){
$("#isshowInfo"+lid).html( info );
}else{
alert('失败');
} }); }
</script>   

   4.赋值

	<div id="isshowInfo${link.lid}">
${link.isshow==0?"不显示":"显示"}  
<IMG onclick="changeIsshowTwo(${link.lid},${link.isshow})"border=0 align=absMiddle
src=${link.isshow==0?"../images/edit.gif":"../images/XiuGai.gif"} width=14 height=14>
    </div>

  

原始状态如下图

改变之后的状态如下图

总结:

XMLHttpRequest(即:AJAX)对象常用事件,方法和属性

(1)事件:

ajax.onreadystatechange:表示AJAX异步对象不断监听服务端的响应,

是由服务器程序触发,不是程序员触发

(2)属性:

ajax.readyState==0:表示AJAX异步对象已创建好,但还没有调用open()方法

ajax.readyState==1:表示AJAX异步对象已调用open()方法,但还没有调用send()方法

ajax.readyState==2:表示AJAX异步对象已调用send()方法,但请求还没有到达服务器端

ajax.readyState==3:表示服务端已接收到AJAX异步对象的请求,正在处理响应中。。。

ajax.readyState==【4】:表示AJAX异步对象已经完完全全接收到了服务器的响应信             息,但接收到的数据不一定都正确

上述5种状态不是所有浏览器都相同,但状态4每种浏览器都相同

ajax.status==200:表示AJAX异步对象接收到响应码,如果是200的话,表示一切正常

ajax.responseText:表示从AJAX异步对象中获取HTML载体中的数据

ajax.responseXML:表示从AJAX异步对象中获取XML载体中的数据

(3)方法:

ajax.open(method,url,可选的boolean值)

AJAX异步对象准备发送异步请求

参数一:以什么方式发送,常用的用GET或POST,大小写不敏感

参数二:发送到什么地方去,常用Servlet或Struts2或SpringMVC来接收,

这里只限于JavaEE学科

参数三:默认值为true,表示AJAX对象以【异步】的方式提交到服务端

如果设置为false,表示AJAX对象以【同步】的方式提交到服务端

ajax.setRequestHeader("content-type","application/x-www-form-urlencoded")

表示将请求体中的内容,按照UTF-8的方式进行编码,只针对POST请求有效

ajax.send(content)

AJAX异步对象真正发送异步请求

参数一:表示HTTP【请求体】中的内容

如果是GET方式:content = null,如果强行传值到服务器,服务端收不到,返回NULL

如果是POST方式:content != null,例如:username=jack&password=123&role=admin

java Ajax的应用的更多相关文章

  1. (转)JAVA AJAX教程第四章—AJAX和MVC的简单结合

    这里我们再理解了AJAX后,开始来用实例感受AJAX的力量. 今天我最后要实现的效果,当鼠标放到图片上时会根据,会把数据库库里的数据读出,通过显示框显示出来.这个在很多网上商店都有用到这里效果,我们这 ...

  2. (转)JAVA AJAX教程第一章-初始AJAX

    既然是认识AJAX,理论和实践相结合,这样让自己学的更快,理解更深入,我分一下几点: 1.  认识传统的同步交互方式和AJAX解决方案 2.  AJAX使用到的技术 3.  实例体验AJAX 一.同步 ...

  3. 摸索出来的chrom调试前后台数据(Java&&Ajax)交互的方法分享一下咯!!!

    1:开始没想分享的,后来看到有大佬分享如何使用Chrom的工具进行调试,哈哈哈哼,我就借着他的博客写一下我摸索的如何进行前后台数据交互吧(注:反正是自己瞎 捣鼓出来的,也许适合我,and我脑补一下吧, ...

  4. ajax的跨域解决方案(java+ajax)

    简单的建立一个后台项目 新建servlet: 内容如下: package a; import java.io.IOException; import java.io.PrintWriter; impo ...

  5. java+ajax实例

    <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding= ...

  6. Selenium+java - Ajax浮动框处理

    Ajax浮动框 我们常遇到的某些网站首页输入框,点击后显示的浮动下拉热点,如下图: 实际案例 模拟场景如下: hao123首页搜索输入框,单击搜索框,点击浮动框中的哪吒票房破30亿,单击后选项的文字内 ...

  7. (转)JAVA AJAX教程第三章—AJAX详细讲解

    现在开始深入AJAX,这里还是按老思路,理论和实践相结合.这章的内容主要是讲解AJAX步骤详解,下一张将会用一个AJAX技术实现页面提示效果的实例来说明AJAX的实现. 一.AJAX步骤详解 AJAX ...

  8. (转)JAVA AJAX教程第二章-JAVASCRIPT基础知识

    开篇:JAVASCRIPT是AJAX技术中不可或缺的一部分,所以想学好AJAX以及现在流行的AJAX框架,学好JAVASCRIPT是最重要的.这章我给大家整理了一些JAVASCRIPT的基础知识.常用 ...

  9. java Ajax跨域请求COOKIE无法带上的解决办法

    1.web.xml加入以下节点,,一定放在第一个filter <!--目录下所有文件可以跨域Begin--> <filter> <filter-name>CorsF ...

随机推荐

  1. 来,一起让我们越来越懒,面向CSS、JS未来编程。(9.28已更新)

    2016.10.29更新 本文存在大量的错误,仅供参考. 不知不觉在前端领域马上一个年头就要过去了,然而再看看自己的代码,果然够烂,那么为什么代码一直没有用面向对象的思维去写CSS呢?首先有两点:一点 ...

  2. 怎么调试lua性能

    怎么调试lua性能 我们的游戏使用的是Cocos2dx-lua 3.9的项目,最近发现我们的游戏.运行比较缓慢.想做一次性能优化了.其实主要分为GPU.CPU的分别优化.GPU部分的优化.网上有很多优 ...

  3. 在DevExpress程序中使用内置的图标构建美观的界面元素

    在我们一般的程序中,为一般的界面元素添加一定的图标展示,有助于提升界面的整体的美观.结合排版布局,以及固定场景的图标,往往给用户非常好的直观感受:统一.美观.易理解.因此在一般的程序界面中,都尽量在略 ...

  4. RedisRepository封装—Redis发布订阅以及StackExchange.Redis中的使用

    本文版权归博客园和作者本人吴双共同所有,转载请注明本Redis系列分享地址.http://www.cnblogs.com/tdws/tag/NoSql/ Redis Pub/Sub模式 基本介绍 Re ...

  5. MySQL: Table 'mysql.plugin' doesn't exist的解决

    安装解压版MySQL以后,不能启动,日志里面出现了这个错误: MySQL: Table 'mysql.plugin' doesn't exist 这是因为mysql服务启动时候找不到内置数据库&quo ...

  6. JAVA JSP笔记

    一.jsp加载项目中资源图片 如果直接将静态页面写的代码copy到jsp中,你会发现图片都无法加载. 获取代码: String path = request.getContextPath(); Str ...

  7. Java下载文件(流的形式)

    @RequestMapping("download") @ResponseBody public void download(HttpServletResponse respons ...

  8. Nginx配置文件nginx.conf中文详解(转)

    ######Nginx配置文件nginx.conf中文详解##### #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_ ...

  9. 苹果手机不支持click文字 需要添加 cursor:pointer 才能 识别可以点击

    给一个div 绑定一个 click事件,  苹果手机会识别不了,必须添加一个 cursor:pointer 才能 识别可以点击.安卓正常识别.

  10. Android requires compiler compliance level 5.0 or 6.0. Found '1.4' instead的解决办法

    今天在导入工程进Eclipse的时候竟然出错了,控制台输出的是: [2013-02-04 22:17:13 - takepicture] Android requires compiler compl ...