因為專注,所以專業

          我的Java Blog

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            21 隨筆 :: 30 文章 :: 6 評論 :: 0 Trackbacks

          #

          使用Ajax可以開發出基于瀏覽器的具有高用戶交互性和幾乎不易覺察到延遲的web應用。實時的動態數據比如新聞標題、證券報價和拍賣行情都需要盡快地發送給用戶。然而,AJAX仍然受限于web請求/響應架構的弱點,使得服務器不能推送實時動態的web數據。

          Delft科技大學的EnginBozdag、AliMesbah和ArievanDeursen一起討論了下面這些可以實現基于web的實時事件通知的方法:

          1.HTTP拉取方式:在這種傳統的方法中,客戶端以用戶可定義的時間間隔去檢查服務器上的最新數據。這種拉取方式的頻率要足夠高才能保證很高的數據精確度,但高頻率可能會導致多余的檢查,從而導致較高的網絡流量。而另一方面,低頻率則會導致錯過更新的數據。理想地,拉取的時間間隔應該等于服務器狀態改變的速度。

          2.HTTP流:這種方法由存在于不間斷的HTTP連接響應中或某個XMLHttpRequest連接中的服務器數據流所組成。

          3.反轉AJAX:服務流應用到AJAX,就是所謂的反轉AJAX或者COMET。它使得服務器在某事件發生時可以發送消息給客戶端,而不需要客戶端顯式的請求。目標在于達到狀態變化的實時更新。COMET使用了HTTP/1.1中的持續連接的特性。通過HTTP/1.1,除非另作說明,服務器和瀏覽器之間的TCP連接會一直保持連接狀態,直到其中一方發送了一條明顯的“關閉連接”的消息,或者有超時以及網絡錯誤發生。

          4.長時間輪詢:也就是所謂的異步輪詢,這種方式是純服務器端推送方式和客戶端拉取方式的混合。它是基于BAYEUX協議的。這個協議遵循基于主題的發布——訂閱機制。在訂閱了某個頻道后,客戶端和服務器間的連接會保持打開狀態,并保持一段事先定義好的時間。如果服務器端沒有事件發生,而發生了超時,服務器端就會請求客戶端進行異步重新連接。如果有事件發生,服務器端會發送數據到客戶端,然后客戶端重新連接。
          posted @ 2009-04-25 13:13 kevin.zhan 閱讀(266) | 評論 (0)編輯 收藏

          獲取一組radio被選中項的值
          var item = $('input[@name=items][@checked]').val();
          獲取select被選中項的文本
          var item = $("select[@name=items] option[@selected]").text();
          select下拉框的第二個元素為當前選中值
          $('#select_id')[0].selectedIndex = 1;
          radio單選組的第二個元素為當前選中值
          $('input[@name=items]').get(1).checked = true;

          獲取值:

          文本框,文本區域:$("#txt").attr("value");
          多選框checkbox:$("#checkbox_id").attr("value");
          單選組radio:   $("input[@type=radio][@checked]").val();
          下拉框select: $('#sel').val();

          控制表單元素:
          文本框,文本區域:$("#txt").attr("value",'');//清空內容
                           $("#txt").attr("value",'11');//填充內容

          多選框checkbox: $("#chk1").attr("checked",'');//不打勾
                           $("#chk2").attr("checked",true);//打勾
                           if($("#chk1").attr('checked')==undefined) //判斷是否已經打勾

          單選組radio:    $("input[@type=radio]").attr("checked",'2');//設置value=2的項目為當前選中項
          下拉框select:   $("#sel").attr("value",'-sel3');//設置value=-sel3的項目為當前選中項
                          $("<option value='1'>1111</option><option value='2'>2222</option>").appendTo("#sel")//添加下拉框的option
                          $("#sel").empty();//清空下拉框

          posted @ 2009-04-22 11:38 kevin.zhan 閱讀(878) | 評論 (0)編輯 收藏

          1.安裝apache的問題
          2.安裝PHP的問題

          3.安裝sugarcrm時的問題
            在安裝向導的第三步,輸入數據庫的名字和密碼時遇到ERROR 1251的錯誤。這是因為用戶權限不足導致的,解決辦法是:
          mysql> SET PASSWORD FOR
          -> 'some_user'@'some_host' = OLD_PASSWORD('newpwd');

          mysql> FLUSH PRIVILEGES;

          posted @ 2009-03-26 01:01 kevin.zhan 閱讀(261) | 評論 (0)編輯 收藏

          Code:
          Ext.onReady(function() {
              
          var data = [
                  ['
          001', '張三', 'zhangsan', '男', 24],
                  ['
          002', '李四', 'lisi', '男', 23],
                  ['
          003', '劉秀', 'liusiu', '女', 20]
              ];
              
          var store = new Ext.data.SimpleStore ({
                 fields: [
                         {name: 'id'},
                         {name: 'chineseName'},
                         {name: 'englishName'},
                         {name: 'sex'},
                         {name: 'age', type: '
          int'}
                    ]
              });
              store.loadData(data);
              
              
          var grid = new Ext.grid.GridPanel({
                  store: store,
                  columns: [
                      {header: 'ID號', width: 
          80, sortable: true, dataIndex: 'id'},
                      {header: '中文名', width: 
          100, sortable: true, dataIndex: 'chineseName'},
                      {header: '英文名', width: 
          100, sortable: true, dataIndex: 'englishName'},
                      {header: '性別', width: 
          100, sortable: true, dataIndex: 'sex'},
                      {header: '年齡', width: 
          100, sortable: true, dataIndex: 'age'}
                  ],
                  stripeRows: 
          true,
                  autoExpandColumn: 'id',
                  height:
          150,
                  width:
          480,
                  title:'用戶列表'
              });
              grid.render('div_grid');
              grid.getSelectionModel().selectFirstRow();
          });

          我在Ext.grid.GridPanel里加了autoExpandColumn屬性,但是又沒有設置id給它,如:
          {header: 'ID號', width: 80, sortable: true, dataIndex: 'id'}
          應該改成為:
          {id: 'id', header: 'ID號', width: 80, sortable: true, dataIndex: 'id'},
          這樣就可以解決問題了。

          posted @ 2008-11-18 23:12 kevin.zhan 閱讀(167) | 評論 (0)編輯 收藏

          <s:if test="citys.size() > 0">
              <s:select list="citys" name="cityId" listKey="id" listValue="name"></s:select>
          </s:if>
          可見,在struts的標簽里可以直接使用request的變量。
          其中citys是在Action定義的變量。

          posted @ 2008-09-16 17:29 kevin.zhan 閱讀(66) | 評論 (0)編輯 收藏

          成功的前提:機遇+準備(例子:史泰龍遭遇1375次挫折。)

          設定目標:
          1.我要成為什么樣的人?
          2.我要得到什么?
          3.我想要得到什么結果。

          posted @ 2008-09-08 23:37 kevin.zhan 閱讀(109) | 評論 (0)編輯 收藏

          遇到一個不知道如何解決的問題。我寫的一個發送郵件的程序,單元測試通過了,接收方能正常收到發送的郵件,可是我在頁面調用的時候,接收方只是收到郵件,但是主題和正文都是空的。說明一下,我在服務方法那加了斷點,查看到值已經傳過去了,也設進Message了。下面是我的代碼。
          public void sendMail(String[] mailDetail) {
                  username 
          = email.split("@")[0];//email是成員變量,可以把它的值當作test@test.com
                  properties 
          = System.getProperties();
                  String mailServerName 
          = email.split("@")[1].split("\\.")[0];
                  setGmailProperties();//暫時只是讓它以gmail為服務器
                  Session session 
          = Session.getDefaultInstance(properties,
                          
          new Authenticator() {
                              
          protected PasswordAuthentication getPasswordAuthentication() {
                                  
          return new PasswordAuthentication(username, password);
                              }
                          });
                  message 
          = new MimeMessage(session);

                  
          try {
                      message.setFrom(
          new InternetAddress(email));
                      message.setRecipient(Message.RecipientType.TO, 
          new InternetAddress(
                              mailDetail[
          0]));
                      message.setSubject(mailDetail[
          1]);
                      message.setText(mailDetail[
          2]);
                      message.setSentDate(
          new Date());

                      Transport.send(message);//在這里我加了斷點,查看了所有的變量都有值。
                  } 
          catch (AddressException e) {
                      e.printStackTrace();
                  } 
          catch (MessagingException e) {
                      e.printStackTrace();
                  }
                  System.out.println(
          "郵件發送成功");
              }
              private void setGmailProperties() {
                  properties.setProperty("mail.smtp.host", "smtp.gmail.com");
                  properties.setProperty("mail.smtp.socketFactory.class",
                          "javax.net.ssl.SSLSocketFactory");
                  properties.setProperty("mail.smtp.socketFactory.fallback", "false");
                  properties.setProperty("mail.smtp.port", "465");
                  properties.setProperty("mail.smtp.socketFactory.port", "465");
                  properties.setProperty("mail.smtp.auth", "true");
              }


          posted @ 2008-07-11 10:50 kevin.zhan 閱讀(413) | 評論 (0)編輯 收藏

           用過structs2 checkboxlist標簽的同志一定知道,它默認的布局方式都是橫排的.但是如果我們想要每n個checkbox后要換一行,這就有問題了.當然解決的辦法是有的,只要改變checkboxblist.ftl就好了.像這樣,你要讓它每輸出四個checkbox之后換行,那么你可以這樣改:
           1 <#assign itemCount = 0/>
           2 <#if parameters.list?exists>
           3     <@s.iterator value="parameters.list">
           4         <#assign itemCount = itemCount + 1/>
           5         <#if parameters.listKey?exists>
           6             <#assign itemKey = stack.findValue(parameters.listKey)/>
           7         <#else>
           8             <#assign itemKey = stack.findValue('top')/>
           9         </#if>
          10         <#if parameters.listValue?exists>
          11             <#assign itemValue = stack.findString(parameters.listValue)/>
          12         <#else>
          13             <#assign itemValue = stack.findString('top')/>
          14         </#if>
          15 <#assign itemKeyStr=itemKey.toString() />
          16 <#if itemCount%5 == 0>
          17 <tr>
          18 </#if>
          19 <td>
          20 <input type="checkbox" name="${parameters.name?html}" value="${itemKeyStr?html}" id="${parameters.name?html}-${itemCount}"<#rt/>
          21         <#if tag.contains(parameters.nameValue, itemKey)>
          22  checked="checked"<#rt/>
          23         </#if>
          24         <#if parameters.disabled?default(false)>
          25  disabled="disabled"<#rt/>
          26         </#if>
          27         <#if parameters.title?exists>
          28  title="${parameters.title?html}"<#rt/>
          29         </#if>
          30         <#include "/${parameters.templateDir}/simple/scripting-events.ftl" />
          31         <#include "/${parameters.templateDir}/simple/common-attributes.ftl" />
          32 />
          33 <label for="${parameters.name?html}-${itemCount}" class="checkboxLabel">${itemValue?html}</label>
          34 </td>
          35 <#if itemCount%4 == 0>
          36 </tr>
          37 </#if>
          38     </@s.iterator>

          ..小提示..checkboxlist會根據value屬性而確定哪個checkbox被選中,但前提是listKey的類型和value的類型要一致.
          比如說<s:checkboxlist listKey="id" listValue="desc" name="multiCheck" value="checkedIndex"/>
          符合的組合:
          id: long
          checkedIndex: long[]

              id:String
              checkedIndex:String[]

          posted @ 2008-06-11 15:43 kevin.zhan 閱讀(1516) | 評論 (2)編輯 收藏

          1.做文件上傳時,出現Unable to load bean org.apache.struts2.dispatcher.multipart.MultiPartRequest .這時查看下你項目中是否存在commons-fileuploads.jar和commons-io.jar 包,要確定這兩個包是在jakarta下載的,不能是從springframework解壓過來的.當然也有可能其它包出現問題.不過只要確保包正確那就對了,這是原則.
          2.出現Unable to determine the type for Columns.....().
          這可能是創建表映射出現問題.創建持久化類的時候要確定表與表之間的關系,比如說.
          1@Entity
          2class A{
          3      private String name;
          4}
          1
          2@Entity
          3class B{
          4      private String id;
          5      //需要在這里寫表之間的關系
          6      //@OneToMany
          7      private A a;
          8}

          9
          如果沒加入表之間關系的話,就會出現第二個問題.
          posted @ 2008-05-23 11:01 kevin.zhan 閱讀(240) | 評論 (0)編輯 收藏

          今天在一個博客上看到了許多常用的javascript腳本代碼。在這里貼出來,跟大家參考參考。

          http://www.cnblogs.com/duliang/

          posted @ 2008-04-17 15:00 kevin.zhan 閱讀(909) | 評論 (0)編輯 收藏

          僅列出標題
          共3頁: 上一頁 1 2 3 下一頁 
          主站蜘蛛池模板: 贵德县| 易门县| 石河子市| 岳阳县| 运城市| 巴中市| 宜宾县| 和平区| 中山市| 海晏县| 连城县| 黄梅县| 化州市| 莎车县| 定结县| 拉萨市| 舟曲县| 嘉黎县| 金堂县| 天等县| 永善县| 华亭县| 香格里拉县| 红桥区| 蓬安县| 溧阳市| 瑞丽市| 翁源县| 阳山县| 射阳县| 精河县| 汝州市| 普定县| 集安市| 新野县| 白河县| 称多县| 迁西县| 陵川县| 芜湖县| 扶沟县|