数据对象ajax学习篇9

题记:写这篇博客要主是加深自己对数据对象的认识和总结实现算法时的一些验经和训教,如果有错误请指出,万分感谢。

    ajax工作道理:

    下面这段是来自一个网友的blog:

    Ajax的道理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器取得数据,然后用javascript来操纵DOM而更新页面。这其中最关键的一步就是从服务器取得请求数据。要清晰这个过程和道理,我们必须对 XMLHttpRequest有所了解。

    XMLHttpRequestajax的核心机制,它是在IE5中首先引入的,是一种支持异步请求的技巧。简单的说,也就是javascript可以实时向服务器提出请求和处置响应,而不阻塞用户。达到无刷新的效果。

       所以我们先从XMLHttpRequest讲起,来看看它的工作道理。

       首先,我们先来看看XMLHttpRequest这个对象的属性。

     它的属性有:

     onreadystatechange  每次状态转变所触发事件的事件处置程序。

     responseText     从服务器进程返回数据的字符串情势。

     responseXML    从服务器进程返回的DOM兼容的文档数据对象。

      status           从服务器返回的数字代码,比如常见的404(未找到)和200(已就绪)

     status Text       随同状态码的字符串信息

     readyState       对象状态值

    0 (未初始化) 对象已建立,但是尚未初始化(尚未调用open方法)

    1 (初始化) 对象已建立,尚未调用send方法

    2 (发送数据) send方法已调用,但是当前的状态及http头未知

    3 (数据传送中) 已接收部份数据,因为响应及http头不全,这时通过responseBodyresponseText获取部份数据会出现错误,

    4 (实现) 数据接收终了,此时可以通过通过responseXmlresponseText获取完全的回应数据

     

     

    看了下面的一段话我们知道了,ajax的道理。

    所以对于ajax开发步调应该是:

    1.     创立对象

    2.       打开服务器

    3.       发送数据

    4.       接受服务器的数据相应。

     

     

    下面做一个简单例子用get方法的实现和servlet的一个交互:这个是一个index.jsp

    <%@ page language="java"import="java.util.*"pageEncoding="UTF-8"%>

    <%

    String path = request.getContextPath();

    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

    %>

    <!DOCTYPEHTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

    <html>

      <head>

        <basehref="<%=basePath%>">

       

        <title>My JSP 'index.jsp' starting page</title>

       

        <scripttype="text/javascript"src="js/fish.js"></script>

      </head>

     

      <body>

       <inputid="mybutton"type="button"value="加载数据"/>

      </body>

    </html>

     

     

    第二个是fish.js

    window.onload = function() {

         

          function createXMLHttpRequest() {

              var xmlhttp=null;//请求对象   

    每日一道理
即使青春是一枝娇艳的花,但我明白,一枝独放永远不是春天,春天该是万紫千红的世界。 即使青春是一株大地伟岸的树,但我明白,一株独秀永远不是挺拔,成行成排的林木,才是遮风挡沙的绿色长城。即使青春是一叶大海孤高的帆,但我明白,一叶孤帆很难远航,千帆竞发才是大海的壮观。

            try {//IE浏览器中创立此对象

                xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");

            } catch (e) {

                try {//IE浏览器中创立此对象

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

                } catch (e) {

                    try {

                        //   Firefox, Chrome, Opera, Safari浏览器中创立此对象

                        xmlhttp = new XMLHttpRequest();

                        if (xmlhttp.overrideMimeType) {

                            xmlhttp.overrideMimeType("text/xml");

                        }

                    } catch (e) { alert("浏览器不支持xmlHttpRequest!");        }

                }

            }

            return xmlhttp;

        }

         

       

        document.getElementById("mybutton").onclick =function() {

           

            //得到xmlhttprequest对象

            var xmlreq=createXMLHttpRequest();

            xmlreq.onreadystatechange=function(){//每次状态转变都市调用这个函数

                alert(xmlreq.readyState);

                alert(xmlreq.status);//如果返回200就说明请求成功了。

           

            }

           

            //打开与服务器的连接

            xmlreq.open("get","servlet/MyServlet",true);//在第二个参数后可以随着一些数据的。

            //发送数据

           

            xmlreq.send(null);//如果是get方法那么必须是null

       

       

        }

    }

    3servlet代码

    package com.fish;

    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;

    publicclassMyServlet extends HttpServlet {

        publicvoid doGet(HttpServletRequest request, HttpServletResponse response)

                throws ServletException, IOException {

       

            PrintWriter out = response.getWriter();

            System.out.println("**************");

            // String a= request.getParameter("fish");

            // System.out.println(a);

            //

        }

    }

     

    5.       这个是servletxml的配置

    <?xmlversion="1.0"encoding="UTF-8"?>

    <web-appversion="2.5"

    xmlns="http://java.sun.com/xml/ns/javaee"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

      <display-name></display-name>

      <servlet>

       

        <servlet-name>MyServlet</servlet-name>

        <servlet-class>com.fish.MyServlet</servlet-class>

      </servlet>

      <servlet-mapping>

        <servlet-name>MyServlet</servlet-name>

        <url-pattern>/servlet/MyServlet</url-pattern>

      </servlet-mapping>

      <welcome-file-list>

        <welcome-file>index.jsp</welcome-file>

      </welcome-file-list>

    </web-app>

     

     

文章结束给大家分享下程序员的一些笑话语录: IT业众生相
第一级:神人,天资过人而又是技术狂热者同时还拥有过人的商业头脑,高瞻远瞩,技术过人,大器也。如丁磊,求伯君。
第二级:高人,有天赋,技术过人但没有过人的商业头脑,通常此类人不是顶尖黑客就是技术总监之流。
第三级:牛人,技术精湛,熟悉行业知识,敢于创新,有自己的公司和软件产品。
第四级:工头,技术精湛,有领导团队的能力,此类人大公司项目经理居多。
第五级:技术工人,技术精湛,熟悉行业知识但领导能力欠加,此类人大多为系分人员或资深程序员,基本上桀骜不逊,自视清高,不愿于一般技术人员为伍,在论坛上基本以高手面目出现。
第六级:熟练工人,技术有广度无深度,喜欢钻研但浅尝辄止。此类人大多为老程序员,其中一部分喜欢利用工具去查找网上有漏洞的服务器,干点坏事以获取成绩感。如果心情好,在论坛上他们会回答菜鸟的大部分问题。此级别为软件业苦力的重要组成部分。
第七级:工人,某些技术较熟练但缺乏深度和广度,此类人大多为程序员级别,经常在论坛上提问偶尔也回答菜鸟的问题。为软件产业苦力的主要组成部分。
第八级:菜鸟,入门时间不长,在论坛上会反复提问很初级的问题,有一种唐僧的精神。虽然招人烦但基本很可爱。只要认真钻研,一两年后就能升级到上一层。
第九级:大忽悠,利用中国教育的弊病,顶着一顶高学历的帽子,在小公司里混个软件部经理,设计不行,代码不行,只会胡乱支配下属,拍领导马屁,在领导面前胡吹海侃,把自己打扮成技术高手的模样。把勾心斗角的办公室文化引入技术部门,实在龌龊!
第十级:驴或傻X,会写SELECT语句就说自己精通ORALCE,连寄存器有几种都不知道就说自己懂汇编,建议全部送到日本当IT产业工人,挣了日本人的钱还严重打击日本的软件业!

--------------------------------- 原创文章 By
数据和对象
---------------------------------

原文地址:https://www.cnblogs.com/xinyuyuanm/p/3150437.html