posts - 44,  comments - 48,  trackbacks - 0
            2008年1月5日
          1.下載所需軟件
              1.1SVN服務端(svn-1.4.3-setup.exe)
                  http://subversion.tigris.org/project_packages.html
              1.2把SVN設置成window服務(SVNService.exe)
                  我沒有下載地址,如有需要,留下你的email
              1.3Eclipse的SVN插件(用Eclipse插件下載):

          2.配置服務端
              2.1安裝svn-1.4.3-setup.exe
              2.2開始->運行->cmd->進入SVN服務端的安裝目錄下面的bin目錄
              2.3cmd下運行svnadmin create SVN庫的位置(如:D:\SVN_PRJ)
              2.4復制SVNService.exe到SVN服務端安裝目錄下的bin目錄
              2.5cmd下運行SVNService -install -d -r D:\SVN_PRJ(SVN庫的位置)
              2.6如果想撤消掉后臺服務,則運行SVNService -remove
              2.7進入D:\SVN_PRJ\conf目錄下編輯svnserve.conf,內容如下(切記下面幾行字前不能有空格):
                  [general]
                  anon-access = read    #匿名訪問權限,取值為read,write,none
                  auth-access = write   #認證用戶的權限
                  password-db = passwd #認證用戶數據庫,即允許連到SVN的用戶(當前目錄下的passwd文件中存放的用戶及密碼)
                  realm = TESTING       #在用戶認證界面上出現的提示語句
              2.8編輯D:\SVN_PRJ\conf\passwd文件,內容如下
                  [users]
                  test = password       #這時你連接SVN的時候可以使用用戶名為test密碼為password來連接SVN
              2.9開始->設置->控制面板->管理工具->服務->啟動SVNService服務

          3.Eclipse下配置SVN插件
              3.1幫助->軟件更新->查找并安裝->搜索要安裝的新功能部件->新建遠程站點->輸入一個任意的名稱->URL輸入

          http://subclipse.tigris.org/update_1.2.x->確定->選中你剛才添加的遠程站點->完成->選中Subclipse->執行安裝操作
              3.2窗口->打開透視圖->SVN資源庫研究->右鍵->新建->資源庫位置->URL中輸入svn://127.0.0.1/->輸入2.7定義的用戶名test和密碼

          password

          4.提交工程
              4.1右擊工程->小組->共享項目->選擇SVN->選擇svn://127.0.0.1(如果沒有,則創建一個新的資源庫)->下一步->完成

          5.下載工程
              5.1在SVN資源庫透視圖下,點開svn://127.0.0.1,會顯示出現在本機SVN上的所有工程,右擊你想下載的工程->檢出為->下一步->完成

          6.基本操作
              6.1同步
                  在MyEclipse J2EE透視圖下,右擊你要同步的工程->小組->與資源庫同步->這時會進入同步透視圖,會顯示出本機與SVN上內容有不同的文件,雙擊文件名,會顯示出兩個文件中哪里不同;
              6.2提交
                  在同步透視圖下有"灰色向右的箭頭,表示你本機修改過",右擊該文件,可以選擇提交操作;
              6.3覆蓋/更新
                  在同步透視圖下有"藍色向左的箭頭,表示你本機修改過",右擊該文件,可以選擇覆蓋/更新操作;

          7.圖標說明
              7.1灰色向右箭頭:本地修改過
              7.2藍色向左箭頭:SVN上修改過
              7.3灰色向右且中間有個加號的箭頭:本地比SVN上多出的文件
              7.4藍色向左且中間有個加號的箭頭:SVN上比本地多出的文件
              7.5灰色向右且中間有個減號的箭頭:本地刪除了,而SVN上未刪除的文件
              7.6藍色向左且中間有個減號的箭頭:SVN上刪除了,而本地未刪除的文件
              7.7紅色雙向箭頭:SVN上修改過,本地也修改過的文件

          8.一些我遇到的出錯信息
              8.1在上面講的3.2步輸入URL(svn://127.0.0.1)點下一步出現"svnserve.conf:12: Option expected"錯誤
                  你打開svnserve.conf文件中的第12行,該錯誤是由于該行的前面有空格引起的,把左邊多出的空格刪除掉即可;
              8.2在上面講的3.2步輸入URL(svn://127.0.0.1/SVN_PRJ)點下一步出現"svn://127.0.0.1/SVN_PRJ non-existent in revision '7'"錯誤
                  URL錯了,應該輸入svn://127.0.0.1即可
          9.SVN服務端自帶的基于命令行的操作語句
              9.1設置SVN服務端安裝目錄下的/bin到環境變量中;
              9.2在命令行下運行svn import c:/test svn://127.0.0.1/test -m "initial import" --username test --password passwd可進行上傳操作
              9.3進入你要檢出的目錄,在命令行下運行svn checkout svn://127.0.0.1/test --username test -password passwd 可進行檢出工程的操作
              9.4在命令行下運行svn commit test.txt -m "modified" --username test -password passwd 可進行提交操作
              9.5在命令行下運行svn update -r HEAD test.txt --username test -password passwd 可進行更新操作

          注:上面講的127.0.0.1可以換成外網IP,或者局域網IP皆可(即,在家里創建一個SVN服務端,即可在公司去訪問家里的SVN)
          posted @ 2008-01-05 23:40 摩西 閱讀(38598) | 評論 (6)編輯 收藏
            2007年11月20日

          import java.io.UnsupportedEncodingException;
          import java.sql.Connection;
          import java.sql.DriverManager;
          import java.sql.PreparedStatement;
          import java.sql.ResultSet;
          import java.sql.SQLException;
          import java.sql.Statement;

          public class TempClass {

           /**
            * @param args
            * @throws UnsupportedEncodingException
            * @throws ClassNotFoundException
            * @throws SQLException
            */
           public static void main(String[] args) throws UnsupportedEncodingException {
            String url = "jdbc:microsoft:sqlserver://localhost:1433;databaseName=tran";
            try {
             Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
             Connection conn = DriverManager.getConnection(url, "sa", "sa");
             Statement st = conn.createStatement();
             ResultSet rs = st.executeQuery("select vcword from cn_other");

             // mysql
             String url_mysql = "jdbc:mysql://127.0.0.1:3306/zwspace";
             Class.forName("org.gjt.mm.mysql.Driver");
             Connection conn_mysql = DriverManager.getConnection(url_mysql,
               "root", "root");
             PreparedStatement st_mysql = conn_mysql
               .prepareStatement("insert into chds_cihui(name) values(?)");

             if (rs.next()) {

              String rsname = rs.getString("vcword");
              // String name = new String(rsname.getBytes("GB2312"),
              // "GB2312");
              // String name = new String(rsname.getBytes("UTF-8"), "GB2312");
              // String name = new String(rsname.getBytes("utf8"), "GB2312");
              // String name = new String(rsname.getBytes("iso-8859-1"),
              // "GB2312");
              // String name = new String(rsname.getBytes("GBK"), "GB2312");

              // String name = new String(rsname.getBytes("GBK"), "GBK");
              // String name = new String(rsname.getBytes("GB2312"), "GBK");
              // String name = new String(rsname.getBytes("UTF-8"), "GBK");
              // String name = new String(rsname.getBytes("iso-8859-1"),
              // "GBK");

              // String name = new String(rsname.getBytes("GBK"), "UTF-8");
              // String name = new String(rsname.getBytes("GB2312"), "UTF-8");
              // String name = new String(rsname.getBytes("UTF-8"), "UTF-8");
              // String name = new String(rsname.getBytes("iso-8859-1"),
              // "UTF-8");

              // String name = new String(rsname.getBytes("GBK"),
              // "iso-8859-1");
              // String name = new String(rsname.getBytes("GB2312"),
              // "iso-8859-1");
              // String name = new String(rsname.getBytes("UTF-8"),
              // "iso-8859-1");
              // String name = new String(rsname.getBytes("iso-8859-1"),
              // "iso-8859-1");

              // String name = new String(rsname.getBytes(), "GBK");
              // String name = new String(rsname.getBytes(), "GB2312");
              // String name = new String(rsname.getBytes(), "UTF-8");
              // String name = new String(rsname.getBytes(), "iso-8859-1");
              String name = rsname;

              System.out.println(rsname);

              st_mysql.setString(1, name);
              st_mysql.executeUpdate();
             }
             rs.close();
             st.close();
             conn.close();

             st_mysql.close();
             conn_mysql.close();

            } catch (ClassNotFoundException e) {
             e.printStackTrace();
            } catch (SQLException e) {
             e.printStackTrace();
            }
           }

          }



          試過以上的所有編碼都無法解決數據在MYSQL中的亂碼問題,看來是jdbc連mysql時的編碼不對,于是
          將   String url_mysql="jdbc:mysql://127.0.0.1:3306/zwspace";后加上編碼
             String url_mysql="jdbc:mysql://127.0.0.1:3306/zwspace?useUnicode=true&characterEncoding=utf8";終于OK了

          posted @ 2007-11-20 15:21 摩西 閱讀(866) | 評論 (0)編輯 收藏
            2007年9月28日
          在使用hibernate項目中,持久化類的ID用Long與long有很大區別!!
          用long 作為id,當一個新的臨時類要持久化時會報一個這種錯:
          Exception executing batch: org.hibernate.StaleStateException: Batch update returned unexpected row count from update: 0 actual row count: 0 expected: 1
          因為這個臨時類,已經有一個id=0 (long的默認值);這時hibernate 為錯認為這是一條持久化類,從而進行更新操作,故報錯!!
          這時把持久類的id 類型改成Long 就OK了,再create 時,臨時類的id為null ,hibernate 才會正確的判斷這是臨時類而進行save操作!!
          posted @ 2007-09-28 11:42 摩西 閱讀(2450) | 評論 (1)編輯 收藏
            2007年8月29日
                          user.getUserinfo().setSex(new String(pu.getSex().getBytes("ISO8859_1"),"GB2312"));
                          user.setNickname(new String(pu.getName().getBytes("ISO8859_1"),"GB2312"));
                          userService.createUser(user);
           

                      String(byte[] bytes, int offset, int length, String charsetName) 
                       通過使用指定的字符集解碼指定的 byte 子數組,構造一個新的 String。 
                      
           byte[] getBytes(String charsetName)
                    使用指定的字符集將此 String 編碼為 byte 序列,并將結果存儲到一個新的 byte 數組中



          #800080      

          #7B7D62

          #56B6E9

          #4B8D32

          posted @ 2007-08-29 13:45 摩西 閱讀(424) | 評論 (0)編輯 收藏
            2007年8月23日
          <script language="JavaScript">
          function doZoom(size){

           document.getElementById("zwsky_content").style.fontSize=size+'px'
          }
           function ReImgSize(){
             for (j=0;j<document.images.length;j++)
             {
               if (document.images[j].src.indexOf("www.***.com/back") >0)
               document.images[j].src=document.images[j].src.replace("www.***.com/back","back.****.com/back");
             }
           }
          </script>

          ............................


          <body  bottommargin="0" leftmargin="0" rightmargin="0" topmargin="0" onload="ReImgSize()">
          posted @ 2007-08-23 17:47 摩西 閱讀(355) | 評論 (0)編輯 收藏
            2007年8月21日
          <input type="button" name="Submit3" value="搜 索"  onClick="location.href='SearchResult.jsp?cluster_node_id=&key_word=' + document.CMS4JSearchForm.KEY_WORD.value + '&db_id=' + document.CMS4JSearchForm.DB_ID.value;">
          posted @ 2007-08-21 10:51 摩西 閱讀(1893) | 評論 (0)編輯 收藏
            2007年8月20日
          這個錯誤我一共遇到過兩次,一直沒有找到很好的解決方案,這個錯誤產生原因相信大家都知道,因為在hibernate中同一個session里面有了兩個相同標識但是是不同實體.
          一開始按網上說的用session.merge(Object)報了一個錯,可能是沒有用好,改用 session.clear(); session.update(user);這樣就OK了,
          方法為:

          package org.springframework.orm.hibernate3.support;
          ...
              public void modifyByMerge(User user) {
                  Session session = getHibernateTemplate().getSessionFactory().
                                    getCurrentSession();
                  session.clear();
                  session.update(user);
              }
          ...
          項目用的是spring + hibernate所以得用
          getHibernateTemplate().getSessionFactory().getCurrentSession();得當前Session


          posted @ 2007-08-20 11:29 摩西 閱讀(29516) | 評論 (9)編輯 收藏
            2007年8月14日

               上一次在做交友模板時,出來了這種問題,后來才發現是hibernate的一個映射文件配錯了,今天在做DC攝影時,
          映射文件加了一個lazy="false" fetch="join"  結果,也出現了數據重復取。
          <many-to-one name="user" column="user_id"  class="com.zwspace.domain.User" lazy="false" fetch="join" />
          這樣也會有錯嗎!想不通,只能把它給刪了。


          posted @ 2007-08-14 16:53 摩西 閱讀(704) | 評論 (0)編輯 收藏
            2007年6月7日

          js驗證表單大全
          1. 長度限制
          <script>
          function test()
          {
          if(document.a.b.value.length>50)
          {
          alert("不能超過50個字符!");
          document.a.b.focus();
          return false;
          }
          }
          </script>
          <form name=a onsubmit="return test()">
          <textarea name="b" cols="40" wrap="VIRTUAL" rows="6"></textarea>
          <input type="submit" name="Submit" value="check">
          </form>

          2. 只能是漢字
          <input onkeyup="value="/oblog/value.replace(/[^\u4E00-\u9FA5]/g,'')">

          3." 只能是英文
          <script language=javascript>
          function onlyEng()
          {
          if(!(event.keyCode>=65&&event.keyCode<=90))
          event.returnvalue=false;
          }
          </script>

          <input onkeydown="onlyEng();">

          4. 只能是數字
          <script language=javascript>
          function onlyNum()
          {
          if(!((event.keyCode>=48&&event.keyCode<=57)||(event.keyCode>=96&&event.keyCode<=105)))
          //考慮小鍵盤上的數字鍵
          event.returnvalue=false;
          }
          </script>

          <input onkeydown="onlyNum();">

          5. 只能是英文字符和數字
          <input onkeyup="value="/oblog/value.replace(/[\W]/g,"'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))">

          6. 驗證油箱格式
          <SCRIPT LANGUAGE=javascript RUNAT=Server>
          function isEmail(strEmail) {
          if (strEmail.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1)
          return true;
          else
          alert("oh");
          }
          </SCRIPT>
          <input type=text onblur=isEmail(this.value)>

          7. 屏蔽關鍵字(這里屏蔽***和****)
          <script language="javascript1.2">
          function test() {
          if((a.b.value.indexOf ("***") == 0)||(a.b.value.indexOf ("****") == 0)){
          alert(":)");
          a.b.focus();
          return false;}
          }
          </script>
          <form name=a onsubmit="return test()">
          <input type=text name=b>
          <input type="submit" name="Submit" value="check">
          </form>

          8. 兩次輸入密碼是否相同
          <FORM METHOD=POST ACTION="">
          <input type="password" id="input1">
          <input type="password" id="input2">
          <input type="button" value="test" onclick="check()">
          </FORM>
          <script>
          function check()
          {
          with(document.all){
          if(input1.value!=input2.value)
          {
          alert("false")
          input1.value = "";
          input2.value = "";
          }
          else document.forms[0].submit();
          }
          }
          </script>
          夠了吧 :)
          屏蔽右鍵 很酷
          oncontextmenu="return false" ondragstart="return false" onselectstart="return false"
          加在body中


          2.1  表單項不能為空

          <script  language="javascript">
          <!--
          function  CheckForm()

          if  (document.form.name.value.length  ==  0)  { 
          alert("請輸入您姓名!");
          document.form.name.focus();
          return  false;
          }
          return  true;
          }
          -->
          </script>

          2.2  比較兩個表單項的值是否相同

          <script  language="javascript">
          <!--
          function  CheckForm()
          if  (document.form.PWD.value  !=  document.form.PWD_Again.value)  { 
          alert("您兩次輸入的密碼不一樣!請重新輸入.");
          document.ADDUser.PWD.focus();
          return  false;
          }
          return  true;
          }
          -->
          </script>

          2.3  表單項只能為數字和"_",用于電話/銀行帳號驗證上,可擴展到域名注冊等

          <script  language="javascript">
          <!--
          function  isNumber(String)

          var  Letters  =  "1234567890-";  //可以自己增加可輸入值
          var  i;
          var  c;
          if(String.charAt(  0  )=='-')
          return  false;
          if(  String.charAt(  String.length  -  1  )  ==  '-'  )
          return  false;
          for(  i  =  0;  i  <  String.length;  i  ++  )

          c  =  String.charAt(  i  );
          if  (Letters.indexOf(  c  )  <  0)
          return  false;
          }
          return  true;
          }
          function  CheckForm()

          if(!  isNumber(document.form.TEL.value))  { 
          alert("您的電話號碼不合法!");
          document.form.TEL.focus();
          return  false;
          }
          return  true;
          }
          -->
          </script>


          2.4  表單項輸入數值/長度限定

          <script  language="javascript">
          <!--
          function  CheckForm() 

          if  (document.form.count.value  >  100  ||  document.form.count.value  <  1)

          alert("輸入數值不能小于零大于100!");
          document.form.count.focus();
          return  false;
          }
          if  (document.form.MESSAGE.value.length<10)

          alert("輸入文字小于10!");
          document.form.MESSAGE.focus();
          return  false;
          }
          return  true;
          }
          //-->
          </script>

          2.5  中文/英文/數字/郵件地址合法性判斷

          <SCRIPT  LANGUAGE="javascript">
          <!--

          function  isEnglish(name)  //英文值檢測

          if(name.length  ==  0)
          return  false;
          for(i  =  0;  i  <  name.length;  i++)  { 
          if(name.charCodeAt(i)  >  128)
          return  false;
          }
          return  true;
          }

          function  isChinese(name)  //中文值檢測

          if(name.length  ==  0)
          return  false;
          for(i  =  0;  i  <  name.length;  i++)  { 
          if(name.charCodeAt(i)  >  128)
          return  true;
          }
          return  false;
          }

          function  isMail(name)  //  E-mail值檢測

          if(!  isEnglish(name))
          return  false;
          i  =  name.indexOf("  at  ");
          j  =  name  dot  lastIndexOf("  at  ");
          if(i  ==  -1)
          return  false;
          if(i  !=  j)
          return  false;
          if(i  ==  name  dot  length)
          return  false;
          return  true;
          }

          function  isNumber(name)  //數值檢測

          if(name.length  ==  0)
          return  false;
          for(i  =  0;  i  <  name.length;  i++)  { 
          if(name.charAt(i)  <  "0"  ||  name.charAt(i)  >  "9")
          return  false;
          }
          return  true;
          }

          function  CheckForm()

          if(!  isMail(form.Email.value))  { 
          alert("您的電子郵件不合法!");
          form.Email.focus();
          return  false;
          }
          if(!  isEnglish(form.name.value))  { 
          alert("英文名不合法!");
          form.name.focus();
          return  false;
          }
          if(!  isChinese(form.cnname.value))  { 
          alert("中文名不合法!");
          form.cnname.focus();
          return  false;
          }
          if(!  isNumber(form.PublicZipCode.value))  { 
          alert("郵政編碼不合法!");
          form.PublicZipCode.focus();
          return  false;
          }
          return  true;
          }
          //-->
          </SCRIPT>

          2.6  限定表單項不能輸入的字符

          <script  language="javascript">
          <!--

          function  contain(str,charset)//  字符串包含測試函數

          var  i;
          for(i=0;i<charset.length;i++)
          if(str.indexOf(charset.charAt(i))>=0)
          return  true;
          return  false;
          }

          function  CheckForm()

          if  ((contain(document.form.NAME.value,  "%\(\)><"))  ||  (contain(document.form.MESSAGE.value,  "%\(\)><")))

          alert("輸入了非法字符");
          document.form.NAME.focus();
          return  false;
          }
          return  true;
          }
          //-->
          </script> 

          1. 檢查一段字符串是否全由數字組成      
          ---------------------------------------      
          <script language="Javascript"><!--          
          function checkNum(str){return str.match(/\D/)==null}          
          alert(checkNum("1232142141"))          
          alert(checkNum("123214214a1"))          
          // --></script>        
               
          2. 怎么判斷是否是字符        
          ---------------------------------------      
          if (/[^\x00-\xff]/g.test(s)) alert("含有漢字");         
          else alert("全是字符");     
                    
          3. 怎么判斷是否含有漢字       
          ---------------------------------------       
          if (escape(str).indexOf("%u")!=-1) alert("含有漢字");        
          else alert("全是字符");          
             
          4. 郵箱格式驗證   
          ---------------------------------------     
          //函數名:chkemail    
          //功能介紹:檢查是否為Email Address    
          //參數說明:要檢查的字符串    
          //返回值:0:不是 1:是    
          function chkemail(a)    
          { var i=a.length;    
          var temp = a.indexOf('@');    
          var tempd = a.indexOf('.');    
          if (temp > 1) {    
          if ((i-temp) > 3){    
          if ((i-tempd)>0){    
          return 1;    
          }    
             
          }    
          }    
          return 0;    
          }    
             
          5. 數字格式驗證   
          ---------------------------------------     
          //函數名:fucCheckNUM    
          //功能介紹:檢查是否為數字    
          //參數說明:要檢查的數字    
          //返回值:1為是數字,0為不是數字    
          function fucCheckNUM(NUM)    
          {    
          var i,j,strTemp;    
          strTemp="0123456789";    
          if ( NUM.length== 0)    
          return 0    
          for (i=0;i<NUM.length;i++)    
          {    
          j=strTemp.indexOf(NUM.charAt(i));    
          if (j==-1)    
          {    
          //說明有字符不是數字    
          return 0;    
          }    
          }    
          //說明是數字    
          return 1;    
          }    
             
          6. 電話號碼格式驗證   
          ---------------------------------------     
          //函數名:fucCheckTEL    
          //功能介紹:檢查是否為電話號碼    
          //參數說明:要檢查的字符串    
          //返回值:1為是合法,0為不合法    
          function fucCheckTEL(TEL)    
          {    
          var i,j,strTemp;    
          strTemp="0123456789-()# ";    
          for (i=0;i<TEL.length;i++)    
          {    
          j=strTemp.indexOf(TEL.charAt(i));    
          if (j==-1)    
          {    
          //說明有字符不合法    
          return 0;    
          }    
          }    
          //說明合法    
          return 1;    
          }   
            
          7. 判斷輸入是否為中文的函數  
          ---------------------------------------     
          function ischinese(s){  
          var ret=true;  
          for(var i=0;i<s.length;i++)  
          ret=ret && (s.charCodeAt(i)>=10000);  
          return ret;  
          }   
            
          8. 綜合的判斷用戶輸入的合法性的函數 
          ---------------------------------------     
          <script language="javascript"> 
          //限制輸入字符的位數開始 
          //m是用戶輸入,n是要限制的位數 
          function issmall(m,n) 

          if ((m<n) && (m>0)) 
            { 
            return(false); 
            } 
          else 
          {return(true);} 

           
          9. 判斷密碼是否輸入一致 
          ---------------------------------------     
          function issame(str1,str2) 

          if (str1==str2) 
          {return(true);} 
          else 
          {return(false);} 

           
          10. 判斷用戶名是否為數字字母下滑線
          ---------------------------------------     
          function notchinese(str){
          var reg=/[^A-Za-z0-9_]/g
              if (reg.test(str)){
              return (false);
              }else{
          return(true);    }
          }

          11. form文本域的通用校驗函數
          ---------------------------------------     
          作用:檢測所有必須非空的input文本,比如姓名,賬號,郵件地址等等。
          該校驗現在只針對文本域,如果要針對form里面的其他域對象,可以改變判斷條件。

          使用方法:在要檢測的文本域中加入title文字。文字是在提示信息,你要提示給用戶的該字段的中文名。比如要檢測用戶名
          html如下<input name="txt_1" title="姓名">,當然,最好用可視化工具比如dreamweaver什么的來編輯域。
          如果要檢測數字類型數據的話,再把域的id統一為sz.
          javascript判斷日期類型比較麻煩,所以就沒有做日期類型校驗的程序了.高手可以補充。

          程序比較草,只是提供一個思路。拋磚引玉! :)
          哦,對了,函數調用方法:< form  onsubmit="return dovalidate()">

          function dovalidate()
          {
          fm=document.forms[0] //只檢測一個form,如果是多個可以改變判斷條件
              for(i=0;i<fm.length;i++)
              { 
              //檢測判斷條件,根據類型不同可以修改
              if(fm[i].tagName.toUpperCase()=="INPUT" &&fm[i].type.toUpperCase()=="TEXT" && (fm[i].title!=""))
             
                   if(fm[i].value="/blog/="")//
                   {
                   str_warn1=fm[i].title+"不能為空!";
                   alert(str_warn1);
                  fm[i].focus();
                   return false;        
                   }
                   if(fm[i].id.toUpperCase()=="SZ")//數字校驗
                   {
                           if(isNaN(fm[i].value))
                          { str_warn2=fm[i].title+"格式不對";
                          alert(str_warn2);
                          fm[i].focus();
                           return false;
                           }
                  }
              }
              return true;
          }


          2 >表單提交驗證類


          2.1 表單項不能為空

          <script language="javascript">
          <!--
          function CheckForm()
          {
          if (document.form.name.value.length == 0) {
          alert("請輸入您姓名!");
          document.form.name.focus();
          return false;
          }
          return true;
          }
          -->
          </script>

          2.2 比較兩個表單項的值是否相同

          <script language="javascript">
          <!--
          function CheckForm()
          if (document.form.PWD.value != document.form.PWD_Again.value) {
          alert("您兩次輸入的密碼不一樣!請重新輸入.");
          document.ADDUser.PWD.focus();
          return false;
          }
          return true;
          }
          -->
          </script>

          2.3 表單項只能為數字和"_",用于電話/銀行帳號驗證上,可擴展到域名注冊等

          <script language="javascript">
          <!--
          function isNumber(String)
          {
          var Letters = "1234567890-"; //可以自己增加可輸入值
          var i;
          var c;
          if(String.charAt( 0 )=='-')
          return false;
          if( String.charAt( String.length - 1 ) == '-' )
          return false;
          for( i = 0; i < String.length; i ++ )
          {
          c = String.charAt( i );
          if (Letters.indexOf( c ) < 0)
          return false;
          }
          return true;
          }
          function CheckForm()
          {
          if(! isNumber(document.form.TEL.value)) {
          alert("您的電話號碼不合法!");
          document.form.TEL.focus();
          return false;
          }
          return true;
          }
          -->
          </script>


          2.4 表單項輸入數值/長度限定

          <script language="javascript">
          <!--
          function CheckForm()
          {
          if (document.form.count.value > 100 || document.form.count.value < 1)
          {
          alert("輸入數值不能小于零大于100!");
          document.form.count.focus();
          return false;
          }
          if (document.form.MESSAGE.value.length<10)
          {
          alert("輸入文字小于10!");
          document.form.MESSAGE.focus();
          return false;
          }
          return true;
          }
          //-->
          </script>

          2.5 中文/英文/數字/郵件地址合法性判斷

          <SCRIPT LANGUAGE="javascript">
          <!--

          function isEnglish(name) //英文值檢測
          {
          if(name.length == 0)
          return false;
          for(i = 0; i < name.length; i++) {
          if(name.charCodeAt(i) > 128)
          return false;
          }
          return true;
          }

          function isChinese(name) //中文值檢測
          {
          if(name.length == 0)
          return false;
          for(i = 0; i < name.length; i++) {
          if(name.charCodeAt(i) > 128)
          return true;
          }
          return false;
          }

          function isMail(name) // E-mail值檢測
          {
          if(! isEnglish(name))
          return false;
          i = name.indexOf(" at ");
          j = name dot lastIndexOf(" at ");
          if(i == -1)
          return false;
          if(i != j)
          return false;
          if(i == name dot length)
          return false;
          return true;
          }

          function isNumber(name) //數值檢測
          {
          if(name.length == 0)
          return false;
          for(i = 0; i < name.length; i++) {
          if(name.charAt(i) < "0" || name.charAt(i) > "9")
          return false;
          }
          return true;
          }

          function CheckForm()
          {
          if(! isMail(form.Email.value)) {
          alert("您的電子郵件不合法!");
          form.Email.focus();
          return false;
          }
          if(! isEnglish(form.name.value)) {
          alert("英文名不合法!");
          form.name.focus();
          return false;
          }
          if(! isChinese(form.cnname.value)) {
          alert("中文名不合法!");
          form.cnname.focus();
          return false;
          }
          if(! isNumber(form.PublicZipCode.value)) {
          alert("郵政編碼不合法!");
          form.PublicZipCode.focus();
          return false;
          }
          return true;
          }
          //-->
          </SCRIPT>

          2.6 限定表單項不能輸入的字符

          <script language="javascript">
          <!--

          function contain(str,charset)// 字符串包含測試函數
          {
          var i;
          for(i=0;i<charset.length;i++)
          if(str.indexOf(charset.charAt(i))>=0)
          return true;
          return false;
          }

          function CheckForm()
          {
          if ((contain(document.form.NAME.value, "%\(\)><")) || (contain(document.form.MESSAGE.value, "%\(\)><")))
          {
          alert("輸入了非法字符");
          document.form.NAME.focus();
          return false;
          }
          return true;
          }
          //-->
          </script>

           

          posted @ 2007-06-07 10:47 摩西 閱讀(374) | 評論 (0)編輯 收藏
            2007年4月27日
          Java/J2EE中文問題終極解決之道
           
          Java中文問題一直困擾著很多初學者,如果了解了Java系統的中文問題原理,我們就可以對中文問題能夠采取根本的解決之道。

            最古老的解決方案是使用String的字節碼轉換,這種方案問題是不方便,我們需要破壞對象封裝性,進行字節碼轉換。

            還有一種方式是對J2EE容器進行編碼設置,如果J2EE應用系統脫離該容器,則會發生亂碼,而且指定容器配置不符合J2EE應用和容器分離的原則。

            在Java內部運算中,涉及到的所有字符串都會被轉化為UTF-8編碼來進行運算。那么,在被Java轉化之前,字符串是什么樣的字符集? Java總是根據操作系統的默認編碼字符集來決定字符串的初始編碼,而且Java系統的輸入和輸出的都是采取操作系統的默認編碼。

            因此,如果能統一Java系統的輸入、輸出和操作系統3者的編碼字符集合,將能夠使Java系統正確處理和顯示漢字。這是處理Java系統漢字的一個原則,但是在實際項目中,能夠正確抓住和控制住Java系統的輸入和輸出部分是比較難的。J2EE中,由于涉及到外部瀏覽器和數據庫等,所以中文問題亂碼顯得非常突出。

            J2EE應用程序是運行在J2EE容器中。在這個系統中,輸入途徑有很多種:一種是通過頁面表單打包成請求(request)發往服務器的;第二種是通過數據庫讀入;還有第3種輸入比較復雜,JSP在第一次運行時總是被編譯成Servlet,JSP中常常包含中文字符,那么編譯使用javac時,Java將根據默認的操作系統編碼作為初始編碼。除非特別指定,如在Jbuilder/eclipse中可以指定默認的字符集。

            輸出途徑也有幾種:第一種是JSP頁面的輸出。由于JSP頁面已經被編譯成Servlet,那么在輸出時,也將根據操作系統的默認編碼來選擇輸出編碼,除非指定輸出編碼方式;還有輸出途徑是數據庫,將字符串輸出到數據庫。

            由此看來,一個J2EE系統的輸入輸出是非常復雜,而且是動態變化的,而Java是跨平臺運行的,在實際編譯和運行中,都可能涉及到不同的操作系統,如果任由Java自由根據操作系統來決定輸入輸出的編碼字符集,這將不可控制地出現亂碼。

            正是由于Java的跨平臺特性,使得字符集問題必須由具體系統來統一解決,所以在一個Java應用系統中,解決中文亂碼的根本辦法是明確指定整個應用系統統一字符集。

            指定統一字符集時,到底是指定ISO8859_1 、GBK還是UTF-8呢? 

            (1)如統一指定為ISO8859_1,因為目前大多數軟件都是西方人編制的,他們默認的字符集就是ISO8859_1,包括操作系統Linux和數據庫MySQL等。這樣,如果指定Jive統一編碼為ISO8859_1,那么就有下面3個環節必須把握:

            開發和編譯代碼時指定字符集為ISO8859_1。

            運行操作系統的默認編碼必須是ISO8859_1,如Linux。

            在JSP頭部聲明:<%@ page contentType="text/html;charset=ISO8859_1" %>。

            (2)如果統一指定為GBK中文字符集,上述3個環節同樣需要做到,不同的是只能運行在默認編碼為GBK的操作系統,如中文Windows。

            統一編碼為ISO8859_1和GBK雖然帶來編制代碼的方便,但是各自只能在相應的操作系統上運行。但是也破壞了Java跨平臺運行的優越性,只在一定范圍內行得通。例如,為了使得GBK編碼在linux上運行,設置Linux編碼為GBK。

            那么有沒有一種除了應用系統以外不需要進行任何附加設置的中文編碼根本解決方案呢?

            將Java/J2EE系統的統一編碼定義為UTF-8。UTF-8編碼是一種兼容所有語言的編碼方式,惟一比較麻煩的就是要找到應用系統的所有出入口,然后使用UTF-8去“結扎”它。

            一個J2EE應用系統需要做下列幾步工作:

          1. 開發和編譯代碼時指定字符集為UTF-8。JBuilder和Eclipse都可以在項目屬性中設置。 
          2. 使用過濾器,如果所有請求都經過一個Servlet控制分配器,那么使用Servlet的filter執行語句,將所有來自瀏覽器的請求(request)轉換為UTF-8,因為瀏覽器發過來的請求包根據瀏覽器所在的操作系統編碼,可能是各種形式編碼。關鍵一句:
            request.setCharacterEncoding("UTF-8")。
            網上有此filter的源碼,Jdon框架源碼中com.jdon.util.SetCharacterEncodingFilter
            需要配置web.xml 激活該Filter。 
          3. 在JSP頭部聲明:<%@ page contentType="text/html;charset= UTF-8" %>。 
          4. 在Jsp的html代碼中,聲明UTF-8:
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
          5. 設定數據庫連接方式是UTF-8。例如連接MYSQL時配置URL如下:
            jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=UTF-8
            注意,上述寫法是JBoss的mysql-ds.xml寫法,多虧網友提示,在tomcat中&amp;要寫成&即可。一般其他數據庫都可以通過管理設置設定UTF-8 
          6. 其他和外界交互時能夠設定編碼時就設定UTF-8,例如讀取文件,操作XML等。 
               筆者以前在Jsp/Servlet時就采取這個原則,后來使用Struts、Tapestry、EJB、Hibernate、Jdon等框架時,從未被亂碼困擾過,可以說適合各種架構。希望本方案供更多初學者分享,減少Java/J2EE的第一個攔路虎,也避免因為采取一些臨時解決方案,導致中文問題一直出現在新的技術架構中。 
          posted @ 2007-04-27 15:24 摩西 閱讀(395) | 評論 (0)編輯 收藏
          僅列出標題  下一頁
          主站蜘蛛池模板: 安阳县| 安远县| 久治县| 秭归县| 郓城县| 定州市| 临邑县| 乌鲁木齐市| 阆中市| 台中县| 沛县| 泉州市| 南川市| 元谋县| 北票市| 逊克县| 阳谷县| 东乌珠穆沁旗| 乐昌市| 金堂县| 焉耆| 偏关县| 台南县| 祥云县| 唐河县| 思南县| 成武县| 潞城市| 广宗县| 恩施市| 儋州市| 新闻| 全州县| 清涧县| 永嘉县| 铜鼓县| 江安县| 南溪县| 乌恰县| 中超| 桓仁|