O(∩_∩)O
(*@ο@*)

2010年2月9日

2010年2月8日

http://www.yuanma.org/data/2009/1206/article_4065.htm
http://www.yuanma.org/data/2007/0322/article_2443.htm

Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面。这其中最关键的一步就是从服务器获得请求数据。要清楚这个过程和原理,我们必须对 XMLHttpRequest有所了解。
XMLHttpRequest是ajax的核心机制,它是在IE5中首先引入的,是一种支持异步请求的技术。简单的说,也就是javascript可以及时向服务器提出请求和处理响应,而不阻塞用户。达到无刷新的效果。
所以我们先从XMLHttpRequest讲起,来看看它的工作原理。
首先,我们先来看看XMLHttpRequest这个对象的属性。
它的属性有:
onreadystatechange 每次状态改变所触发事件的事件处理程序。
responseText     从服务器进程返回数据的字符串形式。
responseXML    从服务器进程返回的DOM兼容的文档数据对象。
status           从服务器返回的数字代码,比如常见的404(未找到)和200(已就绪)
status Text       伴随状态码的字符串信息
readyState       对象状态值
0 (未初始化) 对象已建立,但是尚未初始化(尚未调用open方法)
1 (初始化) 对象已建立,尚未调用send方法
2 (发送数据) send方法已调用,但是当前的状态及http头未知
3 (数据传送中) 已接收部分数据,因为响应及http头不全,这时通过responseBody和responseText获取部分数据会出现错误,
4 (完成) 数据接收完毕,此时可以通过通过responseXml和responseText获取完整的回应数据

但是,由于各浏览器之间存在差异,所以创建一个XMLHttpRequest对象可能需要不同的方法。这个差异主要体现在IE和其它浏览器之间。下面是一个比较标准的创建XMLHttpRequest对象的方法。

  function CreateXmlHttp()
   {
  
   //非IE浏览器创建XmlHttpRequest对象
    if(window.XmlHttpRequest)
    {
     xmlhttp=new XmlHttpRequest();
    }
    //IE浏览器创建XmlHttpRequest对象
     if(window.ActiveXObject)
    {
    try
    {
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");    
    }
    catch(e)
    {
    try{
     xmlhttp=new ActiveXObject("msxml2.XMLHTTP");
     }
     catch(ex){}
    }
    }
   }
function Ustbwuyi()
   {
    var data=document.getElementById("username").value;  
        CreateXmlHttp();
        if(!xmlhttp)
        {
         alert("创建xmlhttp对象异常!");
         return false;
        }      
        xmlhttp.open("POST",url,false);
        xmlhttp.onreadystatechange=function()
        {  
         if(xmlhttp.readyState==4)
           {
           document.getElementById("user1").innerHTML="数据正在加载...";
             if(xmlhttp.status==200)
             {
              document.write(xmlhttp.responseText);
             }     
           }
         }
        xmlhttp.send();
  
   }
如上所示,函数首先检查XMLHttpRequest的整体状态并且保证它已经完成(readyStatus=4),即数据已经发送完毕。然后根据服务器的设定询问请求状态,如果一切已经就绪(status=200),那么就执行下面需要的操作。
对于XmlHttpRequest的两个方法,open和send,其中open方法指定了:
a、向服务器提交数据的类型,即post还是get。
b、请求的url地址和传递的参数。
c、传输方式,false为同步,true为异步。默认为true。如果是异步通信方式(true),客户机就不等待服务器的响应;如果是同步方式(false),客户机就要等到服务器返回消息后才去执行其他操作。我们需要根据实际需要来指定同步方式,在某些页面中,可能会发出多个请求,甚至是有组织有计划有队形大规模的高强度的request,而后一个是会覆盖前一个的,这个时候当然要指定同步方式。
    Send方法用来发送请求。

知道了XMLHttpRequest的工作流程,我们可以看出,XMLHttpRequest是完全用来向服务器发出一个请求的,它的作用也局限于此,但它的作用是整个ajax实现的关键,因为ajax无非是两个过程,发出请求和响应请求。并且它完全是一种客户端的技术。而XMLHttpRequest正是处理了服务器端和客户端通信的问题所以才会如此的重要。
现在,我们对ajax的原理大概可以有一个了解了。我们可以把服务器端看成一个数据接口,它返回的是一个纯文本流,当然,这个文本流可以是XML格式,可以是Html,可以是Javascript代码,也可以只是一个字符串。这时候,XMLHttpRequest向服务器端请求这个页面,服务器端将文本的结果写入页面,这和普通的web开发流程是一样的,不同的是,客户端在异步获取这个结果后,不是直接显示在页面,而是先由javascript来处理,然后再显示在页面。至于现在流行的很多ajax控件,比如magicajax等,可以返回DataSet等其它数据类型,只是将这个过程封装了的结果,本质上他们并没有什么太大的区别。

posted @ 2010-02-08 14:28 sai7752 阅读(38) | 评论 (0)编辑 收藏
 
     摘要:  每学习一个框架,我们都免不了要学习一些关于的配置文件,struts2也不例外,下面我就讲一下struts2中几个主要的配置文件这个文件是struts2框架默认加载的配置文件。它定义struts2一些核心的bean和拦截器          每学习一个框架,我们都免不了要学习一些关于的配置文件,struts...  阅读全文
posted @ 2010-02-08 13:39 sai7752 阅读(350) | 评论 (0)编辑 收藏
 

前言 

       JBOSS 推出 3.0.4 版本其实已经很久很久啦,可是呢,网上关于它的介绍就少得可怜,而且仅有的几篇介绍都并不完全正确,很多甚至是直接拷贝 jboss2.4.4 的相关内容。那些抄袭者没有想到,从 jboss2.4.4  jboss3.0.4 之间有很大的飞跃,甚至目录结构也不相同了,相关配置更不用多说,他们那些拷贝来的作品根本不能正确指导人们学习 jboss  

       为了学习 jboss ,我想大多数人可能都要从 http://www.jboss.org 那里下载其本身的文档,如 3.x 版本就有文档 JBoss.3.0QuickStart.Draft3.pdf 来进行入门指导。但是令人万万没有想到的是, JBoss.3.0QuickStart.Draft3.pdf 文档中甚至也有错误的地方,完全按照它的指引,大家将会走弯路的。 

       因此,结合我最近学习 jboss3.0.4 的经验,根据实际应用情况,总结出 jboss3.0.4 配置及使用初步文档,供大家参考和讨论。 

前提 

       首先,你必须安装了 JDK ,版本为 1.3 以上,我使用的是 1.4 版本。并在 CLASSPATH 中设置 JAVA_HOME 环境变量为 JDK 安装目录。确保在你的机器上可以运行 JAVA 程序。 

安装及运行 jboss3.0.4 

        jboss 自己的网站 http://www.jboss.org 下载 jboss3.0.4 ,有 jboss-3.0.4.zip  jboss-3.0.4_tomcat-4.1.12.zip 。后者是 jboss  tomcat 整合到一起的版本,这里主要介绍前者,既单独的 jboss3.0.4  

       jboss 的运行很简单。将 jboss-3.0.4.zip 解压到本地硬盘的一个目录中。会有以下几个目录生成: 

bin 

放置 jboss 启动和停止的可执行脚本文件 

docs 

放置 jboss 的例子、测试脚本和各种脚本配置文件的 DTD 

lib 

放置 jboss 所需要的部分 jar 包文件 

client 

放置 EJB 客户端运行时所需要的 jar  

server 

放置各启动类型的服务器端 EJB 配置所需要的文件等。 

Jboss3.0.4 有三种启动类型,分别为 all, default, minimal 。如在 windows 平台下启动 jboss ,可直接启动 bin 目录下的 run.bat 既可。此时默认为以 default 形式启动,如需其它启动方式,则需要参数设置,如想以 all 模式启动,则运行 run.bat –c all 命令。至于三种启动模式的区别,无非就是启动的服务多少不同,具体请参照 JBoss.3.0QuickStart.Draft3.pdf 文档。该文档也有设置 jboss 启动为 windows 服务的一段,也可以参照,不过我按照它的做法尝试了一下,发现居然 jboss 的服务会占据 90% 以上的 CPU 资源  

       正如大家所看到的, jboss 启动就这么简单,而且也不需要按照自己的机器额外进行其他配置。到这一步,大家都很爽吧。 OK ,让我们继续 

查看 JBOSS 端口 

这本来不应单独成为一章,但是,网上各资料和 JBoss.3.0QuickStart.Draft3.pdf 中都在这一部分对使用者进行了误导,我想在这里我有必要进行澄清。 

启动 jboss 后,我们可以查看 8080 端口,在浏览器地址栏中键入 http://localhost:8080 ,我们会发现一个错误页面,内容为“ HTTP ERROR: 404 / Not Found  RequestURI=/ ”这是正常的,因为你根本就没有页面可以显示。 

在按照网上资料和 JBoss.3.0QuickStart.Draft3.pdf 的要求查看 8082 端口时,我们就会发现,根本和资料中讲述不一致了。 JBoss.3.0QuickStart.Draft3.pdf 中的原文是这样的:“ To check if JBoss is running please open a browser and enter http://localhost:8082 which will list all JBoss components running. ”但是,我们将会出现一个错误页面!并不是象它所说的会列出所有运行的 JBOSS 组件。经过查找,发现其实应该是 http://localhost:8080/jmx-console 。此点一定注意,否则会打击初学者学习 jboss 的兴趣的。我们通过这个页面进行对 JBOSS 的各服务的配置和管理。 

我们再查看 http://localhost:8083 会出现一个没有错误的空白页,正常,应该是这样。 

我们再查看 http://localhost:1099 会出现一大堆乱字符,当然,里面包含了你的 IP 地址等等类似的信息。 1099  jnp 协议监听名字服务的缺省端口, RMI 的缺省端口也是一样的。在 JNDI 中,我们需要用到此端口。 

OK ,基本端口信息就这些。

posted @ 2010-02-08 11:34 sai7752| 编辑 收藏
仅列出标题  下一页