`
wjheye
  • 浏览: 82054 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类
最新评论

AJAX+Servlet实现客户端无刷新请求服务器实践

    博客分类:
  • Ajax
阅读更多
最近需要做一个在网页中要不断检测服务器端数据程序,当然最简单的方法是在html页面头部加以下标签
<META http-equiv=V="REFRESH" content="5;URL=本页面url">
实现将网页设成每隔5秒钟将自身页面刷新一次;从而检测或加载服务器端数据.
但该方法有一个不雅的问题是,页面要不停地闪烁刷新,而且在每次刷新时都会发出windows点击链接的声音.如果时间久了,没有人能忍受的了吧.
  现在找到了AJAX(异步 JavaScript 和 XML)这个技术,他可以帮我们解决客户端无需提交页面即可发送对服务器的请求,这些均通过客户端javascript实现,以下为实现代码:
第一部分:
<body onload="checknew()">
页面加载时即开始调用脚本checknew.
第二部分:页面脚本
//页面声明对象
var http_request; 

function checknew()
{
        http_request = false;
        //下面需要建立一个XMLHttpRequest对象,用它进行服务器请求,针对不同浏览器建立方法不同
        if (window.XMLHttpRequest) 
        { // Mozilla, Safari,...
            http_request = new XMLHttpRequest();
            if (http_request.overrideMimeType) 
            {
                http_request.overrideMimeType('text/xml');
            }
        } 
        else if (window.ActiveXObject) 
        { // IE
            try             {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
            }
            catch (e)
            {
                try 
                {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } 
                catch (e) {}
            }
        }
        
        if (!http_request) {
            alert('出现错误,不能建立一个XMLHTTP实例!');
            return false;
        }
        //funccallback为请求返回后要调用的javascript方法
        http_request.onreadystatechange = funccallback;
        //该请求用get方式发送至url为/servlet/CheckServlet的Servlet,url可以带参数或数据方式同一般url传值,Servlet请看后面代码
        http_request.open('GET',url, true);
        http_request.send(null);
        //如果要使用HTTP POST方式,必须要对 XMLHttpRequest 对象设置一个 Content-Type 头,使用以下语句(url中也可包含参数): 
       //http_request.open('POST',url, true);
       //http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
       //http_request.send("这里为传的参数");
       //每隔5秒循环一次服务器请求
        setTimeout('checknew()',5000);
}
    //请求返回后调用方法
    function funccallback() 
    {
        //检测请求状态http_request.readyState有以下几种状态 0 (未初始化) 1 (正在装载) 2 (装载完毕) 3 (交互中) 4 (完成) 
        if (http_request.readyState == 4) 
        {
//XMLHttpRequest的status属性被测试用来确定请求是否成功完成。当处理简单的GET与POST请求,你可以认为只要不是200(OK)的状态就表示发生了错误。
            if (http_request.status == 200) 
            {
                //http_request.responseText为服务器返回的文本内容,可自行做各种处理
                 alert(http_request.responseText);
            } 
            else 
            {
                alert('对不起,请求出现错误!');
            }
        }
    }

//第三部分 ,java Servlet的代码:
首先在web.xml中配置web Servlet,如下:
 
<servlet>
    <servlet-name>CheckServlet</servlet-name>
    <servlet-class>com.view.CheckServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>CheckServlet</servlet-name>
    <url-pattern>/servlet/CheckServlet</url-pattern>
  </servlet-mapping>

下面为Servlet实例:
package com.view;
//导入包略去,可在ide中自动导入(以下代码包含部分ide自动生成代码,可略去)
public class CheckServlet extends HttpServlet
{
 public void destroy()
 {
  super.destroy(); 
// Just puts "destroy" string in log
  // Put your code here
 }
 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException
 {
  //用get方式发送请求,因此在此处理,
  response.setContentType("text/xml");
  response.setHeader("Cache-Control", "no-cache");
  String ids="hello,China!";
  //将ids返回给客户端
  response.getWriter().write(ids);
 }
 public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException
 {
  //如果用post方式请求,则在此处理
 }
 public void init() throws ServletException
 {
  // Put your code here
 }


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/fenglibing/archive/2006/04/27/680457.aspx
分享到:
评论

相关推荐

    基本于J2EE的Ajax宝典.rar

    17.3 实现服务器处理类 35 17.4 实现客户端调用 40 17.4.1 暴露 Java对象 40 17.4.2 处理用户登录 41 17.4.3 周期性地获得用户相片列表 44 17.4.4 处理用户注册 45 17.4.5 处理上传 47 17.5 客户端 JSP 页面 ...

    在Ajax应用程序中实现数据交换

    Ajax核心API(即所谓的XMLHttpRequest)的唯一用途就是发送HTTP请求,在Web浏览器与服务器之间进行数据交换。Web页面中运行的JavaScript代码,可以使用XMLHttpRequest将该请求参数提交至服务器端脚本,例如Servlet或...

    反向Ajax 30分钟快速掌握

    与传统的MVC模型请求必须从客户端发起由服务器响应相比,使用反向Ajax能够模拟服务器端主动向客户端推送事件从而提高用户体验。本文将分两个部分讨论反向Ajax技术,包括:Comet和WebSocket。文章旨在演示如何实现...

    JavaScript完全自学宝典 源代码

    \testJson\src\jsonExercise\JSONServlet.java 处理页面请求的Servlet。 \testJson\src\jsonExercise\ComdtyBean.java 商品信息的POJO。 \testJson\WebRoot\orderInfo.jsp 录入商品信息的JSP页面。 第21...

    JAVA上百实例源码以及开源项目

     当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...

    java源码包3

     当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...

    基于J2EE框架的个人博客系统项目毕业设计论...

    2、 Ajax我们主要应用就是xmlhttprequest,回调函数实现局部刷新达道数据更新! 4.2需求分析 Blog网站主要是实现注册用户登录、管理相关信息、博文及相关评论、查看留言、友情链接、及图片的上传和图像的播放而为...

    整理后java开发全套达内学习笔记(含练习)

    implements (关键字) 实现 ['implimәnt] import (关键字) 引入(进口,输入) Info n.信息 (information [,infә'meiʃәn] ) Inheritance [java] 继承 [in'heritәns] (遗传,遗产) initialize 预置 初始化 [i'ni...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    2、 Ajax我们主要应用就是xmlhttprequest,回调函数实现局部刷新达道数据更新! 4.2需求分析 Blog网站主要是实现注册用户登录、管理相关信息、博文及相关评论、查看留言、友情链接、及图片的上传和图像的播放而为...

    千方百计笔试题大全

    155、对一个JSP页,如果多个客户端同时请求它,同步可能吗? 37 156、在jsp:useBean语法中使用beanName有何好处? 37 157、当我使用时,在浏览器的地址栏没有改变? 37 158、如何转换JSP 0.9版本的文件到JSP1.1? 37...

    java面试宝典

    155、对一个JSP页,如果多个客户端同时请求它,同步可能吗? 37 156、在jsp:useBean语法中使用beanName有何好处? 37 157、当我使用时,在浏览器的地址栏没有改变? 37 158、如何转换JSP 0.9版本的文件到JSP1.1? 37 ...

    java源码包---java 源码 大量 实例

     当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...

    JAVA上百实例源码以及开源项目源代码

     当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...

    java源码包2

     当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...

    java源码包4

     当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...

    spring web flow demo

    HTTP 协议本身是无状态的,服务器和客户端要实现会话的管理,只 能借助于一些辅助的手段,如在协议的数据包中加一些隐藏的记号,等等。 session 范围适合存 放本次会话需要保留的数据。 • application 范围的对象...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    21个目标文件 摘要:JAVA源码,媒体网络,山寨QQ,Java聊天程序 Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构, 当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    21个目标文件 摘要:JAVA源码,媒体网络,山寨QQ,Java聊天程序 Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构, 当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持...

    GoodProject Maven Webapp.zip

    3:表示层:主要对用户的请求接受,以及数据的返回,为客户端提供应用程序的访问。 功能技术亮点:1,验证码 验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”...

Global site tag (gtag.js) - Google Analytics