Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 479|回复: 0

[AJAX学习]让你彻底抛弃通过页面刷新获取服务器端数据

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-12 23:49:14 | 显示全部楼层 |阅读模式

              Ajax(Asynchronous javaScript and XML)是一个结合了Java技术、XML、以及JavaScript的web开发模式,可以让你构建基于Java技术的Web应用。这是一种很简单的模式,但是却解决了web开发中经常碰到的页面重载问题(即不需要页面刷新便可轻易实现服务器端数据的获取),很实用,推荐给大家。
               本例中的应用是基于java的Servlet技术(也可以很容易的扩展到bean中实现),共需要创建三个文件: index.jsp    AjaxUse.java    web.xml
              本文是通过一个Button按钮来触发客户端的sendData()方法向服务器发送数据,如果需要实现过一个固定时间默认向服务器发送数据,可以在javascript代码中加入定时器:setInterval("sendData()",1000),定时器单位为毫秒.
        文中代码已测试通过,希望对各位有用
       
      
       
      
    ---------------index.jsp文件代码 <%@ page contentType="text/HTML;charset=GB2312"%>
    <html>
    <title>Ajax应用</title>
    <head>
    <script language="javascript">
    var req;
    function sendData() {
        var idField = document.getElementById("userid");
        var url = "servlet/AjaxUse?id=" + escape(idField.value);
        waitMessage();
        if (window.XMLHttpRequest) {
            req = new XMLHttpRequest();
        } else if (window.ActiveXObject) {
            req = new ActiveXObject("Microsoft.XMLHTTP");
        }
        req.open("GET", url, true);
    //open包含5个参数:(http-method, url, async, userID, password) 前三个是必要的,后两个是可选的
    //----http-method: HTTP的通信方式,比如GET或是 POST
    //----url: 接收XML数据的服务器的URL地址。通常在URL中要指明 ASP或CGI程序
    //----async: 布尔标识.如是异步通信方式(true),客户机不等待服务器的响应;如是同步方式(false),客户机就要等到服务器返回消息后才去执行其他操作
    //----userID: 用户ID,用于服务器身份验证
    //----password 用户密码,用于服务器身份验证
        req.onreadystatechange = callback;
    //如用POST方法,需添加如下内容
    //----req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    //----req.send("id=" + escape(idField.value));
        req.send(null);
    }
    function callback() {
         if (req.readyState == 4) {
    //XMLHTTP对象中的readyState属性能够反映出服务器在处理请求时的进展状况
    //----0 Response对象已经创建,但XML文档上载过程尚未结束
    //----1 XML文档已经装载完毕
    //----2 XML文档已经装载完毕,正在处理中
    //----3 部分XML文档已经解析
    //----4 文档已经解析完毕,客户端可以接受返回消息
             if (req.status == 200) {
    //检查是否成功接收了服务器响应
                  parseMessage();
             }
         }
    }
    function parseMessage() {
        var message = req.responseXML.getElementsByTagName("data");
        var str=new Array();
        if(message.length>=1){
            for(var i=0;i<message.length;i++){
               str=message.firstChild.data;
            }
        }else{
           str[0]=message.length;
        }
         mdiv = document.getElementById("userIdMessage");
         mdiv.innerHTML = "<div>"+str[0]+"</div>";
    }
    function waitMessage() {
         mdiv = document.getElementById("userIdMessage");
         mdiv.innerHTML = "<div>请稍后----</div>";
    }
    </script>
    </head>
    <body bgcolor=silver>
    <font size=2>输入一个数字,通过ajax将会在页面静态获取服务器端响应:</font>
    <input type="text" name="id" id="userid" size="20">
    <input type="button" value="发送" onclick="sendData()">
    <div id="userIdMessage"></div>
    </body>
    </html> ---------------AjaxUse.java  文件代码 package com.servlet; import javax.servlet.*;
    import javax.servlet.http.*; public class AjaxUse extends HttpServlet {
         private ServletContext context;
         public void init(ServletConfig config) throws ServletException {
             this.context = config.getServletContext();
         }
         public void doGet(HttpServletRequest request, HttpServletResponse  response)
             throws IOException, ServletException {
             String targetId = request.getParameter("id");
             StringBuffer sb=new StringBuffer("<message>");
             response.setContentType("text/xml");
             response.setHeader("Cache-Control", "no-cache");
             sb.append("<data>"+targetId+"</data><data>ShenYang</data>");
             sb.append("</message>");
             PrintWriter out=response.getWriter();
             out.write(sb.toString());
             out.close();
              }
         }
    } ---------------web.xml  文件代码 <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
    <web-app>
       <servlet>
         <servlet-name>AjaxUse</servlet-name>
         <servlet-class>com.servlet.AjaxUse</servlet-class>
       </servlet>
        <servlet-mapping>
             <servlet-name>AjaxUse</servlet-name>
             <url-pattern>/servlet/AjaxUse</url-pattern>
         </servlet-mapping>
    </web-app> 如图:

      
      
       
       

         
       

         
       
      
      
      

      










    源码下载:http://file.javaxxz.com/2014/10/12/234914156.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-22 14:35 , Processed in 0.652128 second(s), 50 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表