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 閱讀(84) | 評論 (0)編輯 收藏
           
               摘要:  每學習一個框架,我們都免不了要學習一些關于的配置文件,struts2也不例外,下面我就講一下struts2中幾個主要的配置文件這個文件是struts2框架默認加載的配置文件。它定義struts2一些核心的bean和攔截器          每學習一個框架,我們都免不了要學習一些關于的配置文件,struts...  閱讀全文
          posted @ 2010-02-08 13:39 sai7752 閱讀(424) | 評論 (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| 編輯 收藏
          僅列出標題  下一頁
           
          主站蜘蛛池模板: 凉城县| 万载县| 嘉鱼县| 分宜县| 云南省| 津市市| 云和县| 同心县| 昌乐县| 翁牛特旗| 西昌市| 宿松县| 平阳县| 芜湖县| 广宁县| 托里县| 同德县| 常宁市| 华容县| 本溪市| 玛沁县| 鄱阳县| 河北区| 兴安县| 东宁县| 盐池县| 兴化市| 迭部县| 永定县| 共和县| 长汀县| 郁南县| 霍州市| 汨罗市| 永宁县| 西宁市| 宁蒗| 宝应县| 南阳市| 华亭县| 泾阳县|