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

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

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

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

          password

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

          5.下載工程
              5.1在SVN資源庫(kù)透視圖下,點(diǎn)開svn://127.0.0.1,會(huì)顯示出現(xiàn)在本機(jī)SVN上的所有工程,右擊你想下載的工程->檢出為->下一步->完成

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

          7.圖標(biāo)說(shuō)明
              7.1灰色向右箭頭:本地修改過(guò)
              7.2藍(lán)色向左箭頭:SVN上修改過(guò)
              7.3灰色向右且中間有個(gè)加號(hào)的箭頭:本地比SVN上多出的文件
              7.4藍(lán)色向左且中間有個(gè)加號(hào)的箭頭:SVN上比本地多出的文件
              7.5灰色向右且中間有個(gè)減號(hào)的箭頭:本地刪除了,而SVN上未刪除的文件
              7.6藍(lán)色向左且中間有個(gè)減號(hào)的箭頭:SVN上刪除了,而本地未刪除的文件
              7.7紅色雙向箭頭:SVN上修改過(guò),本地也修改過(guò)的文件

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

          注:上面講的127.0.0.1可以換成外網(wǎng)IP,或者局域網(wǎng)IP皆可(即,在家里創(chuàng)建一個(gè)SVN服務(wù)端,即可在公司去訪問(wèn)家里的SVN)
          posted @ 2008-01-05 23:40 摩西 閱讀(38598) | 評(píng)論 (6)編輯 收藏

          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();
            }
           }

          }



          試過(guò)以上的所有編碼都無(wú)法解決數(shù)據(jù)在MYSQL中的亂碼問(wèn)題,看來(lái)是jdbc連mysql時(shí)的編碼不對(duì),于是
          將   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) | 評(píng)論 (0)編輯 收藏
          在使用hibernate項(xiàng)目中,持久化類的ID用Long與long有很大區(qū)別!!
          用long 作為id,當(dāng)一個(gè)新的臨時(shí)類要持久化時(shí)會(huì)報(bào)一個(gè)這種錯(cuò):
          Exception executing batch: org.hibernate.StaleStateException: Batch update returned unexpected row count from update: 0 actual row count: 0 expected: 1
          因?yàn)檫@個(gè)臨時(shí)類,已經(jīng)有一個(gè)id=0 (long的默認(rèn)值);這時(shí)hibernate 為錯(cuò)認(rèn)為這是一條持久化類,從而進(jìn)行更新操作,故報(bào)錯(cuò)!!
          這時(shí)把持久類的id 類型改成Long 就OK了,再create 時(shí),臨時(shí)類的id為null ,hibernate 才會(huì)正確的判斷這是臨時(shí)類而進(jìn)行save操作!!
          posted @ 2007-09-28 11:42 摩西 閱讀(2451) | 評(píng)論 (1)編輯 收藏
                          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) 
                       通過(guò)使用指定的字符集解碼指定的 byte 子數(shù)組,構(gòu)造一個(gè)新的 String。 
                      
           byte[] getBytes(String charsetName)
                    使用指定的字符集將此 String 編碼為 byte 序列,并將結(jié)果存儲(chǔ)到一個(gè)新的 byte 數(shù)組中



          #800080      

          #7B7D62

          #56B6E9

          #4B8D32

          posted @ 2007-08-29 13:45 摩西 閱讀(424) | 評(píng)論 (0)編輯 收藏
          <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) | 評(píng)論 (0)編輯 收藏
          <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) | 評(píng)論 (0)編輯 收藏
          這個(gè)錯(cuò)誤我一共遇到過(guò)兩次,一直沒(méi)有找到很好的解決方案,這個(gè)錯(cuò)誤產(chǎn)生原因相信大家都知道,因?yàn)樵趆ibernate中同一個(gè)session里面有了兩個(gè)相同標(biāo)識(shí)但是是不同實(shí)體.
          一開始按網(wǎng)上說(shuō)的用session.merge(Object)報(bào)了一個(gè)錯(cuò),可能是沒(méi)有用好,改用 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);
              }
          ...
          項(xiàng)目用的是spring + hibernate所以得用
          getHibernateTemplate().getSessionFactory().getCurrentSession();得當(dāng)前Session


          posted @ 2007-08-20 11:29 摩西 閱讀(29516) | 評(píng)論 (9)編輯 收藏

               上一次在做交友模板時(shí),出來(lái)了這種問(wèn)題,后來(lái)才發(fā)現(xiàn)是hibernate的一個(gè)映射文件配錯(cuò)了,今天在做DC攝影時(shí),
          映射文件加了一個(gè)lazy="false" fetch="join"  結(jié)果,也出現(xiàn)了數(shù)據(jù)重復(fù)取。
          <many-to-one name="user" column="user_id"  class="com.zwspace.domain.User" lazy="false" fetch="join" />
          這樣也會(huì)有錯(cuò)嗎!想不通,只能把它給刪了。


          posted @ 2007-08-14 16:53 摩西 閱讀(704) | 評(píng)論 (0)編輯 收藏

          js驗(yàn)證表單大全
          1. 長(zhǎng)度限制
          <script>
          function test()
          {
          if(document.a.b.value.length>50)
          {
          alert("不能超過(guò)50個(gè)字符!");
          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. 只能是數(shù)字
          <script language=javascript>
          function onlyNum()
          {
          if(!((event.keyCode>=48&&event.keyCode<=57)||(event.keyCode>=96&&event.keyCode<=105)))
          //考慮小鍵盤上的數(shù)字鍵
          event.returnvalue=false;
          }
          </script>

          <input onkeydown="onlyNum();">

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

          6. 驗(yàn)證油箱格式
          <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. 屏蔽關(guān)鍵字(這里屏蔽***和****)
          <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  表單項(xiàng)不能為空

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

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

          2.2  比較兩個(gè)表單項(xiàng)的值是否相同

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

          2.3  表單項(xiàng)只能為數(shù)字和"_",用于電話/銀行帳號(hào)驗(yàn)證上,可擴(kuò)展到域名注冊(cè)等

          <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("您的電話號(hào)碼不合法!");
          document.form.TEL.focus();
          return  false;
          }
          return  true;
          }
          -->
          </script>


          2.4  表單項(xiàng)輸入數(shù)值/長(zhǎng)度限定

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

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

          alert("輸入數(shù)值不能小于零大于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  中文/英文/數(shù)字/郵件地址合法性判斷

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

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

          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)  //中文值檢測(cè)

          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值檢測(cè)

          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)  //數(shù)值檢測(cè)

          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  限定表單項(xiàng)不能輸入的字符

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

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

          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. 檢查一段字符串是否全由數(shù)字組成      
          ---------------------------------------      
          <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. 郵箱格式驗(yàn)證   
          ---------------------------------------     
          //函數(shù)名:chkemail    
          //功能介紹:檢查是否為Email Address    
          //參數(shù)說(shuō)明:要檢查的字符串    
          //返回值: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. 數(shù)字格式驗(yàn)證   
          ---------------------------------------     
          //函數(shù)名:fucCheckNUM    
          //功能介紹:檢查是否為數(shù)字    
          //參數(shù)說(shuō)明:要檢查的數(shù)字    
          //返回值:1為是數(shù)字,0為不是數(shù)字    
          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)    
          {    
          //說(shuō)明有字符不是數(shù)字    
          return 0;    
          }    
          }    
          //說(shuō)明是數(shù)字    
          return 1;    
          }    
             
          6. 電話號(hào)碼格式驗(yàn)證   
          ---------------------------------------     
          //函數(shù)名:fucCheckTEL    
          //功能介紹:檢查是否為電話號(hào)碼    
          //參數(shù)說(shuō)明:要檢查的字符串    
          //返回值: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)    
          {    
          //說(shuō)明有字符不合法    
          return 0;    
          }    
          }    
          //說(shuō)明合法    
          return 1;    
          }   
            
          7. 判斷輸入是否為中文的函數(shù)  
          ---------------------------------------     
          function ischinese(s){  
          var ret=true;  
          for(var i=0;i<s.length;i++)  
          ret=ret && (s.charCodeAt(i)>=10000);  
          return ret;  
          }   
            
          8. 綜合的判斷用戶輸入的合法性的函數(shù) 
          ---------------------------------------     
          <script language="javascript"> 
          //限制輸入字符的位數(shù)開始 
          //m是用戶輸入,n是要限制的位數(shù) 
          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. 判斷用戶名是否為數(shù)字字母下滑線
          ---------------------------------------     
          function notchinese(str){
          var reg=/[^A-Za-z0-9_]/g
              if (reg.test(str)){
              return (false);
              }else{
          return(true);    }
          }

          11. form文本域的通用校驗(yàn)函數(shù)
          ---------------------------------------     
          作用:檢測(cè)所有必須非空的input文本,比如姓名,賬號(hào),郵件地址等等。
          該校驗(yàn)現(xiàn)在只針對(duì)文本域,如果要針對(duì)form里面的其他域?qū)ο螅梢愿淖兣袛鄺l件。

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

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

          function dovalidate()
          {
          fm=document.forms[0] //只檢測(cè)一個(gè)form,如果是多個(gè)可以改變判斷條件
              for(i=0;i<fm.length;i++)
              { 
              //檢測(cè)判斷條件,根據(jù)類型不同可以修改
              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")//數(shù)字校驗(yàn)
                   {
                           if(isNaN(fm[i].value))
                          { str_warn2=fm[i].title+"格式不對(duì)";
                          alert(str_warn2);
                          fm[i].focus();
                           return false;
                           }
                  }
              }
              return true;
          }


          2 >表單提交驗(yàn)證類


          2.1 表單項(xiàng)不能為空

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

          2.2 比較兩個(gè)表單項(xiàng)的值是否相同

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

          2.3 表單項(xiàng)只能為數(shù)字和"_",用于電話/銀行帳號(hào)驗(yàn)證上,可擴(kuò)展到域名注冊(cè)等

          <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("您的電話號(hào)碼不合法!");
          document.form.TEL.focus();
          return false;
          }
          return true;
          }
          -->
          </script>


          2.4 表單項(xiàng)輸入數(shù)值/長(zhǎng)度限定

          <script language="javascript">
          <!--
          function CheckForm()
          {
          if (document.form.count.value > 100 || document.form.count.value < 1)
          {
          alert("輸入數(shù)值不能小于零大于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 中文/英文/數(shù)字/郵件地址合法性判斷

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

          function isEnglish(name) //英文值檢測(cè)
          {
          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) //中文值檢測(cè)
          {
          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值檢測(cè)
          {
          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) //數(shù)值檢測(cè)
          {
          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 限定表單項(xiàng)不能輸入的字符

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

          function contain(str,charset)// 字符串包含測(cè)試函數(shù)
          {
          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) | 評(píng)論 (0)編輯 收藏
          Java/J2EE中文問(wèn)題終極解決之道
           
          Java中文問(wèn)題一直困擾著很多初學(xué)者,如果了解了Java系統(tǒng)的中文問(wèn)題原理,我們就可以對(duì)中文問(wèn)題能夠采取根本的解決之道。

            最古老的解決方案是使用String的字節(jié)碼轉(zhuǎn)換,這種方案問(wèn)題是不方便,我們需要破壞對(duì)象封裝性,進(jìn)行字節(jié)碼轉(zhuǎn)換。

            還有一種方式是對(duì)J2EE容器進(jìn)行編碼設(shè)置,如果J2EE應(yīng)用系統(tǒng)脫離該容器,則會(huì)發(fā)生亂碼,而且指定容器配置不符合J2EE應(yīng)用和容器分離的原則。

            在Java內(nèi)部運(yùn)算中,涉及到的所有字符串都會(huì)被轉(zhuǎn)化為UTF-8編碼來(lái)進(jìn)行運(yùn)算。那么,在被Java轉(zhuǎn)化之前,字符串是什么樣的字符集? Java總是根據(jù)操作系統(tǒng)的默認(rèn)編碼字符集來(lái)決定字符串的初始編碼,而且Java系統(tǒng)的輸入和輸出的都是采取操作系統(tǒng)的默認(rèn)編碼。

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

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

            輸出途徑也有幾種:第一種是JSP頁(yè)面的輸出。由于JSP頁(yè)面已經(jīng)被編譯成Servlet,那么在輸出時(shí),也將根據(jù)操作系統(tǒng)的默認(rèn)編碼來(lái)選擇輸出編碼,除非指定輸出編碼方式;還有輸出途徑是數(shù)據(jù)庫(kù),將字符串輸出到數(shù)據(jù)庫(kù)。

            由此看來(lái),一個(gè)J2EE系統(tǒng)的輸入輸出是非常復(fù)雜,而且是動(dòng)態(tài)變化的,而Java是跨平臺(tái)運(yùn)行的,在實(shí)際編譯和運(yùn)行中,都可能涉及到不同的操作系統(tǒng),如果任由Java自由根據(jù)操作系統(tǒng)來(lái)決定輸入輸出的編碼字符集,這將不可控制地出現(xiàn)亂碼。

            正是由于Java的跨平臺(tái)特性,使得字符集問(wèn)題必須由具體系統(tǒng)來(lái)統(tǒng)一解決,所以在一個(gè)Java應(yīng)用系統(tǒng)中,解決中文亂碼的根本辦法是明確指定整個(gè)應(yīng)用系統(tǒng)統(tǒng)一字符集。

            指定統(tǒng)一字符集時(shí),到底是指定ISO8859_1 、GBK還是UTF-8呢? 

            (1)如統(tǒng)一指定為ISO8859_1,因?yàn)槟壳按蠖鄶?shù)軟件都是西方人編制的,他們默認(rèn)的字符集就是ISO8859_1,包括操作系統(tǒng)Linux和數(shù)據(jù)庫(kù)MySQL等。這樣,如果指定Jive統(tǒng)一編碼為ISO8859_1,那么就有下面3個(gè)環(huán)節(jié)必須把握:

            開發(fā)和編譯代碼時(shí)指定字符集為ISO8859_1。

            運(yùn)行操作系統(tǒng)的默認(rèn)編碼必須是ISO8859_1,如Linux。

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

            (2)如果統(tǒng)一指定為GBK中文字符集,上述3個(gè)環(huán)節(jié)同樣需要做到,不同的是只能運(yùn)行在默認(rèn)編碼為GBK的操作系統(tǒng),如中文Windows。

            統(tǒng)一編碼為ISO8859_1和GBK雖然帶來(lái)編制代碼的方便,但是各自只能在相應(yīng)的操作系統(tǒng)上運(yùn)行。但是也破壞了Java跨平臺(tái)運(yùn)行的優(yōu)越性,只在一定范圍內(nèi)行得通。例如,為了使得GBK編碼在linux上運(yùn)行,設(shè)置Linux編碼為GBK。

            那么有沒(méi)有一種除了應(yīng)用系統(tǒng)以外不需要進(jìn)行任何附加設(shè)置的中文編碼根本解決方案呢?

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

            一個(gè)J2EE應(yīng)用系統(tǒng)需要做下列幾步工作:

          1. 開發(fā)和編譯代碼時(shí)指定字符集為UTF-8。JBuilder和Eclipse都可以在項(xiàng)目屬性中設(shè)置。 
          2. 使用過(guò)濾器,如果所有請(qǐng)求都經(jīng)過(guò)一個(gè)Servlet控制分配器,那么使用Servlet的filter執(zhí)行語(yǔ)句,將所有來(lái)自瀏覽器的請(qǐng)求(request)轉(zhuǎn)換為UTF-8,因?yàn)闉g覽器發(fā)過(guò)來(lái)的請(qǐng)求包根據(jù)瀏覽器所在的操作系統(tǒng)編碼,可能是各種形式編碼。關(guān)鍵一句:
            request.setCharacterEncoding("UTF-8")。
            網(wǎng)上有此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. 設(shè)定數(shù)據(jù)庫(kù)連接方式是UTF-8。例如連接MYSQL時(shí)配置URL如下:
            jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=UTF-8
            注意,上述寫法是JBoss的mysql-ds.xml寫法,多虧網(wǎng)友提示,在tomcat中&amp;要寫成&即可。一般其他數(shù)據(jù)庫(kù)都可以通過(guò)管理設(shè)置設(shè)定UTF-8 
          6. 其他和外界交互時(shí)能夠設(shè)定編碼時(shí)就設(shè)定UTF-8,例如讀取文件,操作XML等。 
               筆者以前在Jsp/Servlet時(shí)就采取這個(gè)原則,后來(lái)使用Struts、Tapestry、EJB、Hibernate、Jdon等框架時(shí),從未被亂碼困擾過(guò),可以說(shuō)適合各種架構(gòu)。希望本方案供更多初學(xué)者分享,減少Java/J2EE的第一個(gè)攔路虎,也避免因?yàn)椴扇∫恍┡R時(shí)解決方案,導(dǎo)致中文問(wèn)題一直出現(xiàn)在新的技術(shù)架構(gòu)中。 
          posted @ 2007-04-27 15:24 摩西 閱讀(395) | 評(píng)論 (0)編輯 收藏
              
          <entry key="webaddsuccess" value="redirect:/web.do?method=friendSitelist"/>
          posted @ 2007-04-27 09:30 摩西 閱讀(904) | 評(píng)論 (2)編輯 收藏
          jsp頁(yè)面代碼: 
          <% boolean isClubManager=false;
            Long regionid2 = ((Region)request.getSession().getAttribute("RegionSession")).getId();
            isClubManager=newsPostService.isClubManager(regionid2);
            Region region=(Region)request.getSession().getAttribute("RegionSession");
            String memo=region.getParent().getMemo();
            request.setAttribute("memo",memo);
            %>

          .........

          <gd:label maxLength="150"  text="${memo}"/>
          posted @ 2007-04-24 14:02 摩西 閱讀(1867) | 評(píng)論 (0)編輯 收藏

          ClientService.java

          package com.soft.client;

          import org.apache.axis.client.Service;
          import javax.xml.rpc.ServiceException;
          import java.net.MalformedURLException;
          import org.apache.axis.client.Call;
          import org.apache.axis.encoding.ser.BeanDeserializerFactory;
          import javax.xml.namespace.QName;
          import org.apache.axis.encoding.ser.BeanSerializerFactory;
          import java.rmi.RemoteException;

          public class ClientService {
              public ClientService() {
              }
              public UserDTO getUserDTO() {
                  String endpoint = "http://localhost:8080/WebModule/services/Myservice";
                  QName qset = new QName("urn:Myservice", "UserDTO");
                  QName qmethod = new QName("urn:Myservice", "getUserDTO");
                  Class clsUserDTO = UserDTO.class;

                  UserDTO dto = new UserDTO();
                  Service service = new Service();
                  try {
                      Call call = (Call) service.createCall();
                      call.registerTypeMapping(clsUserDTO, qset,
                                               new BeanSerializerFactory(clsUserDTO, qset),
                                               new BeanDeserializerFactory(clsUserDTO,qset));
                      call.setTargetEndpointAddress(new java.net.URL(endpoint));
                      call.setOperationName(qmethod);
                      call.setReturnClass(clsUserDTO);
                      dto = (UserDTO) call.invoke(new Object[] {});
                     
                     
                  } catch (ServiceException e) {
                      // TODO Auto-generated catch block
                      e.printStackTrace();
                  } catch (MalformedURLException e) {
                      // TODO Auto-generated catch block
                      e.printStackTrace();
                  } catch (RemoteException e) {
                      // TODO Auto-generated catch block
                      e.printStackTrace();
                  }
                  return dto;
              }
              public static void main(String[] args) {
                  ClientService cs = new ClientService();
                  UserDTO user = cs.getUserDTO();
                  System.out.println(user.getPassword());
                  System.out.println(user.getUsername());
              }
          }


          UserDTO.java
          package com.soft.client;


          public class UserDTO {

                  private String username;
                  private String password;

                  public String getPassword() {
                          return password;
                  }
                  public void setPassword(String password) {
                          this.password = password;
                  }
                  public String getUsername() {
                          return username;
                  }
                  public void setUsername(String username) {
                          this.username = username;
                  }

          }

          posted @ 2007-04-16 16:58 摩西 閱讀(285) | 評(píng)論 (0)編輯 收藏
          報(bào)錯(cuò)信息:

          org.apache.jasper.JasperException: <h3>Validation error messages from TagLibraryValidator for c</h3><p>null: com.caucho.xml.XmlParseException: stream:276: expected character in cdata at `?' (\ufffd)</p><h3>Validation error messages from TagLibraryValidator for sql</h3><p>null: com.caucho.xml.XmlParseException: stream:276: expected character in cdata at `?' (\ufffd)</p><h3>Validation error messages from TagLibraryValidator for x</h3><p>null: com.caucho.xml.XmlParseException: stream:276: expected character in cdata at `?' (\ufffd)</p><h3>Validation error messages from TagLibraryValidator for fmt</h3><p>null: com.caucho.xml.XmlParseException: stream:276: expected character in cdata at `?' (\ufffd)</p>
          posted @ 2007-04-16 16:07 摩西 閱讀(1509) | 評(píng)論 (1)編輯 收藏
          <script language="javascript">document.write(week[${status.index}])</script>
          posted @ 2007-04-16 14:42 摩西 閱讀(1178) | 評(píng)論 (2)編輯 收藏
          .jsp加入代碼:
          <c:set scope="session" value="${page.result}" var="page"></c:set>
          <c:set value="${page1.result}" var="page1" scope="session"></c:set>
          <c:set value="${page2.result}" var="page2" scope="session"></c:set>
          報(bào)錯(cuò):
          avax.servlet.jsp.el.ELException: The "." operator was supplied with an index value of type "java.lang.String" to be applied to a List or array, but that value cannot be converted to an integer.
          可見這種<c:set>的用法是錯(cuò)誤的!!!!!!

          posted @ 2007-04-16 13:49 摩西 閱讀(1331) | 評(píng)論 (0)編輯 收藏

                import java.util.Map.Entry;
                 
               private static Map oldvote=new HashMap();
                     ...............................
                   ModelAndView mav = new ModelAndView();
                  String voteid = ServletRequestUtils.getRequiredStringParameter(request,
                          "voteid");
                  String ip = ServletRequestUtils.getStringParameter(request, "ip");

                  //遍歷HasMap
                  Boolean isoldvote=false;
                  Iterator it=oldvote.entrySet().iterator();
                  while(it.hasNext()){
                      Entry  entry=(Entry) it.next();
                      Object key=entry.getKey();
                      Object value=entry.getValue();
                      if(key.equals(voteid)&&value.equals(ip)){
                       isoldvote=true;
                       break;
                      }
                  }

                  if (isoldvote) {
                   ...............................

          posted @ 2007-04-14 09:41 摩西 閱讀(371) | 評(píng)論 (0)編輯 收藏
          <a href="javascript:history.go(-1);">[返回]</javascript>
          posted @ 2007-04-14 09:39 摩西 閱讀(1757) | 評(píng)論 (1)編輯 收藏

          1.
          <html>
          ?<head>
          ??<title>transPara.htm</title>
          ?</head>
          <body>
          ?<form method="POST" action="acceptPara.jsp">
          ? ??<p align="center">
          ??姓 名:<input type="text" name="name" size="20"><br>
          ? ??年 齡:&nbsp;&nbsp;&nbsp; <input type="text" name="age" size="15"><br>
          ? ??性 別:&nbsp;&nbsp;&nbsp;
          ???<input type="radio" value="male" checked name="sex">
          ????男&nbsp;&nbsp;&nbsp;&nbsp;?
          ? ???<input type="radio" name="sex" value="female">女</p>
          ? ??<p align="center">
          ???<input type="submit" value="submit" name="submit">
          ? ???<input type="reset" value="reset" name="reset"></p>
          ?</form>
          </body>
          </html>

          2.
          <html>

          <%@ page contentType="text/html;charset=gb2312"%>
          <jsp:useBean id="atest"? class="test.AcceptPara"/>

          <head><title>acceptPara.jsp</title></head>

          <body>
          <jsp:setProperty name="atest" property="*"/>?? //? ***將javabean中的屬性自動(dòng)與html提交過(guò)來(lái)的變量匹配***********
          Value of property "name" :
          <jsp:getProperty name="atest" property="name"/><br>
          Value of property "age" :
          <jsp:getProperty name="atest" property="age"/><br>
          Value of property "sex" :
          <jsp:getProperty name="atest" property="sex"/><br>
          Value of property "submit" :
          <jsp:getProperty name="atest" property="submit"/><br>

          </body>
          </html>



          3.
          package test;//?? 在一些tomcat舊版本包定義一定要有,且在jsp引用中如下:<jsp:useBean id="atest"? class="test.AcceptPara"/>? 編譯后放在\WEB-INF\classes\test\中

          public class AcceptPara{

          ?String name;
          ?int age;
          ?String sex;
          ?String submit;
          ?
          ?public void setName(String value){
          ??name=value;
          ?}
          ?
          ?public String getName(){
          ??return name;
          ?}
          ?
          ?public void setAge(int value){
          ??age=value;
          ?}
          ?
          ?public int getAge(){
          ??return age;
          ?}
          ?
          ?public void setSex(String value){
          ??sex=value;
          ?}
          ?
          ?public String getSex(){
          ??return sex;
          ?}
          ?
          ?public void setSubmit(String value){
          ??submit=value;
          ?}
          ?
          ?public String getSubmit(){
          ??return submit;
          ?}
          ??
          ?public void acceptPara(){}
          ?
          }

          posted @ 2006-09-08 12:41 摩西 閱讀(767) | 評(píng)論 (2)編輯 收藏
          1.Forward_demo.htm:

          <html>
          <head><title>Forward_demo1.htm</title></head>
          <body>
          <form? action="demo1.jsp" method="POST">
          用戶:<input type="text" name="username" size="20"><br>
          密碼:<input type="password" name="password" size="20"><br>
          <input type="radio" name="select" value="manage" checked>管理<br>
          <input type="radio" name="select" value="statictic">資料<br>
          <input type="submit" name="login" value="submit">&nbsp;
          <input type="reset" name="reset" value="重寫">
          </form>
          </body>
          </html>
          2.demo1.jsp:
          <html>
          <head><title>demo1.jsp</title></head>
          <body>
          <%
          String username,password,choice;
          username=request.getParameter("username");
          password=request.getParameter("password");
          choice=request.getParameter("select");
          if (choice.equals("manage")){
          %>
          ??<jsp:forward page="demo1.1.jsp">
          ??<jsp:param name="username" value="<%=username%>"/>
          ??<jsp:param name="password" value="<%=password%>"/>
          ??</jsp:forward>
          <%?}else{
          ???//user select statistic
          %>
          ??<jsp:forward page="demo1.2.jsp">
          ??<jsp:param name="username" value="<%=username%>"/>
          ??<jsp:param name="password" value="<%=password%>"/>
          ??</jsp:forward>
          <%
          ??}
          %>
          </body>
          </html>

          3.demo1.1.jsp:
          <html>
          ?<head>
          ??<title>demo1.1.jsp</title>
          ?</head>
          <body>
          ??This is the Management Page!<br>
          <%
          ??String user,pwd;?
          ??user=request.getParameter("username");
          ??pwd=request.getParameter("password");
          %>
          ??username is: <%=user%><br>
          ??password is: <%=pwd%><br>
          </body>
          </html>
          4.demo1.2.jsp:
          <html>
          ?<head>
          ??<title>demo1.2.jsp</title>
          ?</head>
          <body>
          ??This is the Statistic Page!<br>
          <%
          ??String user,pwd;?
          ??user=request.getParameter("username");
          ??pwd=request.getParameter("password");

          %>
          ??username is: <%=user%><br>
          ??password is: <%=pwd%><br>
          </body>
          </html>
          posted @ 2006-09-07 14:21 摩西 閱讀(4863) | 評(píng)論 (2)編輯 收藏

          過(guò)程:
          1.停掉MSSQLSERVER,將MSSQL安裝目錄下的E:\Program Files\Microsoft SQL

          Server\MSSQL\Data\pubs.mdf和E:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf文

          件移走。
          2.重新啟動(dòng)MSSQLSERVER,在SQL Server Enterprise Manager中可看到PUBS的圖標(biāo)是灰色的加了個(gè)'(置疑

          )',刪除PUBS。至此是為了模擬Pubs數(shù)據(jù)庫(kù)只留下了pubs.mdf,(pubs_log.ldf不再用到)。
          3.將pubs.mdf移到MSSQL安裝目錄下E:\Program Files\Microsoft SQL Server\MSSQL\Data\
          4.在SQL查詢分析器中執(zhí)行 exec sp_attach_db 'pubs' ,'E:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'
          會(huì)有錯(cuò)誤提示:
          設(shè)備激活錯(cuò)誤。物理文件名 'e:\Program Files\Microsoft SQL Server\MSSQL\data\pubs_log.ldf' 可

          能有誤。
          已創(chuàng)建名為 'E:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.LDF' 的新日志文件。
          不過(guò)沒(méi)關(guān)系,因?yàn)樾氯罩疚募褎?chuàng)建了,呵呵。
          用此方法只要有.mdf文件,就能回復(fù)數(shù)據(jù)庫(kù)。

          posted @ 2006-09-06 11:58 摩西 閱讀(3804) | 評(píng)論 (1)編輯 收藏

          ??????? 試題是模仿GRE考試,在這實(shí)例中,編了一套"中文GRE測(cè)試"總共有十道題,讀者可自行增加.
          ??????? 注:實(shí)例中的試題,可選答案,正確答案封裝在文件exam.java 中.用index.jsp文件來(lái)實(shí)現(xiàn)對(duì)問(wèn)題的調(diào)用.核對(duì),顯示結(jié)果.所以要先編譯exam.java成exam.class ,之后index.jsp才能調(diào)用.

          少說(shuō)費(fèi)話--直入主題:
          1.在Tomcat目錄下的webapps目錄下新建book文件夾,
          1.5 在Tomcat目錄下的conf/Catalina/localhost目錄下新建一個(gè)book.xml (這一步很重要!!)
          ?寫入:
          <?xml version='1.0' encoding='utf-8'?>
          <Context docBase="E:/Program Files/Apache Software Foundation/Tomcat 5.0/webapps/book" path="/book" reloadable="true">
          </Context>
          2.在book文件夾下新建WEB-INF文件夾.
          2.5 在WEB-INF目錄下新建web.xml 寫入:
          <?xml version="1.0" encoding="UTF-8"?>
          <web-app version="2.4"
          ?xmlns="
          http://java.sun.com/xml/ns/j2ee"
          ?xmlns:xsi="
          http://www.w3.org/2001/XMLSchema-instance"
          ?xsi:schemaLocation="
          http://java.sun.com/xml/ns/j2ee
          ?
          http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

          </web-app>
          3.在WEB-INF文件夾下新建classes文件夾.
          4.把index.jsp? exam.java 放到book目錄下.
          5.用javac? exam.java? 編譯exam.java成exam.jsp? (可在命令行中運(yùn)行此步)
          6.exam.jsp 放到WEB-INF/classes/exam目錄下.
          7.啟動(dòng)tomcat.
          8.輸入地址: http://localhost:8080/book???? 回車 OK !!!!
          Image00003.jpg


          附index.jsp代碼:
          <html>

          <head>
          <META http-equiv=Content-Type content="text/html; charset=GB2312">
          <title>網(wǎng)上測(cè)試</title>
          </head>

          <body>
          <%@ page language="java" contentType="text/html;charset=GB2312" buffer="none"%>
          <jsp:useBean id="exam" scope="session" class="exam.exam"/>
          <FONT SIZE="+2"><B>
          <%=exam.getExamName()%>
          </B></FONT>
          <br><br>
          <%
          int current=exam.getCurrent();
          String reset=null;
          reset=request.getParameter("Reset");
          if(reset==null){
          ?reset="";
          }
          if(reset.equals("1"))
          {
          ?exam.reset();
          }
          int iqn=0;
          String questionNum=null;
          questionNum=request.getParameter("QuestionNum");

          if(questionNum==null)
          {
          ?iqn=0;
          }
          else
          {
          ?Integer tmpInt=new Integer(questionNum);
          ?iqn=tmpInt.intValue();
          }
          if(iqn!=0)
          {
          ?current++;
          ?exam.setCurrent(current);
          }
          ?String answer=null;
          ?answer=request.getParameter("Answer");
          ?
          if(answer==null)
          {
          ?answer="";
          }
          if(exam.getCurrent()>exam.getCount())
          {
          ?if(exam.getCorrect()>=6)
          ?{
          %>
          ??恭喜!你以<%=exam.getCorrect()*10 %>分的成績(jī)通過(guò)了測(cè)試!<BR>
          <%
          ?}
          ?else
          ?{
          %>
          ??對(duì)不起,你需要60分以上的成績(jī)才能通過(guò)測(cè)試!<BR>
          ??你可以按<A HREF="exam.jsp?Reset=1">這里</A>重新進(jìn)行測(cè)試。<BR>
          <%
          ?}
          }
          else
          {
          ?if(iqn==0)
          ?{
          ??if(answer. equals(exam.getCorrectAnswer(exam.getCurrent()-1)))
          ??{
          ???exam.setCorrect(exam.getCorrect()+1);
          ??}
          ?}
          ?else
          ?{
          ??if(answer.equals(exam.getCorrectAnswer(exam.getCurrent()-2)))
          ??{
          ???exam.setCorrect(exam.getCorrect()+1);
          ??}
          ?}
          %>
          ?<FORM action="exam.jsp" method="post">
          ?<input type="hidden" name="QuestionNum" value="<%=current%>">
          <P>
          ?總共<%=exam.getCount()%>個(gè)問(wèn)題,現(xiàn)在是第<%=exam.getCurrent()%>個(gè)問(wèn)題
          </P>
          <br>

          <b>
          ?<%=current%>
          </b>

          <%
          out.println(exam.getExamQuestion(current-1));
          %>
          <br>
          <input type="radio" name="Answer" value="A">
          <%
          out.println(exam.getExamAnswer(current-1,0));
          %>
          <br>

          <input type="radio" name="Answer" value="B">
          <%
          out.println(exam.getExamAnswer(current-1,1));
          %>
          <br>

          <input type="radio" name="Answer" value="C">
          <%
          out.println(exam.getExamAnswer(current-1,2));
          %>
          <br>

          <input type="radio" name="Answer" value="D">
          <%
          out.println(exam.getExamAnswer(current-1,3));
          %>
          <br>

          <input type="submit" value="確定">
          </form>
          <%
          }
          %>

          </body>

          </html>


          exam.java代碼:
          package exam;
          public class exam
          {
          ?int count;
          ?int current;
          ?int correct;
          ?String examName;
          //?String answer;
          ?String[] examQuestion=
          ?{//存放所有的問(wèn)題
          ??"1.科學(xué)常識(shí):下列有關(guān)科學(xué)家的敘述,何者正確?",
          ??"2.牛頓三大運(yùn)動(dòng)定律的第一定律是:",
          ??"3.兩個(gè)報(bào)名參加海軍的年輕人被問(wèn)道:\"你們會(huì)游泳嗎?\"他倆愣住了。過(guò)了一會(huì)兒,其中一個(gè)人回答說(shuō):\"怎么回事,難道船不夠用嗎?\"這篇文章的主題是什么",
          ??"4.接上題。考官為什么要問(wèn)這兩個(gè)人游泳的事?",
          ??"5.男:看那個(gè)妹妹,好靚哦!女:看你個(gè)大頭鬼!問(wèn):這個(gè)女的是什么意思?",
          ??"6.男:今天天氣不錯(cuò)。女:可不是咋得!問(wèn):這個(gè)女的什么意思?",
          ??"7.男:我把撿來(lái)的錢包交給警察了。男:我KAO!",
          ??"8.女:您好,您撥叫的用戶沒(méi)有開機(jī),要留言請(qǐng)留言,不留言請(qǐng)掛機(jī)。問(wèn):這是發(fā)生在什么時(shí)候?",
          ??"9.ABCD四教授申請(qǐng)中科院院士,如果以下事實(shí)為真,誰(shuí)最有資格入選",
          ??"10.以下是摘自電影《大話西游》中唐僧的一句臺(tái)詞,選項(xiàng)中可能正確的是人和妖精都是媽生的,不同的人是人他媽的,妖是妖他媽的,妖要有了仁慈之心,就不是妖了,而是人妖"
          ?};
          ?String[][] examAnswer=
          ?{//問(wèn)題可選的答案
          ??{"(A)天文學(xué)家常常到天體營(yíng)去研究天文的奧秘","(B)地質(zhì)學(xué)家常常到地牢去研究地層結(jié)構(gòu)","(C)大氣科學(xué)家常常坐熱氣球到天空研究臺(tái)風(fēng)","(D)以上都不對(duì)"},
          ??{"(A)靜如處子 動(dòng)于脫兔","(B)靜中有動(dòng) 動(dòng)中有靜","(C)運(yùn)動(dòng)絕對(duì) 靜止相對(duì)","(D)靜者恒靜 動(dòng)者恒動(dòng)"},
          ??{"(A)參軍","(B)打魚","(C)游泳","(D)造船"},
          ??{"(A)他想讓他們教他游泳","(B)他想知道這兩個(gè)人會(huì)不會(huì)被淹死","(C)他擔(dān)心船不夠用","(D)他想舉行游泳比賽"},
          ??{"(A) 這個(gè)男的頭有病","(B)這個(gè)男的頭比較大","(C)這個(gè)男的看見的是鬼","(D)這個(gè)女的有點(diǎn)吃醋"},
          ??{"(A)今天天氣不好","(B)今天天氣很好","(C)這女的沒(méi)聽清","(D)這女的不知道"},
          ??{"(A)他很驚訝","(B)他丟了錢包","(C)他想揍第一個(gè)人","(D)他累了想找個(gè)地方靠靠"},
          ??{"(A)打電話","(B) 開飛機(jī)","(C) 發(fā)EMAIL","(D)坐飛機(jī)"},
          ??{"(A)是中國(guó)改革開放以后第一個(gè)公費(fèi)留德的四十歲以下的女性的在微電子領(lǐng)域的花了少于三年畢業(yè)的毅然回國(guó)的博士","(B)是在使用黑白膠卷照出彩照這一國(guó)際前沿領(lǐng)域做出突破貢獻(xiàn)的科學(xué)家","(C)畢業(yè)于我國(guó)著名的海南熱帶作物學(xué)院,學(xué)慣東西,差一點(diǎn)就復(fù)制出了恐龍。而且率先提出,中國(guó)人才沒(méi)有斷層,只是待遇和職稱斷層","(D)經(jīng)常陪李嵐清打敲三家和拱豬,對(duì)高校合并做出突出貢獻(xiàn)"},
          ??{"(A)人妖是指:媽媽還健在就去做了和尚的妖精","(B)人和妖精沒(méi)有本質(zhì)區(qū)別,因?yàn)樗麄兌际峭晃慌可?,"(C)唐僧為了超度一只妖精,不惜和妖精一起罵人","(D)唐僧暗示自己的母親原來(lái)就是一只妖精變的"}
          ?};
          ?
          ?String[] correctAnswer=
          ?{//正確的答案
          ??"D","C","A","B","D","B","A","A","B","C"
          ?};

          ?String message;
          ?
          ?public exam()
          ?{//重設(shè)測(cè)試
          ??reset();
          ?}

          ?public void reset()
          ?{//重設(shè)測(cè)試
          ??count=10;
          ??current=1;
          ??correct=0;
          ??examName="中文GRE考試樣題";
          ?}

          ?public void setCount(int c)
          ?{
          ??count=c;
          ?}

          ?public int getCount()
          ?{
          ??return count;
          ?}

          ?public void setCurrent(int c)
          ?{
          ??current=c;
          ?}

          ?public int getCurrent()
          ?{
          ??return current;
          ?}

          ?public void setCorrect(int c)
          ?{
          ??correct=c;
          ?}

          ?public int getCorrect()
          ?{
          ??return correct;
          ?}

          ?public void setExamName(String name)
          ?{
          ??examName=name;
          ?}

          ?public String getExamName()
          ?{
          ??return examName;
          ?}

          ?public void setCorrectAnswer(String[] answer)
          ?{
          ??correctAnswer=answer;
          ?}

          ?public void setCorrectAnswer(int i,String answer)
          ?{
          ??correctAnswer[i]=answer;
          ?}

          ?public String getCorrectAnswer(int i)
          ?{
          ??return correctAnswer[i];
          ?}

          ?public String[] getCorrectAnswer()
          ?{
          ??return correctAnswer;
          ?}

          ?public void setExamQuestion(String[] question)
          ?{
          ??examQuestion=question;
          ?}

          ?public void setExamQuestion(int i,String question)
          ?{
          ??examQuestion[i]=question;
          ?}

          ?public String[] getExamQuestion()
          ?{
          ??return examQuestion;
          ?}

          ?public String getExamQuestion(int i)
          ?{
          ??return examQuestion[i];
          ?}

          ?public void setExamAnswer(String[][] answer)
          ?{
          ??examAnswer=answer;
          ?}

          ?public void setExamAnswer(int i,String[] answer)
          ?{
          ??examAnswer[i]=answer;
          ?}

          ?public void setExamAnswer(int i ,int j,String answer)
          ?{
          ??examAnswer[i][j]=answer;
          ?}
          ?
          ?public String[][] getExamAnswer()
          ?{
          ??return examAnswer;
          ?}

          ?public String[] getExamAnswer(int i)
          ?{
          ??return examAnswer[i];
          ?}

          ?public String getExamAnswer(int i,int j)
          ?{
          ??return examAnswer[i][j];
          ?}
          }

          posted @ 2006-09-06 10:57 摩西 閱讀(295) | 評(píng)論 (0)編輯 收藏

           經(jīng)常看到j(luò)sp的初學(xué)者問(wèn)tomcat下如何配置jsp、servlet和bean的問(wèn)題,于是總結(jié)了一下如何tomcat下配置jsp、servlet和ben,希望對(duì)那些初學(xué)者有所幫助。

          一、開發(fā)環(huán)境配置

          第一步:下載j2sdk和tomcat:到sun官方站(http://java.sun.com/j2se/1.5.0/download.jsp)下載j2sdk,注意下載版本為Windows Offline Installation的SDK,同時(shí)最好下載J2SE 1.5.0 Documentation,然后到tomcat官方站點(diǎn)(http://jakarta.apache.org/site/downloads/downloads_tomcat-5.cgi)下載tomcat(下載最新5.5.9版本的tomcat);

          第二步:安裝和配置你的j2sdk和tomcat:執(zhí)行j2sdk和tomcat的安裝程序,然后按默認(rèn)設(shè)置進(jìn)行安裝即可。

          1.安裝j2sdk以后,需要配置一下環(huán)境變量,在我的電腦->屬性->高級(jí)->環(huán)境變量->系統(tǒng)變量中添加以下環(huán)境變量(假定你的j2sdk安裝在c:\j2sdk1.5.0):

          JAVA_HOME=c:\j2sdk1.5.0
          classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;(.;一定不能少,因?yàn)樗懋?dāng)前路徑)
          path=%JAVA_HOME%\bin

          接著可以寫一個(gè)簡(jiǎn)單的java程序來(lái)測(cè)試J2SDK是否已安裝成功:

          public class Test{
          public static void main(String args[]){
          System.out.println("This is a test program.");
          }
          }

          將上面的這段程序保存為文件名為Test.java的文件。

          然后打開命令提示符窗口,cd到你的Test.java所在目錄,然后鍵入下面的命令

          javac Test.java
          java Test

          此時(shí)如果看到打印出來(lái)This is a test program.的話說(shuō)明安裝成功了,如果沒(méi)有打印出這句話,你需要仔細(xì)檢查一下你的配置情況。

          2.安裝Tomcat后,在我的電腦->屬性->高級(jí)->環(huán)境變量->系統(tǒng)變量中添加以下環(huán)境變量(假定你的tomcat安裝在c:\tomcat):

          CATALINA_HOME=c:\tomcat
          CATALINA_BASE=c:\tomcat

          然后修改環(huán)境變量中的classpath,把tomat安裝目錄下的common\lib下的(可以根據(jù)實(shí)際追加)servlet.jar追加到classpath中去,修改后的classpath如下:

          classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\common\lib\servlet.jar;

          接著可以啟動(dòng)tomcat,在IE中訪問(wèn)http://localhost:8080,如果看到tomcat的歡迎頁(yè)面的話說(shuō)明安裝成功了。

          第三步:建立自己的jsp app目錄

          1.到Tomcat的安裝目錄的webapps目錄,可以看到ROOT,examples, tomcat-docs之類Tomcat自帶的的目錄;
          2.在webapps目錄下新建一個(gè)目錄,起名叫myapp;
          3.myapp下新建一個(gè)目錄WEB-INF,注意,目錄名稱是區(qū)分大小寫的;
          4.WEB-INF下新建一個(gè)文件web.xml,內(nèi)容如下:

          <?xml version="1.0" encoding="ISO-8859-1"?>
          <!DOCTYPE web-app
          PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
          "
          http://java.sun.com/dtd/web-app_2_3.dtd ">
          <web-app>
          <display-name>My Web Application</display-name>
          <description>
          A application for test.
          </description>
          </web-app>

          5.在myapp下新建一個(gè)測(cè)試的jsp頁(yè)面,文件名為index.jsp,文件內(nèi)容如下:
          <html><body><center>
          Now time is: <%=new java.util.Date()%>
          </center></body></html>

          6.重啟Tomcat

          7.打開瀏覽器,輸入http://localhost:8080/myapp/index.jsp 看到當(dāng)前時(shí)間的話說(shuō)明就成功了。

          第四步:建立自己的Servlet:

          1.用你最熟悉的編輯器(建議使用有語(yǔ)法檢查的java ide)新建一個(gè)servlet程序,文件名為Test.java,文件內(nèi)容如下:

          package test;
          import java.io.IOException;
          import java.io.PrintWriter;
          import javax.servlet.ServletException;
          import javax.servlet.http.HttpServlet;
          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;
          public class Test extends HttpServlet {
          protected void doGet(HttpServletRequest request, HttpServletResponse response)
          throws ServletException, IOException {
          PrintWriter out=response.getWriter();
          out.println("<html><body><h1>This is a servlet test.</h1></body></html>");
          out.flush();
          }
          }

          2 .編譯
          將Test.java放在c:\test下,使用如下命令編譯:

          C:\Test>javac Test.java

          然后在c:\Test下會(huì)產(chǎn)生一個(gè)編譯后的servlet文件:Test.class

          3 .將結(jié)構(gòu)test\Test.class剪切到%CATALINA_HOME%\webapps\myapp\WEB-INF\classes下,也就是剪切那個(gè)test目錄到classes目錄下,如果classes目錄不存在,就新建一個(gè)。 現(xiàn)在webapps\myapp\WEB-INF\classes下有test\Test.class的文件目錄結(jié)構(gòu)

          4 .修改webapps\myapp\WEB-INF\web.xml,添加servlet和servlet-mapping

          編輯后的web.xml如下所示,紅色為添加的內(nèi)容:

          <?xml version="1.0" encoding="ISO-8859-1"?>
          <!DOCTYPE web-app
          PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
          "<web-app>
          <display-name>My Web Application</display-name>
          <description>
          A application for test.
          </description>
          <servlet>
          <servlet-name>Test</servlet-name>
          <display-name>Test</display-name>
          <description>A test Servlet</description>
          <servlet-class>test.Test</servlet-class>
          </servlet>

          <servlet-mapping>
          <servlet-name>Test</servlet-name>
          <url-pattern>/Test</url-pattern>
          </servlet-mapping>

          </web-app>

          這段話中的servlet這一段聲明了你要調(diào)用的Servlet,而servlet-mapping則是將聲明的servlet"映射"到地址/Test上

          5 .好了,重啟動(dòng)Tomcat,啟動(dòng)瀏覽器,輸入http://localhost:8080/myapp/Test 如果看到輸出This is a servlet test.就說(shuō)明編寫的servlet成功了。

          注意:修改了web.xml以及新加了class,都要重啟Tomcat

          第四步:建立自己的Bean:

          1.用你最熟悉的編輯器(建議使用有語(yǔ)法檢查的java ide)新建一個(gè)java程序,文件名為TestBean.java,文件內(nèi)容如下:

          package test;
          public class TestBean{
          private String name = null;
          public TestBean(String strName_p){
          this.name=strName_p;
          }
          public void setName(String strName_p){
          this.name=strName_p;
          }
          public String getName(){
          return this.name;
          }
          }

          2 .編譯

          將TestBean.java放在c:\test下,使用如下命令編譯:

          C:\Test>javac TestBean.java

          然后在c:\Test下會(huì)產(chǎn)生一個(gè)編譯后的bean文件:TestBean.class

          3 .將TestBean.class文件剪切到 %CATALINA_HOME%\webapps\myapp\WEB-INF\classes\test下,

          4 .新建一個(gè)TestBean.jsp文件,文件內(nèi)容為:

          <%@ page import="test.TestBean" %>
          <html><body><center>
          <%
          TestBean testBean=new TestBean("This is a test java bean.");
          %>
          Java bean name is: <%=testBean.getName()%>
          </center></body></html>

          5 .好了,重啟Tomcat,啟動(dòng)瀏覽器,輸入http://localhost:8080/myapp/TestBean.jsp 如果看到輸出Java bean name is: This is a test java bean.就說(shuō)明編寫的Bean成功了。

          這樣就完成了整個(gè)Tomcat下的jsp、servlet和javabean的配置。接下來(lái)需要做的事情就是多看書、多讀別人的好代碼,自己多動(dòng)手寫代碼以增強(qiáng)自己在這方面開發(fā)的能力了。

          jvm應(yīng)填寫到
          c:\j2sdk\bin

          給你一個(gè)簡(jiǎn)單的配置::::

          JSP環(huán)境配置心得

          首先要說(shuō)的是,使用jdk+tomcat完全可以配置我們的jsp服務(wù)器,不再需要其實(shí)任何東東,有很多文章介紹了Apache,其實(shí)根本用不著,一般的學(xué)習(xí)調(diào)試tomcat完全可以勝任了。

          安裝jdk后,tomcat在安裝之前會(huì)自動(dòng)找到j(luò)dk的安裝路徑,一路點(diǎn)擊"下一步",經(jīng)過(guò)一段時(shí)間的文件復(fù)制,最后"close",完成comcat的安裝。

          您最好去下載一個(gè)版本較高的tomcat,比如4.1以上的,因?yàn)樗恍枰O(shè)置太多的系統(tǒng)變量,右擊"我的電腦",選擇"屬性"->"高級(jí)"->"環(huán)境變量"->"系統(tǒng)變量",新建一個(gè)TOMCAT_HOME,值設(shè)置成你的tomcat所在的路徑,比如:D:\Program Files\Apache Group\Tomcat 5.5,配置完成。

          從開始菜單中找到tomcat選項(xiàng),一般打開順序是:開始->程序->Apache Tomcat 5.5,選擇"Start Tomcat",讓jsp服務(wù)器開始運(yùn)行,此時(shí)會(huì)打開一個(gè)類似Dos的窗口,會(huì)顯示一些相關(guān)的信息。

          如果您使用代理上網(wǎng),一定要先撤掉代理,不然您的jsp程序永遠(yuǎn)也得不到執(zhí)行。如果不是代理的,這一步就跳過(guò)了。

          打開瀏覽器,在地址欄中輸入:http://localhost:8080,如果看到有老虎(我也不知道是老虎還是貓)的畫面,恭喜您,您成功了一半。

          先來(lái)享受一下成功的喜悅吧,請(qǐng)輸入下面的代碼:

          <html>
          <head>
          <title>First Page</title>
          </head>
          <body>
          <H3>Today is: h
          <%= new java.util.Date() %>
          </H3>
          </body>
          </html>

          將該程序保存為:First.jsp,放到Tomcat的ROOT目錄下,然后在瀏覽器的地址欄中輸入:http://localhost:8080/First.jsp,(First.jsp跟我們保存的文件名的大小寫要一致)回車,如果不出意外,應(yīng)該可以看到形如Today is: h Fri Apr 11 08:32:38 CST 2003 的結(jié)果。

          注意:ROOT是tomcat的默認(rèn)虛擬目錄,如果要改成自己的虛擬目錄怎么辦呢?請(qǐng)繼續(xù)往下看吧。

          要改成自己的虛擬目錄,就要請(qǐng)出server.xml來(lái)了,該文件是一個(gè)配置文件,在Tomcat\conf目錄下,使用任何文本編輯軟件都能打開它,我們先找到下面一句:

          <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
          port="8080" minProcessors="5" maxProcessors="75"
          enableLookups="true" redirectPort="8443"
          acceptCount="100" debug="0" connectionTimeout="20000"
          useURIValidationHack="false" disableUploadTimeout="true" />

          這里的port="8080"就是端口,我們完全可以用別的端口來(lái)代替,但不能是被系統(tǒng)占用的端口(0--1023),這里簡(jiǎn)單提一下。

          下面我們?cè)偻抡遥瑫?huì)發(fā)現(xiàn)以下的語(yǔ)句:

          </Context>
          </Host>

          我們就應(yīng)該找到這兩個(gè)語(yǔ)句,如果不懂E文,您就認(rèn)定這兩個(gè)語(yǔ)句好了。然后我們將該語(yǔ)句更改如下:

          </Context>
          <Context path="/myjsp" debug="0" docBase="e:/myjsp" reloadable="true">
          </Context>
          </Host>

          這里的path="/myjsp"就是我們就配置的虛擬目錄了,以后在地址欄中輸入http://localhost:8080/myjsp即可。而docBase="e:/myjsp" 則是機(jī)器本地路徑,他們通過(guò)這個(gè)語(yǔ)句形成一個(gè)映射關(guān)系,其它照抄。

          將上面的First.jsp文件放到e:/myjsp目錄下,輸入http://localhost:8080/myjsp/First.jsp,是不是有一種喜上眉梢的感覺(jué)?

          在論壇里我見得最多的就是很多人不知道javaBean文件放到哪里,老實(shí)說(shuō)開始我也不知道,更令人不解的是,十個(gè)人有九種不同的說(shuō)法,這更讓我們茫然。其實(shí)這問(wèn)題也不是我們想像的那么復(fù)雜,我們以一個(gè)例子說(shuō)明:

          先建立一個(gè)java程序,代碼如下:

          package hall;
          public class SimpleBean {
          private String message = "No message specified";
          public String getMessage() {
          return(message);
          }
          public void setMessage(String message) {
          this.message = message;
          }
          }

          保存為SimpleBean.java,編譯后會(huì)生成一個(gè)包,其實(shí)就相當(dāng)于一個(gè)目錄,也就是SimpleBean.class會(huì)存放在hall目錄中,暫且保存起來(lái),將來(lái)備用。

          再輸入以下代碼:

          <HTML>
          <HEAD>
          <TITLE>Reusing JavaBeans in JSP</TITLE>
          </HEAD>
          <BODY>
          <CENTER>
          <TABLE BORDER=5>
          <TR><TH CLASS="TITLE">
          Reusing JavaBeans in JSP</TABLE>
          </CENTER>
          <P>
          <jsp:useBean id="test" class="hall.SimpleBean" />
          <jsp:setProperty name="test" property="message" value="Hello WWW" />
          <H1>Message: <I>
          <jsp:getProperty name="test" property="message" />
          </I></H1>
          </BODY>

          保存在我們剛才建立的虛擬目錄e:/myjsp下面,并命名為:BeanTest.jsp。

          現(xiàn)在我們應(yīng)該將hall(包)目錄放在哪兒呢?別急,我們先在e:/myjsp下建立一個(gè)文件夾WEB-INF,然后再在WEB-INF下建立一個(gè)classes文件夾,最后將hall目錄放到classes下,當(dāng)然,hall下的字節(jié)碼文件SimpleBean.class也一并要移過(guò)來(lái),而SimpleBean.java就和BeanTest.jsp放到同一目錄吧(可以不需要放的,自己試試)。

          重新啟動(dòng)機(jī)器(如果您試了好多次都不行,這一步一定要做),在瀏覽器中輸入:http://localhost:8080/myjsp/BeanTest.jsp,您看到了什么?呵,別告訴我您什么都沒(méi)看到,那肯定是您設(shè)置的問(wèn)題了。

          posted @ 2006-09-05 16:41 摩西 閱讀(179) | 評(píng)論 (0)編輯 收藏
          ?

          1、JAVA的安裝:

          正常安裝JDK,完成后添加系統(tǒng)變量JAVA_HOME,其值為JDK的根目錄,如C:\J2SDK1.4.2(TOMCAT安裝時(shí)使用此變量捕獲JDK)

          2、TOMCAT的安裝:

          A:運(yùn)行jakarta-tomcat-5.0.12.exe文件,自動(dòng)捕獲JDK

          B:解壓縮jakarta-tomcat-5.0.12.zip,解壓的過(guò)程既是安裝的過(guò)程,

          安裝完成后設(shè)置系統(tǒng)變量:CATALINA_HOME,它是TOMCAT的安裝目錄,如果沒(méi)有進(jìn)行設(shè)置,則在TOMCAT第一次啟動(dòng)時(shí)自動(dòng)設(shè)置

          3、TOMCAT的測(cè)試:

          A啟動(dòng):如果安裝時(shí)是.EXE文件,則會(huì)在開始菜單中出現(xiàn)TOMCAT的菜單,如果解壓縮安裝則在安裝目錄的BIN目錄下有STARTUP.BAT

          B關(guān)閉:如果安裝時(shí)是.EXE文件,則會(huì)在開始菜單中出現(xiàn)TOMCAT的菜單,如果解壓縮安裝則在安裝目錄的BIN目錄下有SHUTDOWN.BAT

          C測(cè)試:TOMCAT服務(wù)器啟動(dòng)后,瀏覽器中輸入HTTP://LOCALHOST:8080
          若要改變?cè)L問(wèn)端口號(hào),則在CONF目錄下將SERVER.XML中CONNECTOR元素的PORT屬性值改變即可。

          4、TOMCAT目錄結(jié)構(gòu)

          bin 存放啟動(dòng)和關(guān)閉tomcat腳本

          conf 包含不同的配置文件,server.xml(Tomcat的主要配置文件)和web.xml

          SERVER? 包含3個(gè)子目錄classes,lib,webapps
          server/classes? 各種類文件,默認(rèn)為空
          server/lib?? 存放tomcat服務(wù)器所需的各種JAR文件
          server/webapps? 存放tomcat自帶的兩個(gè)web應(yīng)用案例:admin? manager

          common? tomcat服務(wù)器以及所有web應(yīng)用都可以訪問(wèn)的JAR文件

          shared? 所有web應(yīng)用都可以訪問(wèn)的JAR文件

          work 存放jsp編譯后產(chǎn)生的class文件

          logs 存放日志文件

          webapp 存放應(yīng)用程序示例,以后你要部署的應(yīng)用程序也要放到此目錄 (重要)

          5、WEB應(yīng)用程序的目錄結(jié)構(gòu)

          在WEB上發(fā)布的J2EE應(yīng)用程序都有自己特定的目錄結(jié)構(gòu)

          假設(shè)創(chuàng)建一名為HELLOAPP的WEB項(xiàng)目

          HELLOAPP:WEB應(yīng)用根目錄,所有JSP\HTML等文件均存放于此
          HELLOAPP/WEB-INF? 存放WEb應(yīng)用的發(fā)布描述文件web.xml
          HELLOAPP/WEB-INF/classes 存放各種class文件,servlet類文件也存放于此
          HELLOAPP/WEB-INF/lib? 存放WEb應(yīng)用所需的各種JAR文件

          6、web.xml文件配置
          參見conf目錄下web.xml

          7、server.xml文件配置(重要的配置)

          server port 指定一個(gè)端口,這個(gè)端口負(fù)責(zé)監(jiān)聽關(guān)閉tomcat的請(qǐng)求

          shutdown 指定向端口發(fā)送的命令字符串

          service name 指定service的名字

          Connector

          (表示客戶端和service之間的連接) port 指定服務(wù)器端要?jiǎng)?chuàng)建的端口號(hào),并在這個(gè)斷口監(jiān)聽來(lái)自客戶端的請(qǐng)求

          minProcessors 服務(wù)器啟動(dòng)時(shí)創(chuàng)建的處理請(qǐng)求的線程數(shù)

          maxProcessors 最大可以創(chuàng)建的處理請(qǐng)求的線程數(shù)

          enableLookups 如果為true,則可以通過(guò)調(diào)用request.getRemoteHost()進(jìn)行DNS查詢來(lái)得到遠(yuǎn)程客戶端的實(shí)際主機(jī)名,若為false則不進(jìn)行DNS查詢,而是返回其ip地址

          redirectPort 指定服務(wù)器正在處理http請(qǐng)求時(shí)收到了一個(gè)SSL傳輸請(qǐng)求后重定向的端口號(hào)

          acceptCount 指定當(dāng)所有可以使用的處理請(qǐng)求的線程數(shù)都被使用時(shí),可以放到處理隊(duì)列中的請(qǐng)求數(shù),超過(guò)這個(gè)數(shù)的請(qǐng)求將不予處理

          connectionTimeout 指定超時(shí)的時(shí)間數(shù)(以毫秒為單位)

          Engine

          (表示指定service中的請(qǐng)求處理機(jī),接收和處理來(lái)自Connector的請(qǐng)求) defaultHost 指定缺省的處理請(qǐng)求的主機(jī)名,它至少與其中的一個(gè)host元素的name屬性值是一樣的

          Context

          (表示一個(gè)web應(yīng)用程序,通常為WAR文件,關(guān)于WAR的具體信息見servlet規(guī)范) docBase 應(yīng)用程序的路徑或者是WAR文件存放的路徑

          path 表示此web應(yīng)用程序的url的前綴,這樣請(qǐng)求的url為http://localhost:8080/path/****

          reloadable 這個(gè)屬性非常重要,如果為true,則tomcat會(huì)自動(dòng)檢測(cè)應(yīng)用程序的/WEB-INF/lib 和/WEB-INF/classes目錄的變化,自動(dòng)裝載新的應(yīng)用程序,我們可以在不重起tomcat的情況下改變應(yīng)用程序

          host

          (表示一個(gè)虛擬主機(jī))

          name 指定主機(jī)名

          appBase 應(yīng)用程序基本目錄,即存放應(yīng)用程序的目錄

          unpackWARs 如果為true,則tomcat會(huì)自動(dòng)將WAR文件解壓,否則不解壓,直接從WAR文件中運(yùn)行應(yīng)用程序

          Logger

          (表示日志,調(diào)試和錯(cuò)誤信息)

          className 指定logger使用的類名,此類必須實(shí)現(xiàn)org.apache.catalina.Logger 接口

          prefix 指定log文件的前綴

          suffix 指定log文件的后綴

          timestamp 如果為true,則log文件名中要加入時(shí)間,如下例:localhost_log.2001-10-04.txt

          Realm

          (表示存放用戶名,密碼及role的數(shù)據(jù)庫(kù))

          className 指定Realm使用的類名,此類必須實(shí)現(xiàn)org.apache.catalina.Realm接口

          Valve

          (功能與Logger差不多,其prefix和suffix屬性解釋和Logger 中的一樣)

          className 指定Valve使用的類名,如用org.apache.catalina.valves.AccessLogValve類可以記錄應(yīng)用程序的訪問(wèn)信息

          directory 指定log文件存放的位置

          pattern 有兩個(gè)值,common方式記錄遠(yuǎn)程主機(jī)名或ip地址,用戶名,日期,第一行請(qǐng)求的字符串,HTTP響應(yīng)代碼,發(fā)送的字節(jié)數(shù)。combined方式比common方式記錄的值更多

          ?

          在以上的設(shè)置項(xiàng)目中Context是最重要也是使用最頻繁的元素,他代表了運(yùn)行在主機(jī)上的每個(gè)web應(yīng)用。一個(gè)主機(jī)上可以用 多個(gè)web應(yīng)用,每個(gè)web應(yīng)用對(duì)應(yīng)一個(gè)唯一的地址,而地址在Context元素的path屬性中設(shè)置

          path:訪問(wèn)web程序的url入口
          docbase:制定web程序的路徑,如果web應(yīng)用是開放目錄結(jié)構(gòu),則為根目錄,若為war文件則為war文件的路徑

          例如:
          <Context path="/helloapp" docbase="helloapp" reloadable="true"/>

          當(dāng)設(shè)置jsp文件時(shí),只需把文件放到web應(yīng)用根目錄下即可訪問(wèn),而設(shè)置servlet還要在web.xml中設(shè)置



          Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=813657

          posted @ 2006-09-05 12:06 摩西 閱讀(493) | 評(píng)論 (0)編輯 收藏
               摘要: 一、Tomcat背景   自從JSP發(fā)布之后,推出了各式各樣的JSP引擎。Apache Group在完成GNUJSP1.0的開發(fā)以后,開始考慮在SUN的JSWDK基礎(chǔ)上開發(fā)一個(gè)可以直接提供Web服務(wù)的JSP服務(wù)器,當(dāng)然同時(shí)也支持Servlet, 這樣Tomcat就誕生了。 Tomcat是ja...  閱讀全文
          posted @ 2006-09-05 12:04 摩西 閱讀(202) | 評(píng)論 (0)編輯 收藏

          1.one page:? action_demo.html

          <html>
          <head></head>
          <body>
          <form? name="input" action="html_form_action.html" method="get">
          Usename:
          <input type="text" name="user" value="admin"><input type="submit" value="Submit">
          </form>
          </body>
          </html>

          2.two page:? html_from_action.html

          <html>
          <head></head>
          <script language="javascript">
          function getparastr(strname)
          ? {
          ?? var hrefstr,pos,parastr,para,tempstr;
          ?? hrefstr = window.location.href;
          ?? pos = hrefstr.indexOf("?")
          ?? parastr = hrefstr.substring(pos+1);
          ?? para = parastr.split("&");
          ?? tempstr="";
          ?? for(i=0;i<para.length;i++)
          ?? {
          ??? tempstr = para[i];
          ??? pos = tempstr.indexOf("=");
          ??? if(tempstr.substring(0,pos) == strname)
          ??? {
          ???? return tempstr.substring(pos+1);
          ???? }
          ?? }
          ?? return null;
          ? }
          // 獲取program參數(shù)
          //var userstr = getparastr("user");
          //document.write(userstr);

          //用得到的值給form中的文本框賦值?
          function getname()
          {
          var userstr = getparastr("user");
          document.fr1.input.value=userstr;
          }

          </script>
          <body>
          <form name="fr1" >
          你的名字是:
          <input type="text" name="input" >
          <input type="button" name="bt1" value="查看用戶名" onclick="getname()">
          </form>
          </body>
          </html>

          posted @ 2006-09-05 10:18 摩西 閱讀(5032) | 評(píng)論 (1)編輯 收藏
          XML相關(guān)資源?


          一.?XML的大本營(yíng)?

          XML是由W3C(World?Wide?Web?Consortium)國(guó)際組織負(fù)責(zé)開發(fā)和制定標(biāo)準(zhǔn)的。關(guān)于XML最權(quán)威,最新的消息都來(lái)自W3C。網(wǎng)址是:http://w3c.org/XML/ ?


          另外一個(gè)名為OASIS的前著名的SGML研究組織也在一起推動(dòng)XML的發(fā)展,網(wǎng)址是:http://www.oasis-open.org/ ?


          二.?XML指南?

          http://www.w3.org/TR/REC-xml ?

          W3C關(guān)于XML規(guī)范的詳細(xì),完整的說(shuō)明。不用多說(shuō),絕對(duì)權(quán)威。?


          http://www.xml.com/axml/testaxml.htm ?

          這是Tim?Bary寫的XML規(guī)范說(shuō)明書,非常的詳細(xì)和嚴(yán)密,是學(xué)習(xí)XML規(guī)范的好幫手。?


          三.?XML常見問(wèn)題?


          Peter?Flynn的?XML?FAQ?

          http://www.ucc.ie/xml/ ?

          包含大量詳細(xì)的資料,經(jīng)常更新,由W3C協(xié)會(huì)XML組維護(hù)。?


          Lisa?Rein’s?finetuning?XML?FAQs?

          http://www.finetuning.com/faq.html ?

          這個(gè)FAQ列表有側(cè)重點(diǎn),主要包含XSLT?FAQ,XPath?FAQ和IE5中的XSL?FAQ。?


          Dave?Pawson’s?XSL?FAQ?

          http://www.dpawson.co.uk/xsl/idx.html ?

          提供最好的關(guān)于XSL方面的FAQ,創(chuàng)建于1999年。?


          jGuru’s?Extensible?Markup?Language?(XML)?FAQ?

          http://www.jguru.com/jguru/faq/faqpage.jsp?name=XML ?

          這個(gè)FAQ列表是一個(gè)典型的"老百曉",任何問(wèn)題,從普通的到非常細(xì)節(jié)的XML問(wèn)題都可以在這里找到。?


          Ronald?Bourret’s?XML?Namespaces?FAQ?

          http://www.informatik.tu-darmstadt.de/DVS1/staff/bourret/xml/ ?
          NamespacesFAQ.htm?

          創(chuàng)建于2000初,是關(guān)于namespaces概要的FAQ。?

          四.?XML主題網(wǎng)站?


          http://www.xml.com/ ?

          一個(gè)以XML為主題的內(nèi)容豐富的網(wǎng)站?


          http://www.xml-zone.com/ ?

          另一個(gè)比較知名的XML網(wǎng)站,提供XML的新聞和資訊。?


          http://www.xmlinfo.com/ ?

          網(wǎng)站創(chuàng)建者James?Tauber’s是W3C組織XML發(fā)展組的成員之一,他的網(wǎng)站提供了大量的連接和例子。?


          http://www.simonstl.com/ ?

          網(wǎng)站創(chuàng)建者Simon?St.?Laurent也是XML發(fā)展組的成員。他是W3C中XML初級(jí)入門教程的作者,他的站點(diǎn)主要提供有關(guān)XML的發(fā)展信息。?


          http://msdn.microsoft.com/xml/c-frame.htm#/xml/default.asp ?

          微軟的MSDN關(guān)于XML的主題網(wǎng)站。微軟在推進(jìn)XML應(yīng)用方面不遺余力。?


          http://www.xmlsoftware.com/ ?

          是XML?info的姐妹網(wǎng)站,內(nèi)容包括XML/DTD/XSL編輯軟件,XML?API軟件等。?


          http://xmlhack.com/ ?

          1999年9月建立的大型XML新聞網(wǎng)站,同時(shí)提供XML人才信息。?


          http://xml.apache.org/ ?

          Apache軟件基金會(huì)(ASF),提供了大量open?source的XML和XSL的工具軟件。?


          http://www.biztalk.org/ ?

          BizTalk是微軟發(fā)起的以XML商業(yè)應(yīng)用為目標(biāo)的組織。BizTalk不是一個(gè)標(biāo)準(zhǔn)組織。?


          五.?XML的編輯軟件?


          目前XML文檔的編輯軟件依然很少。雖然我們可以手工編寫,但是如果有一個(gè)好的軟件(類似用DW/FP編寫HTML),可以減少差錯(cuò)和提高效率。下面是現(xiàn)有的一些編輯軟件。?


          http://www.macromedia.com/software/dreamweaver/ ?

          Macromedia最新的Dreamweaver?4.0已經(jīng)支持XML文檔的編寫。推薦使用。?


          http://www.microsoft.com/xml/notepad/intro.asp ?

          微軟在這方面向來(lái)不會(huì)落后,它推出的XML?Notepad是一個(gè)非常小巧靈活的XML文檔編輯器。推薦使用。?


          http://www.adobe.com/prodindex/framemaker/prodinfosgml.html ?

          Adobe公司的Framemaker?plus是目前較好的XML編輯軟件。?


          http://www.arbortext.com/ ?

          Arbortext公司是重點(diǎn)開發(fā)XML游戲的公司。?


          http://www.inso.com/ ?

          Inso,好象是用來(lái)處理大型SGML或者XML文檔的軟件。?


          http://www.softquad.com/ ?

          Softquad?是HTML和SGML軟件的開發(fā)商,對(duì)XML自然不會(huì)放過(guò)。?

          六.?支持XML的瀏覽器?


          http://www.microsoft.com/windows/ie/ ?

          IE?5.X是目前流行瀏覽器唯一支持XML的,它可以在微軟的網(wǎng)站免費(fèi)下載到。?


          http://developer.netscape.com/software/communicator/ngl/ ?
          index.html?cp=dev09fg01?

          Gecko是另一種支持XML的瀏覽器,但目前只是測(cè)試版。?


          七.?XML?parser?


          Parser是一個(gè)檢查XML文檔語(yǔ)法是否符合DTD定義,并進(jìn)行解析的軟件。?


          在線的parser?


          http://validator.w3.org/ ?

          W3C組織提供的一個(gè)在線paeser。可以根據(jù)你在線提交的XML文檔URL,進(jìn)行驗(yàn)證和解吸。?


          http://www.stg.brown.edu/service/xmlvalid/ ?

          一個(gè)Brown大學(xué)科技小組提供的parser,非常方便和容易理解。。?


          可下載的Parser?

          有很多可以下載到本機(jī)上運(yùn)行的parser,下面列出一些主要的:?


          http://www.jclark.com/xml/expat.html ?

          James?Clark是在SGML/XML領(lǐng)域的元老,他寫的parser被廣泛的運(yùn)用。?


          http://www.alphaworks.ibm.com/tech/xml ?

          一個(gè)以Java語(yǔ)言編寫的Parser,來(lái)自IBM。?


          http://www.microsoft.com/xml/parser/cparser.asp ?

          微軟的XML?Parser,用C++寫成。?


          http://www.stud.ifi.uio.no/~larsga/download/python/xml/xmlproc.html ?

          用Python寫的parser。?


          http://www.jeremie.com/Dev/XML/ ?

          用javascript寫的parser,只用來(lái)檢查語(yǔ)法,不進(jìn)行解吸析。?


          http://w3c.org/RDF/Implementations/SiRPAC/ ?

          來(lái)自W3C組織的SiRPAC,全稱是Simple?RDF?Parser?and?Compiler。?


          八.?Schema編輯軟件?


          Schema我們前面介紹過(guò),DTD就是一種Schema,我們可以手工寫DTD,但現(xiàn)在已經(jīng)有一些Schema編輯軟件來(lái)幫助我們更方便的建立DTD。?


          http://www.extensibility.com/ ?

          Extensibility這個(gè)軟件被稱為XML權(quán)威。可以以圖形化方式建立和編輯schema,包括DTD文件。?


          九.?國(guó)內(nèi)XML資源?

          http://www.xml.net.cn/ ?

          XML中國(guó)論壇是一個(gè)非贏利的學(xué)術(shù)網(wǎng)站。由北京大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)研究所創(chuàng)辦,北大方正集團(tuán)公司提供贊助。?


          http://www.xml.org.cn:8188 ?

          中國(guó)XML聯(lián)盟將建立為國(guó)內(nèi)第一個(gè)開放性網(wǎng)絡(luò)標(biāo)準(zhǔn)組織,提供XML技術(shù)認(rèn)證、咨詢和交流。由上海易方公司贊助。?


          http://www.xml.com.cn/ ?

          chinaasp.com的子站,提供XML文章和技術(shù)交流等。?


          http://www.egroups.com/group/china_xml_list/info.html ?

          中國(guó)XML郵件組包括中文XML資源,?XML的最新資料,同行的交流空間。由非盈利性組織中國(guó)XML聯(lián)盟負(fù)責(zé)維護(hù)。?


          http://weblab.crema.unimi.it/xmlzh/XML_FAQ.htm ?

          一個(gè)XML?FAQ郵件列表的中文翻譯,可惜是1998年10月的?
          posted @ 2006-09-03 17:33 摩西 閱讀(249) | 評(píng)論 (0)編輯 收藏
          1.傳遞表單參數(shù):
          String name = new String(request.getParameter("name"));

          2.數(shù)據(jù)庫(kù)連接:
          ~~MYSQL
          //設(shè)置數(shù)據(jù)庫(kù)的URL
          String url = "jdbc:mysql://localhost:3306/jspsky";
          try
          //加載驅(qū)動(dòng)程序
          Class.forname("org.gjt.mm.mysql.Driver").newInstance();
          //建立連接
          java.sql.Connection connection = java.sql.DriverManager.getConnection(url);
          java.sql.Statement statement = connection.createStatement();
          //SQL語(yǔ)句
          String sqlStringi ="insert into commu(name,tel,mobile,oicq,email)values(‘"+name+"',‘"+tel+"',‘"+mobile+"',‘"+oicq+"',‘"+email+"')";
          //運(yùn)行SQL語(yǔ)句,并建立結(jié)果集
          java.sql.ResultSet rsi = statement.executeQuery(sqlStringi);
          //在屏幕上輸出庫(kù)中的內(nèi)容
          while(rss.next())
          {
          String a_name = rss.getString(1);
          out.println(a_name);
          {}
          //關(guān)閉連接
          connection.close();
          }

          //捕捉異常
          catch(java.sql.SQLException e)

          out.println(e.getMessage());
          {}
          catch(ClassNotFoundException e)

          out.println(e.getMessage());
          {}


          ~~DB2
          //定義數(shù)據(jù)庫(kù)的URL
          String url = "jdbc:db2:portal";
          try

          //加載驅(qū)動(dòng)程序
          Class.forName("COM.ibm.db2.jdbc.app.DB2Driver");
          //建立連接,
          java.sql.Connection connection = java.sql.DriverManager.getConnection(url,"user","password");
          java.sql.Statement statement = connection.createStatement();
          //SQL語(yǔ)句
          String sqlString = "select * from client";
          //執(zhí)行SQL語(yǔ)句
          java.sql.ResultSet rs = statement.executeQuery(sqlString);
          //在屏幕上顯示所連表中的內(nèi)容
          while(rs.next())
          {
          String name = rs.getString(1);
          out.println(name);
          {}
          //關(guān)閉連接
          connection.close();
          }
          //捕捉異常
          catch(java.sql.SQLException e)

          out.println(e.getMessage());
          {}
          catch(ClassNotFoundException e)

          out.println(e.getMessage());
          {}


          3.文件操作

          ~~將一個(gè)字符串寫到一個(gè)指定的文件中,如果該文件不存在,則新建一個(gè)文件,并完成寫入;如果存在,則用此字符串覆蓋原文件的所有內(nèi)容
          import java.io.*;
          String str = "print me 雪峰!";
          //定義好打印的目標(biāo)文件名

          //取得當(dāng)前主機(jī)存放WEB頁(yè)面的絕對(duì)路徑
          String hostdir = System.getProperty("user.dir");
          //取得當(dāng)前主機(jī)所采用的路徑分隔符
          String fileBar = System.getProperty("file.separator");
          //書寫完整的目標(biāo)文件存放路徑
          String nameOfFile=hostdir+fileBar+"test.html";

          try
          //實(shí)例化一個(gè)文件輸出流對(duì)象
          FileOutputStream afile = new FileOutputStream(nameOfFile);
          //將文件輸出流,創(chuàng)建一個(gè)打印輸出流對(duì)象
          PrintWriter pw = new PrintWriter(afile);
          pw.println(str);
          //clean up
          pw.close();
          {}
          catch(IOException e)
          out.println(e.getMessage());
          {}

          ~~列出指定目錄下的文件列表
          import java.io.*;
          String cdur = System.getProperty("user.dir");
          String fileBar = System.getProperty("file.separator");
          String mydir =cdur+fileBar+"doc"+fileBar+"jspsky";
          File my = new File(mydir);
          String d[] = my.list();
          int i;
          int l=d.length;
          for(i=0;i out.print(d);
          {}


          4.計(jì)數(shù)器
          Integer count = null;
          synchronized (application)
          count =(Integer) application.getAttribute("d");
          if (count ==null)
          count =new Integer("0");
          count = new Integer(count.intValue()+1);
          application.setAttribute("d",count);
          {}
          out.println(count);
          // 首先定義一個(gè)整形對(duì)象,并初始化為:NULL,
          // 取回APPLICATION對(duì)像的屬性D的值,并強(qiáng)制轉(zhuǎn)化為整形對(duì)象,賦給COUNT
          // 判斷COUNT是否為空,為空時(shí),將O賦給COUNT對(duì)象,
          // 否則,通過(guò)COUNT。INTVALUE()方法,實(shí)現(xiàn)COUNT對(duì)象加1,并賦值給COUNT
          // 最后,將COUNT對(duì)象保存在APPLICATION對(duì)象的D變量中。
          posted @ 2006-09-01 10:16 摩西 閱讀(181) | 評(píng)論 (0)編輯 收藏

          來(lái)自: Matrix ?: http://www.matrix.org.cn/resource/article/43/43811.html
          你需要精通面向?qū)ο蠓治雠c設(shè)計(jì)(OOA/OOD)、涉及模式(GOF,J2EEDP)以及綜合模式。你應(yīng)該十分了解UML,尤其是class,object,interaction以及state diagrams.

          你需要學(xué)習(xí)JAVA語(yǔ)言的基礎(chǔ)知識(shí)以及它的核心類庫(kù)(collections,serialization,streams,networking,multithreading,reflection,event,handling,NIO,localization,以及其他)。

          你應(yīng)該了解JVM,class loaders,class reflect,以及垃圾回收的基本工作機(jī)制等。你應(yīng)該有能力反編譯一個(gè)類文件并且明白一些基本的匯編指令。

          如果你將要寫客戶端程序,你需要學(xué)習(xí)WEB的小應(yīng)用程序(applet),必需掌握GUI設(shè)計(jì)的思想和方法,以及桌面程序的SWING,AWT,SWT。你還應(yīng)該對(duì)UI部件的JAVABEAN組件模式有所了解。JAVABEANS也被應(yīng)用在JSP中以把業(yè)務(wù)邏輯從表現(xiàn)層中分離出來(lái)。

          你需要學(xué)習(xí)java數(shù)據(jù)庫(kù)技術(shù),如JDBC API并且會(huì)使用至少一種persistence/ORM構(gòu)架,例如Hibernate, JDO, CocoBase, TopLink,Inside Liberator(國(guó)產(chǎn)JDO 紅工廠軟件)或者iBatis。你還應(yīng)該了解對(duì)象關(guān)系的阻抗失配的含義,以及它是如何影響業(yè)務(wù)對(duì)象的與關(guān)系型數(shù)據(jù)庫(kù)的交互,和它的運(yùn)行結(jié)果,還需要掌握不同的數(shù)據(jù)庫(kù)產(chǎn)品運(yùn)用,比如: oracle,mysql,ms sql server.

          你需要學(xué)習(xí)JAVA的沙盒安全模式(class loaders, byte code verification, managers, policy and permissions, code signing, digital signatures, cryptography, certification, Kerberos,以及其他)還有不同的安全/認(rèn)證API,例如JAAS( Java Authentication and Authorization Service), JCE (Java Cryptography Extension), JSSE (Java Secure Socket Extension), 以及 JGSS (Java General Security Service).

          你需要學(xué)習(xí)Servlets, JSP, 以及JSTL(Standard Tag Libraries)和可以選擇的第三方Tag Libraries。

          你需要熟悉主流的網(wǎng)頁(yè)框架,例如JSF, Struts, Tapestry, Cocoon, WebWork, 以及他們下面的涉及模式,如MVC/MODEL2.

          你需要學(xué)習(xí)如何使用及管理WEB服務(wù)器,例如tomcat,resin,Jrun,并且知道如何在其基礎(chǔ)上擴(kuò)展和維護(hù)WEB程序。

          你需要學(xué)習(xí)分布式對(duì)象以及遠(yuǎn)程API,例如RMI和RMI/IIOP。

          你需要掌握各種流行中間件技術(shù)標(biāo)準(zhǔn)和與java結(jié)合實(shí)現(xiàn),比如Tuxedo、CROBA,當(dāng)然也包括java EE 本身.

          你需要學(xué)習(xí)最少一種的XML API,例如JAXP (Java API for XML Processing), JDOM (Java for XML Document Object Model), DOM4J, 或 JAXR (Java API for XML Registries).

          你應(yīng)該學(xué)習(xí)如何利用JAVA API和工具來(lái)構(gòu)建Web Service。例如JAX-RPC (Java API for XML/RPC), SAAJ (SOAP with Attachments API for Java), JAXB (Java Architecture for XML Binding), JAXM (Java API for XML Messaging), JAXR (Java API for XML Registries), 或者 JWSDP (Java Web Services Developer Pack)。

          你需要學(xué)習(xí)一門輕量級(jí)應(yīng)用程序框架,例如Spring, PicoContainer, Avalon, 以及它們的IoC/DI 風(fēng)格(setter, constructor, interface injection)。

          你需要熟悉不同的J2EE技術(shù),例如JNDI (Java Naming and Directory Interface), JMS (Java Message Service), JTA/JTS (Java Transaction API/Java Transaction Service), JMX (Java Management eXtensions), 以及 JavaMail.

          你需要學(xué)習(xí)企業(yè)級(jí)Java Beans(EJB)以及它們的不同組件模式:Stateless/Stateful Session Beans, Entity Beans (包含Bean-Managed Persistence [BMP] 或者 Container-Managed Persistence [CMP] 和它的 EJB-QL), 或者M(jìn)essage-Driven Beans (MDB).

          你需要學(xué)習(xí)如何管理與配置一個(gè)J2EE應(yīng)用程序服務(wù)器,如WebLogic ,JBoss等,并且利用它的附加服務(wù),例如簇類,連接池以及分布式處理支援。你還需要了解如何在它上面封裝和配置應(yīng)用程序并且能夠監(jiān)控、調(diào)整它的性能。

          你需要熟悉面向方面的程序設(shè)計(jì)以及面向?qū)傩缘某绦蛟O(shè)計(jì)(這兩個(gè)都被很容易混淆的縮寫為AOP),以及他們的主流JAVA規(guī)格和執(zhí)行。例如AspectJ 和AspectWerkz。

          你需要熟悉對(duì)不同有用的API和framework等來(lái)為你服務(wù)。例如Log4J (logging/tracing), Quartz (scheduling), JGroups (network group communication), JCache (distributed caching), Lucene (full-text search), Jakarta Commons等等。


          如果你將要對(duì)接或者正和舊的系統(tǒng)或者本地平臺(tái),你需要學(xué)習(xí)JNI (Java Native Interface) and JCA (Java Connector Architecture).

          你需要熟悉JINI技術(shù)以及與它相關(guān)的分布式系統(tǒng),比如掌握CROBA。

          你需要Java Community Process(JCP)以及他的不同Java Specification Requests (JSRs), 例如 Portlets (168), JOLAP (69), Data Mining API (73), 等等。

          你應(yīng)該熟練掌握一種JAVA IDE例如sunOne ,netBeans ,IntelliJ IDEA或者Eclipse。(有些人更喜歡VI或EMACS來(lái)編寫文件。隨便你用什么了:))

          JAVA(精確的說(shuō)是有些配置)是冗長(zhǎng)的,它需要很多的人工代碼(例如EJB),所以你需要熟悉代碼生成工具,例如XDoclet。

          你需要熟悉一種單元測(cè)試體系(JNunit),并且學(xué)習(xí)不同的生成、部署工具(Ant, Maven)。

          你需要熟悉一些在JAVA開發(fā)中經(jīng)常用到的軟件工程過(guò)程。例如RUP (Rational Unified Process) and Agile methodologies.

          你需要能夠深入了解加熟練操作和配置不同的操作系統(tǒng),比如GNU/linux ,sun solaris,mac OS等,做為跨平臺(tái)軟件的開發(fā)者。

          你還需要緊跟java發(fā)展的步伐,比如現(xiàn)在可以深入的學(xué)習(xí)java ME ,以及各種java 新規(guī)范,技術(shù)的運(yùn)用,如 新起的web富客戶端技術(shù)。

          你必需要對(duì)open source有所了解,因?yàn)橹辽賘ava 的很多技術(shù)直接是靠開源來(lái)驅(qū)動(dòng)發(fā)展的 ,如 java 3D技術(shù)。

          posted @ 2006-09-01 10:14 摩西 閱讀(197) | 評(píng)論 (0)編輯 收藏
          主站蜘蛛池模板: 龙泉市| 黄陵县| 吉水县| 汕尾市| 略阳县| 瑞安市| 琼中| 乳山市| 永川市| 哈巴河县| 霍州市| 诏安县| 横山县| 海口市| 会东县| 蒙山县| 余江县| 鸡西市| 托里县| 察哈| 弥渡县| 阳西县| 调兵山市| 高青县| 双城市| 道孚县| 宿松县| 太白县| 商河县| 墨脱县| 农安县| 宣汉县| 乐东| 辉县市| 永胜县| 新乐市| 神池县| 兴国县| 上杭县| 鱼台县| 汕尾市|