lycong

          2008年9月1日 #

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

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

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

          2008年7月14日 #

          解決JSTL標簽 循環 中途 break

          如果直接使用<c:forEach> 直接在中間的代碼中 插入break , 并不能退出循環??梢圆捎靡韵虏呗赃M行代換:
          1. 用 <c:set var="collections" value="${forEach中的items}"/>
          2. 用 jspContext.getAttribute("collections"); 獲得對應的集合
          3.最后就用最原始的for()。

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

          2008年7月10日 #

          將來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)編輯 收藏

          2008年7月6日 #

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

                  問題如下:當修改密碼時,為了防止通過查看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)編輯 收藏

          2008年6月16日 #

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

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

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

          2008年5月28日 #

          關于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按鈕會正常執行相關操作而且會正常執行限制判斷??墒瞧婀值氖牵贗E下 在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)編輯 收藏

          2008年5月23日 #

          開發產品之個人感悟

                    軟件行業做項目和做產品有什么不同呢?最大的感受就是做產品始終是以客戶(即使用者)為中心,不斷做到精益求精。由于所在公司是開發郵件系統,也就是開發產品,之前自己負責的一些開發任務都是FIX系統的一些BUG或improvement,那些問題真得有些令我吃驚,每一步操作都必須考慮到用戶的感受和使用方便程度,連每步TAB到哪個輸入框都考慮到很精確,給我感覺就是客戶端做得很龐大,也就是所謂的“胖客戶端”,并且我暫時還沒接觸到的后臺服務器的功能也是要做得盡善盡美。

          posted @ 2008-05-23 21:56 cong 閱讀(217) | 評論 (0)編輯 收藏

          2008年5月18日 #

          被逼開通了首個屬于自己技術博客

                       作為一個程序員,沒有自己的技術BLOG貌似說不過去,看見公司大牛們的技術BLOG后,決定自己也搞一個。公司實習快2個月了,這些日子算是學到一點東西,主要是JAVASCRIPT,還有JSTL的一些用法。從之前的JAVASCRIPT“白癡”,到現在看到JS代碼沒當初那么頭疼了,而且還有一點感覺,由于剛進入公司,主要的開發工作還是客戶端的一些小BUG問題(其實真的小的不能再小了)。公司是做郵件系統(在業界應該是前茅的),郵箱頁面主要是分為A(AJAX),H(主要是JSP)風格2種,令我驚訝的是A風格是完全由JS代碼全部控制,生成HTML代碼,加入AJAX,調用服務器接口等操作均是由JS生成,而且代碼量極其多,剛開始的時候看A風格的代碼簡直就如同看天書一樣,后來慢慢的適應了他的一些寫法,但是還是很多不懂。
                      接下去還要去學習JAVAMAIL 的API, RMI, 我很想抽個時間去重新學習一下操作系統的知識,覺得當時學操作系統好像不知道學了什么,盡管考試分數有90多分,進入公司以后,我逐漸感覺自己在之前學的專業知識(操作系統,數據結構,數據庫原理,計算機網絡等)的時候,心態搞錯了,總覺得這些知識好像和編程沒什么掛鉤,能拿個高分數就行了,很多時候就是死記硬背。

          posted @ 2008-05-18 17:46 cong 閱讀(263) | 評論 (0)編輯 收藏

          僅列出標題  

          My Links

          Blog Stats

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 阜平县| 茶陵县| 尉犁县| 溆浦县| 泗阳县| 丽江市| 潜山县| 昭觉县| 保德县| 会东县| 家居| 芜湖县| 修文县| 巴马| 怀柔区| 文成县| 栾川县| 益阳市| 修文县| 龙川县| 夏邑县| 临海市| 苏尼特右旗| 新乐市| 鲁甸县| 时尚| 弥勒县| 河南省| 溧阳市| 盐池县| 丁青县| 日照市| 定襄县| 双桥区| 盐山县| 沭阳县| 中山市| 平罗县| 山西省| 漳州市| 会东县|