lycong

          2008年5月28日 #

          使用SAX對XML根據具體需求過濾標簽和長度截取

               摘要:        需要解決的問題是 根據一輸入流讀取一段XML內容,然后對其進行過濾截取,最后寫回輸出流中。具體說明如下: 1.對XML根據特定需求,過濾標簽(如SCRIPT,FRAME等非標準HTML標簽),過濾屬性(如onclick,onblur等) 2.對XML進行長度截取,具體做法如下: (1)對start標簽的處理: 若加上s...  閱讀全文

          posted @ 2008-09-01 21:26 cong 閱讀(930) | 評論 (0)編輯 收藏

          解決JSTL標簽 循環 中途 break

          如果直接使用<c:forEach> 直接在中間的代碼中 插入break , 并不能退出循環。可以采用以下策略進行代換:
          1. 用 <c:set var="collections" value="${forEach中的items}"/>
          2. 用 jspContext.getAttribute("collections"); 獲得對應的集合
          3.最后就用最原始的for()。

          posted @ 2008-07-14 14:19 cong 閱讀(1832) | 評論 (1)編輯 收藏

          將來2個月的學習計劃

          1.重溫《Thinking in Java》的IO、容器、并發部分,泛型編程:大約用2周時間
          2.重溫《Core Java》的SWING ,大約用1周。
          3.由于公司近期準備開發一套IM系統,要重點學習一下有關網絡編程,特別是TCP/IP知識,socket編程:2周時間
          5.學習《Ajax in Action》中Ajax高級應用部分。 1.5周
          4.學習《Code Complete》有關測試部分,要學會編寫測試用例:1.5周時間

          posted @ 2008-07-10 20:33 cong 閱讀(187) | 評論 (0)編輯 收藏

          經常碰到的模塊:修改密碼 一 安全小技巧(服務器后臺不返回密碼)

                  問題如下:當修改密碼時,為了防止通過查看html源文件或其他方法看到用戶的原始密碼,一般服務器不會返回用戶密碼,可以利用javascript的技巧 ,在頁面顯示一虛假密碼,然后判斷密碼是否修改過,如果真有修改過密碼,才把密碼送到后臺服務器,否則不發送密碼到后臺服務器。
          1. 頁面顯示代碼:
          <%--構造一個虛假的密碼顯示框--%>
                               
          <fmt:message key="falsity_password_defaultValue" var="falsity_password_defaultValue" />
                               
          <input id="falsity_password" type="password" name="falsity_password"
                                       
          default="${falsity_password_defaultValue}"
                                       value
          ="${fn:escapeXml(param.falsity_password != null ? param.falsity_password : falsity_password_defaultValue)}" autocomplete="off">
                               
          <input id="true_password" type="hidden" name="password"/>
          其中 falsity_password_defaultValue 為服務器端事先設置好的虛假密碼(可以在資源文件中設置), falsity_password 為頁面顯示的虛假密碼,true_password 是當密碼修改后,才發送到服務器, 下面就會對上面2個變量值作一些處理判斷。

          2. 對是否修改過密碼進行處理。
          A.當focus到密碼框時,密碼框清空, 到沒有修改過密碼就離開密碼框時,就還原為虛假密碼顯示.
          B.當修改過密碼后,就會把true_password的值設置為修改后的值。
           <script type="text/javascript"><!--
            
          function getTruePassword(){
              
          <c:if test="${param.edit == 'modify'}">
                
          var falsity_password = document.getElementById("falsity_password");
                
          var true_password = document.getElementById("true_password");
                     
          if(falsity_password && true_password){
                
          var defaultValue=falsity_password.getAttribute("default");

                    
          if(falsity_password.value != defaultValue) {
                         true_password.value 
          = falsity_password.value;
                    }

                }

              
          </c:if>
            }

            
          <c:if test="${param.edit == 'modify'}">
            
          var falsity_passwordNode = document.getElementById("falsity_password");
            
          if(falsity_passwordNode) {
                Object.extend(falsity_passwordNode, 
          {
                    onfocus : 
          function() {
                        
          if (this.value == this.getAttribute("default")) {
                            
          this.value = '';
                        }

                    }
          ,
                    onblur : 
          function() {
                        
          if (this.value == '') {
                            
          this.value = this.getAttribute("default");
                        }

                    }

                }
          )

            }

            
          </c:if>
            
          //--></script>

          判斷falsity_password密碼是否為虛假密碼,若不是,則把true_password設置為修改過的密碼。


          3.服務器端要判斷是否修改過密碼,若修改過才把密碼傳到后臺進行修改,這里主要看true_password是否為" ",若不為" ",則說明密碼修改過。
          這里可以通過tag來進行處理
          <c:if test="${!empty param.true_password}">
          /* 把true_password 傳到后臺進行修改    */
          </c:if>


          posted @ 2008-07-06 20:14 cong 閱讀(567) | 評論 (0)編輯 收藏

          Fix 問題: 進入編輯頁面,當點擊其他地方時,判斷頁面是否修改過,并提示相關信息。

               摘要:         問題如下:例如要修改某個人的信息時,進入編輯頁面,當點擊其他地方時,判斷信息是否已被修改過,并提示相關信息。         本例中以個人通訊錄信息為背景, 解決方法如下: 1.首先要有個 Object保存 一開始時從服...  閱讀全文

          posted @ 2008-06-16 21:50 cong 閱讀(622) | 評論 (0)編輯 收藏

          關于text文本框 按回車鍵 何種情況下 submit-------- 從一個bugfix 問題中想到

                      接到一個問題,大概描述如下:頁面有一text文本框,有一submit類型的按鈕,輸入內容后,按回車頁面只是刷新一下,但是沒有執行創建操作。而且文件夾名有如下限制:不能和之前創建文件夾同名,且非空。jsp中的內容簡化為如下: 

          <form> <tr>
           <td><input type="text" id="filename" /> </td>
          <td><input type="submit" onclick="return addFile();"  id="sub"/> </td>
          </tr> </form>


                  其中addFile()函數會有上面提及到限制判斷,并且會返回boolean類型,當然符合條件時就返回true,不符合就返回false。理所當然當輸入內容后點擊submit按鈕會正常執行相關操作而且會正常執行限制判斷。可是奇怪的是,在IE下 在text框輸入內容后直接按回車確不能執行相關操作,只是頁面刷新了一下, 但是在FIREFOX下 按回車卻能正常執行操作和判斷。 之前第一時間就是想到應該在text文本框中加一個onkeydown的事件enter_file(),enter_file函數是當按下回車時就執行,并且函數中應該有這句代碼 document.getElementById('sub').click(); 就是說當回車時就執行submit按鈕的click操作。 貌似應該會正常執行操作的吧,可是又一奇怪問題出現了,就是在IE下,在文本框中輸入 a 后(假設之前沒有文件名為a的文件),然后快速按2下(更多下也可以),結果會跳過“不能創建重復文件名”的判斷,創建出2個相同名字a 的文件夾,而且例如輸入同名文件名后,彈出框會一閃而過,不會等點擊確認后才退出彈出框,但是在FIREFOX下卻是正常執行,也不會出現一閃而過的現象,就是快速按幾下也只是創建一個文件夾a。 之后百思不得其解,試過一些方法,比如把submit類型改為button類型,把onkeydown事件換成onkeypress或者onkeyup ,結果還是出現IE下快速按回車 創建2個同名文件夾,還是出現一閃而過的現象。
                 初步判斷可能是ie和ff在text框按回車的響應不同,最后上網搜了一下,找到一個帖子 名為求解一個關于回車的問題 http://topic.csdn.net/t/20061128/14/5191186.html ,具體內容到那個帖子看看。抽取其中值得注意的地方如下:
             IE:       
            1.   只有一個text框時,(不管有沒有submit),直接觸發onsubmit   (form標簽的一事件屬性)
            2.   有多個text框時,觸發submit上的onclick,其默認行為為觸發onsubmit。  

          相對來說,ff的行為最復雜。       
            1.   有submit或button時,觸發submit或button的onclick,然后該onclick的默認行為會觸發onsubmit。  
            2.   沒有submit或button時,  
            2.1   只有一個text框時,觸發onsubmit;  
            2.2   有多個text框時,不觸發onsubmit。  

          因為看到當只有一個text框時,直接觸發onsubmit,就聯想到要在form標簽中加上onsubmit事件,于是把上面的代碼改為如下:
          <form onsubmit="return addFile()"> <tr>
           <td><input type="text" id="filename" /> </td>
          <td><input type="submit" id="sub"/> </td>
          </tr> </form>
          結果在IE下終于能成功操作,即是快速按幾下也只是創建一個文件夾,并且不在出現一閃而過的現象。 因此很多時候在IE下可能出現奇怪問題,換作FF下就沒問題了,Firefox支持JavaScript是正宗的。另外用firefox的插件 firedebug 來調試 javascript 程序 簡直太爽了。




          posted @ 2008-05-28 21:03 cong 閱讀(1871) | 評論 (1)編輯 收藏

          My Links

          Blog Stats

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 石首市| 海淀区| 潼南县| 南汇区| 东兴市| 兖州市| 余江县| 麦盖提县| 乌兰察布市| 磐安县| 青海省| 石家庄市| 定结县| 玛沁县| 新沂市| 马山县| 措勤县| 开化县| 新野县| 南漳县| 南皮县| 滕州市| 梁山县| 韶关市| 来宾市| 包头市| 新田县| 当雄县| 仁布县| 南城县| 阿城市| 盐亭县| 梁山县| 上林县| 黄浦区| 上犹县| 保定市| 宝应县| 砚山县| 托克逊县| 嫩江县|