Sugo

          Goof off ? no way: never
          posts - 20, comments - 8, trackbacks - 73, articles - 1
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          2007年1月14日

          JTable如果在編輯狀態(tài)下,當(dāng)要保存的時(shí)候,比如直接點(diǎn)保存按鈕,得到的數(shù)據(jù)不是編輯狀態(tài)下的數(shù)據(jù),琢磨出一個(gè)方法,記錄一下:
                i和j表示正在被編輯的行號(hào)列號(hào)
                 CellEditor   ce   =   md.getCellEditor(i,j);
                 //CellEditor   ce   =   md.getCellEditor(md.getEditingRow(), md.getEditingColumn());    
                 ce.stopCellEditing();  
                 Object   value   =   ce.getCellEditorValue();  
                // model.setValueAt(value,md.getEditingRow(), md.getEditingColumn());
                 model.setValueAt(value,i,j);

          posted @ 2008-01-14 21:30 sugo 閱讀(1401) | 評(píng)論 (0)編輯 收藏

               獲取網(wǎng)卡物理地址:
                   String cmd="ipconfig /all";
                   Process p=Runtime.getRuntime().exec(cmd);
                   BufferedReader bis=new BufferedReader(new InputStreamReader(p.getInputStream()));
                   String line="";
                   while((line=bis.readLine())!=null){
                     if(line.indexOf("Physical Address")!=-1){
                       Pattern ptn=Pattern.compile("((\\w{2})|(\\d{2})|(\\w+\\d+)|(\\d+\\w+))-.*");
                        Matcher m=ptn.matcher(line.trim());
                        while(m.find()){
                          System.out.println("get mac  "+m.group());
                        }
                     }
                    }

          posted @ 2007-12-25 16:47 sugo 閱讀(371) | 評(píng)論 (0)編輯 收藏

          閑暇之余寫的坦克小游戲,源碼貼出來(lái),有意見(jiàn)和疑問(wèn)請(qǐng)留言,共同進(jìn)步

          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
          <HTML>
          <HEAD>
          <TITLE> New Document </TITLE>
          <META NAME="Generator" CONTENT="EditPlus">
          <META NAME="Author" CONTENT="">
          <META NAME="Keywords" CONTENT="">
          <META NAME="Description" CONTENT="">
          </HEAD>
          <SCRIPT LANGUAGE="JavaScript">
          <!--
           var missleno=0;
           var energy=100;
           var enemytimer;
           function document.onkeydown()

            if (window.event.keyCode==37)   // 方向鍵 <-
            { 
              var temp=document.getElementById("sg");
           temp.style.pixelLeft-=10;
             }
            else if (window.event.keyCode==39)   // 方向鍵 ->
            { 
              var temp=document.getElementById("sg");
           temp.style.pixelLeft+=10;
             }
             else if (window.event.keyCode==40){
               var temp=document.getElementById("sg");
            temp.style.pixelTop+=10;
           // temp.style.height=66px;

             }
             else if(window.event.keyCode==38){  //  up ^
               //alert(window.event.keyCode);
            var temp=document.getElementById("sg");
            temp.style.pixelTop-=10;
             }
             else if(window.event.keyCode==32){
               fire(missleno);
               missleno++;
             }
             // else{
           // var temp=document.getElementById("missle1000");
           // if(temp==null){
           //  alert('null');
           // }
           //}
          }
           function fire(mno){
             var no=mno;
             var temp=document.getElementById("sg");
             tt=document.createElement("div");
             cont=document.createTextNode("=");
             tt.appendChild(cont);
             tt.id="missle"+no;
             // missleno++;
             tt.style.position="absolute";
             // var obj=eval("sg"+num);
             tt.style.pixelTop=temp.style.pixelTop+15;
             tt.style.pixelLeft=temp.style.pixelLeft+60;
             document.body.appendChild(tt);
             move(no);
           }
           function move(mno){
             var no=mno;
             var temp=document.getElementById("missle"+no);
             // var temphn=document.getElementById("hn");
             temp.style.pixelLeft+=5;
             var result=monitor_missle(no); //監(jiān)控子彈是否打中
             //alert(result);
             if(result!='stop'){
               if(temp.style.pixelLeft!=1000){
                setTimeout("move("+no+")",20);
               }
               else if(temp.style.pixelLeft==1000){ //消除子彈
                 temp.parentNode.removeChild(temp);
               }
             }
           }
            function showpos(){
             var temp=document.getElementById("hn");
             alert(temp.style.pixelLeft);
            }
            function flush(){
             var temp=document.getElementById("hn");
             //temp.parentNode.removeChild(temp);
             temp.style.display="none";
             temp=document.getElementById("missle"+missleno);
             temp.parentNode.removeChild(temp);
            }
            function initEnemy(){
              tt=document.createElement("div");
              cont=document.createTextNode("enemy");
              tt.appendChild(cont);
              tt.id="enemy";
              tt.style.position="absolute";
              // var obj=eval("sg"+num);
              tt.style.pixelTop=390;
              tt.style.pixelLeft=900;
           tt.style.border="dashed thick #008022";
           tt.style.width="36px";
           tt.style.padding="2px 4px 0px 4px";
           tt.style.background="#ff3303";
           tt.style.color="#FFFFEE";
              document.body.appendChild(tt);
           enemy_move();
            }
            function monitor(){
             var enemy=document.getElementById("enemy");
             for(var t=0;t<missleno;t++){
               var temp=document.getElementById("missle"+t);
            if(temp==null)
             continue;
               else{
            if(((enemy.style.pixelTop-10)<temp.style.pixelTop) &&((enemy.style.pixelTop+10)>temp.style.pixelTop) &&  (temp.style.pixelLeft>=enemy.style.pixelLeft)){
              energy--;
              temp.parentNode.removeChild(temp);
              alert(energy);
             }
            }
             }
           
            }
            function monitor_missle(mno){
             var t=mno;
             var enemy=document.getElementById("enemy");
             var temp=document.getElementById("missle"+t);
            if((temp!=null)&&(enemy!=null)){
             if(((enemy.style.pixelTop-10)<temp.style.pixelTop) &&((enemy.style.pixelTop+10)>temp.style.pixelTop) &&  (temp.style.pixelLeft>=enemy.style.pixelLeft)){
              energy--;
              var blood=document.getElementById("bld");
              blood.innerHTML=energy;
              temp.parentNode.removeChild(temp);
              if(energy==0){
              enemy.parentNode.removeChild(enemy);
              clearTimeout(enemytimer);
             // enemy.style.display="none";
              alert("YOU WIN,CONGRATULATIONS!");
              }
              return 'stop';
             }
            }
            return 'continue';
            }
            function enemy_move(){
           
            var enemy=document.getElementById("enemy");
            enemy.style.pixelLeft-=10;
            enemytimer=setTimeout("enemy_move()",1000);
            }
           
          //-->
          </SCRIPT>
          <BODY>
          <div style="border: dashed thick #008000; width:36px; text-align:center;  padding:2px 4px 0px 4px; background:#ff3300; color:#FFFFFF;position:absolute" id="sg" >sugo</div>
          <!-- <div style="border: dashed thick #008000; width:36px; text-align:center;  padding:2px 4px 0px 4px; background:#ff3300; color:#FFFFFF;position:absolute;left=1000;top=500" id="hn">hanna</div>  -->
          <SCRIPT LANGUAGE="JavaScript">
          <!--
            initEnemy();
           // setInterval("monitor()",500);
          //-->
          </SCRIPT>
          <div id="bld"></div>
          </BODY>
          </HTML>

          posted @ 2007-11-22 18:10 sugo 閱讀(451) | 評(píng)論 (0)編輯 收藏

               實(shí)現(xiàn)了控制隨機(jī)生成的一個(gè)六位字符串下落,可以向左、向右、向下加速。實(shí)現(xiàn)的功能仿照俄羅斯方塊來(lái)做,本來(lái)想實(shí)現(xiàn)上下兩行相同字母消除功能,但想起一個(gè)方法(代碼中的erase()方法),感覺(jué)沒(méi)問(wèn)題,但一直沒(méi)有實(shí)現(xiàn),后來(lái)也懶得想了。現(xiàn)將代碼貼在這里,希望讀到這篇文章的朋友如果感興趣的話提出寶貴意見(jiàn),并可以隨意拷貝代碼完善功能:)
           <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
          <HTML>
          <HEAD>
          <TITLE> New Document </TITLE>
          <META NAME="Generator" CONTENT="EditPlus">
          <META NAME="Author" CONTENT="Sugo">
          <META NAME="Keywords" CONTENT="">
          <META NAME="Description" CONTENT="">
          </HEAD>
          <SCRIPT LANGUAGE="JavaScript">
          <!--
          var incx=10;//每次下落的高度
          var sty=20; //開始時(shí)候的縱坐標(biāo)
          var stx=500; //開始時(shí)候的橫坐標(biāo)
          var num=0; //每個(gè)div標(biāo)號(hào),同時(shí)也起到確定下一個(gè)div元素停止的位置
          var len=10;
          var timer;//定時(shí)器
          //var arr0,arr1,arr2,arr3,arr4,arr5,arr6,arr7,arr8,arr9,arr10,arr11,arr12,arr13,arr14,arr15; //用于字母消除作用的數(shù)組,此功能沒(méi)實(shí)現(xiàn),這些變量可以不用
          //初始字符串初始位置
          function firstshow(){ 
           //temp=document.getElementById("sg");
           sg0.style.pixelTop=sty;
           sg0.style.pixelLeft=stx;
           
          }
          //增加字符串
          function addDiv(){
           tt=document.createElement("div");
           divcontent=randomString(6);
           cont=document.createTextNode(divcontent);
           tt.appendChild(cont);
           tt.id="sg"+num;
           tt.style.position="absolute";
          // var obj=eval("sg"+num);
           tt.style.pixelTop=10;
           tt.style.pixelLeft=500;
           document.body.appendChild(tt);
           
          }

          //字符串下落方法
           function fall(id){
             var obj=eval("sg"+id);
            
            obj.style.pixelTop+=incx;
            obj.style.pixelLeft=stx;
            if(obj.style.pixelTop==(610-len*num)){   //到達(dá)目的地址時(shí)(下落到610處,此處可隨意改動(dòng))
             obj.style.pixelTop=610-len*num;
             //erase(); 功能沒(méi)有實(shí)現(xiàn)
             num++;
             addDiv();
             fall(num);
            }
            else if(obj.style.pixelTop<(610-len*num)) //沒(méi)有到達(dá)目的地址時(shí)
            timer = setTimeout('fall(num)',1000); //1000可以換成任意數(shù)字,越小下落速度越快
            else if(obj.style.pixelTop>(610-len*num)) //處理出現(xiàn)地址大于目的地址時(shí)
            {
            }
           }
           //當(dāng)使用方向鍵操作時(shí)使用的下落方法
           function fall1(id,sx,sy){
             var obj=eval("sg"+id);
            
            obj.style.pixelTop=sy+incx;
            obj.style.pixelLeft=sx;
            y=obj.style.pixelTop;
            x=obj.style.pixelLeft;
            if(obj.style.pixelTop==(610-len*num)){   //到達(dá)目的地址時(shí)
             obj.style.pixelTop=610-len*num;
             //erase(); 功能沒(méi)有實(shí)現(xiàn)
             num++;
             addDiv();
             fall(num);
            }
            else if(obj.style.pixelTop<(610-len*num)) //沒(méi)有到達(dá)目的地址時(shí)
            timer = setTimeout('fall1(num,x,y)',1000); //1000可以換成任意數(shù)字,越小下落速度越快
            else if(obj.style.pixelTop>(610-len*num)) //處理出現(xiàn)地址大于目的地址時(shí)
            {
            }
           }
          //產(chǎn)生隨機(jī)六位字符串
           function randomString(leng){
             var source="abcdefghijklmnopqrstuvwxyz";
             var result="";
             for(var i=0;i<leng;i++){
            
              result+=source.charAt(Math.random()*source.length)
             }
             return result;
           }
           //鍵盤控制
           function document.onkeydown()

            if (window.event.keyCode==37)   // 方向鍵 <-
            { 
              var temp=document.getElementById("sg"+num);
           temp.style.pixelLeft-=8;
           x=temp.style.pixelLeft;
           y=temp.style.pixelTop;
           clearTimeout(timer);
              fall1(num,x,y-10);
             }
            else if (window.event.keyCode==39)   // 方向鍵 ->
            { 
              var temp=document.getElementById("sg"+num);
           temp.style.pixelLeft+=8;
           x=temp.style.pixelLeft;
           y=temp.style.pixelTop;
           clearTimeout(timer);
              fall1(num,x,y-10);
             }
             else if (window.event.keyCode==40){ //方向鍵 |
               var temp=document.getElementById("sg"+num);
            temp.style.pixelTop+=10;
               x=temp.style.pixelLeft;
            y=temp.style.pixelTop;
            clearTimeout(timer);
               fall1(num,x,y-10);
             }
          }
          //字母消除程序,暫時(shí)不能實(shí)現(xiàn)功能
           function erase(){
            var pos=new Array();
            for(var i=0;i<=num;i++){ //得到所有存在的div每個(gè)字符的位置值
              dpos=document.getElementById("sg"+i);
           x=dpos.style.pixelLeft;
           //content=dpos.value;
              obj=eval("arr"+i);
           obj=new Array();
           for(var j=0;j<6;j++){
             obj[j]=x+j;
           }
           pos[i]=obj;
            }
           //alert(num);
            if(num>=1){
             
              for(t=num-1;t<num;t++){
             for(tt=0;tt<6;tt++){
               for(ttt=0;ttt<6;ttt++){
            // alert(pos[t][ttt]);
              if(pos[t][tt]==pos[t+1][ttt]){
              // alert("here"+tt+"  "+ttt);
                mod1=document.getElementById("sg"+t);
             mod2=document.getElementById("sg"+(t+1));
                var rep1="",rep2="";
             for(var l=0;l<mod1.innerHTML.length;l++){
               if(l!=tt){
               rep1+=mod1.innerHTML.charAt(l);
               }
               else{
               rep1+="-";
               }
             }
             mod1.innerHTML=rep1;
             //rep1='';
             //alert(mod1.innerHTML);
             for(var ll=0;ll<mod2.innerHTML.length;ll++){
               if(ll!=ttt){
                rep2+=mod2.innerHTML.charAt(ll);
               }
               else{
                rep2+="-";
                        }
             }
             mod2.innerHTML=rep2;
             //rep2='';
              }
            }
                }
              }
            }
           }
          //-->
          </SCRIPT>
          <BODY onload="firstshow();" >

          <div id="sg0" style="position:absolute"><SCRIPT LANGUAGE="JavaScript">
          <!--
          document.write(randomString(6));  //6可以改為任意數(shù)字,數(shù)字即是字符串的長(zhǎng)度
          //-->
          </SCRIPT></div>
          <SCRIPT LANGUAGE="JavaScript">
          <!--
            fall(0);
          //-->
          </SCRIPT>
          </BODY>
          </HTML>

          posted @ 2007-07-30 16:48 sugo 閱讀(375) | 評(píng)論 (0)編輯 收藏

          ? ?? 訪問(wèn)某論壇時(shí),發(fā)現(xiàn)論壇全是html頁(yè)面。今天搞明白了,原來(lái)是重寫了頁(yè)面的url。通俗的說(shuō)就是雖然地址欄里的是html結(jié)尾的url,但實(shí)際上訪問(wèn)的是后臺(tái)動(dòng)態(tài)jsp(php、asp)頁(yè)面。好像是一種視覺(jué)欺騙。
          ???? 實(shí)現(xiàn)這個(gè)技術(shù)也很容易,一般都會(huì)使用國(guó)外的一個(gè)urlrewriter過(guò)濾器。
          ???? 1、下載:
          ???? 下載地址為http://tuckey.org/urlrewrite/#download
          ???? 2、解壓和基本配置
          ???? 使用的為2.6版本,解壓后,包中含有一個(gè)urlrewrite.xml,此為關(guān)鍵的配置文件。還有l(wèi)ib文件夾下的urlrewrite-2.6.0.jar這個(gè)包。將此包放到web應(yīng)用程序的web-inf/lib下面,urlrewrite.xml放到web-inf下。
          ???? 3、修改應(yīng)用程序web-inf文件夾下的web.xml文件,添加如下內(nèi)容:
          ????? <filter>
          ???????? ??? <filter-name>UrlRewriteFilter</filter-name>
          ???????????? <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
          ????? </filter>
          ????? <filter-mapping>
          ??????? ???? <filter-name>UrlRewriteFilter</filter-name>
          ???????????? <url-pattern>/*</url-pattern>
          ????? </filter-mapping>
          ???? 4、修改應(yīng)用程序web-inf文件夾下的urlrewrite.xml文件,添加rule,內(nèi)容如下:
          ??????? <rule>
          ?????????? <name>html rule</name>
          ?????????? <from>/test/thread([0-9]+)_([0-9]+).html</from>
          ?????? ??? <to>/show.jsp?id=$1&amp;order=$2</to>
          ?????? </rule>
          ???????? 其中要求對(duì)正則表達(dá)式有所了解,以上的語(yǔ)句可以實(shí)現(xiàn)當(dāng)你訪問(wèn)http://localhost/test/thread12_56.html時(shí),會(huì)轉(zhuǎn)向http://localhost/show.jsp?id=12&order=56這個(gè)動(dòng)態(tài)頁(yè)面。
          ???????? 個(gè)人覺(jué)得需要開發(fā)人員對(duì)頁(yè)面參數(shù)非常熟悉。這個(gè)技術(shù)還是值得大家來(lái)嘗試一下的。個(gè)人論壇可以使用此技術(shù):),讓別人看不出你是使用什么編寫的。

          posted @ 2007-03-22 14:11 sugo 閱讀(2269) | 評(píng)論 (3)編輯 收藏

          ????? 實(shí)現(xiàn)了基本的網(wǎng)絡(luò)圖片、mp3、影片下載,原理為首先根據(jù)要下載的圖片(mp3、影片)的url,將它的信息寫入一個(gè)臨時(shí)文件。然后再?gòu)倪@個(gè)臨時(shí)文件將信息導(dǎo)入到真正你想要存儲(chǔ)的圖片(mp3、影片)。第一步為網(wǎng)絡(luò)到本地,第二步為本地到本地。
          ???????//網(wǎng)絡(luò)到本地代碼:
          ?????? ?java.net.URL l_url = new java.net.URL("http://localhost/rlzy/photo/"+addition); //圖片url地址
          ??????? java.net.HttpURLConnection l_connection = (java.net.HttpURLConnection) l_url.openConnection();
          ??????? int randomnum=(int)(Math.random()*100);
          ??????? System.out.println(randomnum);
          ??????? File f1=new File(photopath+randomnum);
          ??????? FileOutputStream o=new FileOutputStream(f1);
          ??????? l_connection.connect();
          ??????? java.io.InputStream l_urlStream;
          ???????
          ??????? l_urlStream = l_connection.getInputStream();

          ?????? byte b[]=new byte[1000];
          ?????? int n;
          ????????? while( (n=l_urlStream.read(b))!=-1)
          ????????????? {
          ????????? ??? o.write(b,0,n);
          ????????????? }
          ????????? o.close();
          ????????? l_urlStream.close();
          ????????
          ?????????
          ????????? //本地到本地
          ????????? RandomAccessFile random=new RandomAccessFile(f1,"r");
          ????????? long? forthEndPosition=0;
          ???????????File tfolder1=new File("E:/111/);//存儲(chǔ)圖片路徑
          ???????? ? tfolder1.mkdirs();//如果不存在就創(chuàng)建此文件夾,如果沒(méi)有這個(gè)步驟將會(huì)出現(xiàn)FileNotFoundException
          ??????????File f2=new File("e:/111/"+name);
          ?????????????
          ??????????RandomAccessFile random2=new RandomAccessFile(f2,"rw");?
          ????????????
          ????????? random.seek(random.length());
          ???????? ?long endPosition=random.getFilePointer();
          ??????????random.seek(forthEndPosition);
          ??????????long startPoint=random.getFilePointer();
          ????????????while(startPoint<endPosition) //開始拷貝文件信息
          ????????????????? { n=random.readByte();
          ??????????????????? random2.write(n);
          ??????????????????? startPoint=random.getFilePointer();
          ????????????????? }
          ?????????? random2.close();random.close();
          ?????????? f1.delete(); //刪除臨時(shí)文件?????
          ????????? 程序?qū)懥艘粋€(gè)簡(jiǎn)單的GUI界面?,使其看起來(lái)更像一個(gè)下載器了。如果提高下載速度還需進(jìn)一步的學(xué)習(xí)和研究。有興趣的朋友可以點(diǎn)擊下載研究
          ????????? http://sugo.gnway.net/test/FreeDown.jar(申請(qǐng)的一個(gè)免費(fèi)二級(jí)域名,速度可能不快 :-) ,另外需要sun公司的jre環(huán)境,Windows、Linux下均能運(yùn)行)
          ?????????

          posted @ 2007-01-26 14:04 sugo 閱讀(323) | 評(píng)論 (0)編輯 收藏

          ????? 報(bào)表中有這個(gè)需求,當(dāng)報(bào)表很大需要下拉時(shí),但表頭在正上方,看不到對(duì)應(yīng)的是哪一項(xiàng)的數(shù)據(jù)。此功能可以使用虛擬一個(gè)表頭來(lái)實(shí)現(xiàn)。具體的靈感來(lái)自網(wǎng)站隨著鼠標(biāo)移動(dòng)的圖片。當(dāng)鼠標(biāo)下移時(shí),圖片跟著走。對(duì)于這個(gè)需求來(lái)說(shuō)只需把圖片換成一個(gè)表格即可。
          ?????? 網(wǎng)頁(yè)中加入如下代碼:
          ??????<DIV id="thead" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; FILTER: progid:DXImageTransform.Microsoftpadding:8px; ; LEFT: expression(eval(document.body.scrollLeft)+eval(document.body.clientWidth)-980); BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; POSITION: absolute; ; TOP: expression(eval(document.body.scrollTop)+eval(document.body.clientHeight)-500); TEXT-ALIGN: center">
          <TABLE cellSpacing=0 cellPadding=0 align=center border=0>
          <TBODY>
          <TR>
          <TD>
          <EMBED style="LEFT: -73px; POSITION: absolute; TOP: 125px" align=right>
          <table bgcolor="red"? border=1>
          <tr>
          <td>sdfsd</td><td>sdfsd</td><td>sdfsd</td>
          </tr>
          </table>
          </EMBED>
          </TD>
          </TR>
          </TBODY>
          </TABLE>
          </DIV>
          ?????? 紅色代碼部分可以更替為任意html標(biāo)記,比如img、input等等。
          ?????? 注:內(nèi)嵌的表格顏色最好深一些,不然會(huì)出現(xiàn)重疊現(xiàn)象。調(diào)整虛擬表頭相對(duì)屏幕上方的位置在藍(lán)色粗體的地方,可根據(jù)需要修改。
          ?????? 當(dāng)需要打印報(bào)表時(shí),可以添加一個(gè)button來(lái)控制這個(gè)表頭的顯示 js方法為
          ?????? function control(){?
          ???????? var temp=document.getElementById("thead");
          ????????? if(temp.style.display=='none')
          ????????????? temp.style.display='' ;
          ????????? else
          ????????????? temp.style.display='none';
          ?????? }

          posted @ 2007-01-24 18:53 sugo 閱讀(1515) | 評(píng)論 (0)編輯 收藏

          ???? 使用hibernate的hql查詢,當(dāng)指定某些字段時(shí),一行數(shù)據(jù)此時(shí)得到的是相應(yīng)的一個(gè)數(shù)組。而字段全部查詢得到的是一個(gè)pojo對(duì)象。
          ???? 使用struts的邏輯標(biāo)簽顯示時(shí),如果得到的是一個(gè)pojo對(duì)象,可以使用<logic:iterate>,也可以使用<logic present>使用的時(shí)候不用再定義id,name屬性即為request或者session里存儲(chǔ)的對(duì)象的別名。然后使用<bean:write>定義兩個(gè)屬性name和logic標(biāo)簽的name一樣,property為對(duì)應(yīng)的類中定義的成員變量名字。
          ???? 如果得到的是數(shù)組的集合,則需要<logic:iterate>嵌套。例如:
          ??? <logic:iterate name="du" id="indiv" scope="session">
          ??? ???? <logic:iterate name="indiv" id="tiny">
          ????????????? <bean:write name="tiny" />
          ??????? </logic:iterate>
          ??? </logic:iterate>
          ???? 注(個(gè)人認(rèn)為):可以看到規(guī)律,下一層的name為上層的id。
          ??? 得到的是集合,如List 或者Vector等。例如:
          ?? <logic:iterate scope="session" id="du" name="dlist">
          ????? <bean:write name="du" property="wdate" />&nbsp;
          ????? <bean:define id="text" name="du" property="content" type="String"/>
          ??????<html:link href="modify.do" paramId="id" paramName="du" paramProperty="id" linkName="mod"? />
          ????? <html:button property="modify" onclick="mod.click()" value="modify" />
          ????? <html:textarea property="content" value="<%= text %>"></html:textarea><br>
          ????? <bean:write name="du" property="username" />&nbsp;
          ????? <bean:write name="du" property="weather" />&nbsp;<br>
          ????? <html:link href="modify.do?manipulate=delete" paramId="id" paramName="du" paramProperty="id"??????? linkName="del"? />
          ????? <html:button property="delete" onclick="del.click()" value="delete" />
          ??? </logic:iterate>
          ??? 例子中還包括在一個(gè)組件中填值,使用<bean:define>標(biāo)簽,可以得到一個(gè)對(duì)象,id就是對(duì)象的引用。
          ????<html:link>的linkName相當(dāng)于超鏈接<a href="">中的id屬性,<html:link>的page和href的不同,page需要相對(duì)路徑,url前面需要加上/,href則不用。<html:link>參數(shù)傳遞,如果確定需要傳遞的參數(shù),直接跟在url后面即可。如果是動(dòng)態(tài)的,則需要paramId, paramName, paramProperty 。第一個(gè)為參數(shù)名稱,第二個(gè)為存儲(chǔ)的對(duì)象的名字,如在request、session中存儲(chǔ)的名字,第三個(gè)就是這個(gè)對(duì)象里面的成員變量。多個(gè)參數(shù)一般使用HashMap。
          ??? Struts中的action,即便是不想用ActionForm,也需要在action的配置屬性里寫入,否則會(huì)出現(xiàn)空值的問(wèn)題,今天遇到了,所以定義DynaActionForm還是必要的。
          ??? hibernate一般的數(shù)據(jù)庫(kù)操作都通過(guò)session來(lái)進(jìn)行,我把所有涉及的操作都寫成了一個(gè)ObjectDAO,比較方便操作。

          posted @ 2007-01-15 20:39 sugo 閱讀(314) | 評(píng)論 (0)編輯 收藏

          ??? 當(dāng)提交表單時(shí),此時(shí)操作人員只需等待結(jié)果返回,這里,我實(shí)現(xiàn)了一個(gè)覆蓋網(wǎng)頁(yè)的方法,使得整個(gè)網(wǎng)頁(yè)被一個(gè)很大的div覆蓋,這樣操作人員就不能點(diǎn)擊頁(yè)面的內(nèi)容了。實(shí)現(xiàn)很簡(jiǎn)單,一個(gè)div
          ??? <div id="doing"? style="Z-INDEX: 12000; LEFT: 0px; WIDTH: 100%; CURSOR: wait; POSITION: absolute; TOP: 0px; HEIGHT: 100%; display:none ">
          ??????????? <table width="100%" height="100%">
          ??????????????? <tr align="center" valign="middle">
          ??????????????????? <td>
          ??????????????????????? <table width="169" height="62" bgcolor="#99cccc" style="FILTER: Alpha(Opacity=75); WIDTH: 169px; HEIGHT: 62px">
          ??????????????????????????? <tr align="center" valign="middle">
          ??????????????????????????????? <td>頁(yè)面提交中.<br>
          ??????????????????????????????????? Loading.</td>
          ??????????????????????????? </tr>
          ??????????????????????? </table>
          ??????????????????? </td>
          ??????????????? </tr>
          ??????????? </table>
          ??????? </div>
          ???? 頁(yè)面最初載入時(shí)把它隱藏起來(lái),當(dāng)按下提交按鈕時(shí)讓它顯示。結(jié)果返回后再次讓它隱藏。jsp代碼:
          ???? <%
          ???????? ?String content=request.getParameter("tc");
          ????????? if(content==null){
          ??? %>
          ??????? <form action="#" method="post" onsubmit="return show()">
          ????????? <textarea name="tc">dfdfsdf
          ???????????? dfdaf</textarea>
          ??????????<input type=submit value=" go "? >
          ?????? </form>
          ?? <%
          ???? }
          ?????? else{
          ????????? ?if(content.indexOf("\n")==-1)
          ??????????? ?out.println("haha");
          ??????????? // content=content.replaceAll("\n","<br>");
          ?? %>
          ????????? <textarea> <% out.println(content); %>
          ?????? ?</textarea>
          ?? <%
          ???? ?}
          ?? %>
          ?? show方法:
          ??? function show(){
          ???????? document.getElementById('doing').style.display=''
          ??????? ?return true;
          ?? }
          ??? 當(dāng)表單提交并返回結(jié)果時(shí),頁(yè)面重新加載,div的display屬性自動(dòng)又變?yōu)閚one。達(dá)到了想要的效果。

          posted @ 2007-01-14 23:31 sugo 閱讀(2073) | 評(píng)論 (2)編輯 收藏

          主站蜘蛛池模板: 贵德县| 岱山县| 福安市| 中宁县| 黄梅县| 汝州市| 嘉义市| 东丽区| 昌宁县| 牡丹江市| 汕头市| 北碚区| 华安县| 阜阳市| 塘沽区| 军事| 武鸣县| 凌源市| 黎平县| 宜都市| 亚东县| 南丰县| 景东| 南充市| 集安市| 青河县| 建昌县| 普安县| 陕西省| 平陆县| 余干县| 利川市| 巴青县| 子洲县| 易门县| 安多县| 丽江市| 玛曲县| 威信县| 江津市| 襄城县|