排序Vector for Java

2009年1月19日 尚無評論

這次是說的是如何將Vector進行排序

先前大致瞭解Java2本身有提供排序功能,但通常都在寫資料庫的程式
只要是資料排序,一般都在資料庫裡做掉了
很少很少需要在程式進行排序,剛好最近有study一下
寫上來與大家分享..^^

JAVA很簡單,只要是implement List,就可以透過Collections就可以排序啦
以下範例就是一個很簡單的排序:

       Vector v = new Vector();

       v.add(“anupama”);
       v.add(“jyothi”);
       v.add(“durga”);
       v.add(“vaseef”);
       v.add(“priya”);

       Collections.sort(v);

       System.out.println(“Vector elements after sorting : “);
       for(int i=0; i<v.size(); i++)
       System.out.println(v.get(i));

而如果Vector存入的不是字串這種單純的物件呢?
Collections可以透過實作Comparator來進行排序

以下就是要針對GoodItem的某一屬性進行比較排序,所以實作Comparator的compare即可
當比較大時就回傳1,反之就回傳-1:

public class PitemSort implements Comparator{
       public int compare(Object obj1, Object obj2){
           GoodItem o1=(GoodItem) obj1;
           GoodItem o2=(GoodItem) obj2;

           if(o1.getPrice()>o2.getPrice()){
               return 1;
           }
           if(o1.getPrice()<o2.getPrice()){
               return -1;
           }
           return 0;
       }
   }

而要使用時,只要import進行在sort時,指定要以實作的Comparator進行排序即可,範例指令如下: 

      Collections.sort(v, new PitemSort());

如此一來,就可以很簡單進行排序啦,不用再自己寫排序方法啦,而Collections非常的彈性,如果要進行
複雜的排序,應該都可以達到,今天就先講簡單的就好!有需要請自行去查API囉!!

參考資料:
http://www.programmersheaven.com/mb/java/381483/381921/re-sorting-in-vector/?S=B20000

Categories: JAVA Tags: , ,

jQuery ajax使用在JAVA注意事項 – 編碼問題

2009年1月18日 2 則評論

今天花了一些時間在排除一個怪現象
因為覺得很奇特,所以特別寫上註記一下
給自己加深印象,也給可能會遇到的人參考一下

就是今天在撰寫程式利用jQuery的ajax 向另一隻程式要資料
寫法都沒有問題,但就是會出現ajax Error

初步排除法:
1.先確認程式是否無誤
2.再確認編碼是否為utf8
3.再確認回傳參數是否符合格式 (今天是使用json)

都確認過了,但就還是失敗
所以先把資料頁存成htm的方式試試
怪了,竟然成功了說 =.=|||

再仔細確認剛剛檢查的步驟,每一項都正確但只要換成JSP
就會失敗…最後發現問題點在

<%@ page contentType=”text/html; charset=UTF8″ %>

要調整為以下才行

<%@ page contentType=”text/html; charset=UTF-8” %>

怪吧! 瀏覽器兩者都認為是UTF-8的格式,但jQuery似乎比較挑一點
一定要寫UTF-8才行..@@ (又不知死了多少腦細胞了..)

Categories: JAVA Tags: ,

jQuery 小技巧 – 在非UTF8語系網頁傳遞中文參數排除方式

2009年1月14日 尚無評論

jQuery 在UTF8語系網頁傳遞中文時是一切正常的

但如果是big5語系時就會發生問題,因此要進行轉碼才能正常傳遞參數才行
在網頁用ajax傳遞時,要先將資料利用javascript的escape function進行轉碼

例如:

$(document).ready(function(){
  $.post(
     “getdata.asp”,
     {
       id:
escape(“中文字喔!!”)
     },
     function(txt){
      alert(txt);

     }
  );
});


以下是PHP版的解escape的函式:

function unescape($str) {
     $str = rawurldecode($str);
     preg_match_all(“/%u.{4}|&#x.{4};|&#\d+;|&#\d+?|.+/U”,$str,$r);
     $ar = $r[0];
     foreach($ar as $k=>$v) {
         if(substr($v,0,2) == “%u”)
         $ar[$k] = iconv(“UCS-2″,”Big5”,pack(“H4”,substr($v,-4)));
         else if(substr($v,0,3) == “&#x”)
         $ar[$k] = iconv(“UCS-2″,”Big5”,pack(“H4”,substr($v,3,-1)));
         elseif(substr($v,0,2) == “&#”) {
             $ar[$k] = iconv(“UCS-2″,”GBK”,pack(“n”,preg_replace(“/[^\d]/”,””,$v)));
         }
     }
     return join(“”,$ar);
  } 


以下是Java版本解escape的函式:

/**
* JavaScript escape/unescape 編碼的Java實現
* author jackyz keep this copyright info while using this method by free
*/
public class JavaScriptEscape {
   private final static String[] hex = { “00”, “01”, “02”, “03”, “04”, “05”,
           “06”, “07”, “08”, “09”, “0A”, “0B”, “0C”, “0D”, “0E”, “0F”, “10”,
           “11”, “12”, “13”, “14”, “15”, “16”, “17”, “18”, “19”, “1A”, “1B”,
           “1C”, “1D”, “1E”, “1F”, “20”, “21”, “22”, “23”, “24”, “25”, “26”,
           “27”, “28”, “29”, “2A”, “2B”, “2C”, “2D”, “2E”, “2F”, “30”, “31”,
           “32”, “33”, “34”, “35”, “36”, “37”, “38”, “39”, “3A”, “3B”, “3C”,
           “3D”, “3E”, “3F”, “40”, “41”, “42”, “43”, “44”, “45”, “46”, “47”,
           “48”, “49”, “4A”, “4B”, “4C”, “4D”, “4E”, “4F”, “50”, “51”, “52”,
           “53”, “54”, “55”, “56”, “57”, “58”, “59”, “5A”, “5B”, “5C”, “5D”,
           “5E”, “5F”, “60”, “61”, “62”, “63”, “64”, “65”, “66”, “67”, “68”,
           “69”, “6A”, “6B”, “6C”, “6D”, “6E”, “6F”, “70”, “71”, “72”, “73”,
           “74”, “75”, “76”, “77”, “78”, “79”, “7A”, “7B”, “7C”, “7D”, “7E”,
           “7F”, “80”, “81”, “82”, “83”, “84”, “85”, “86”, “87”, “88”, “89”,
           “8A”, “8B”, “8C”, “8D”, “8E”, “8F”, “90”, “91”, “92”, “93”, “94”,
           “95”, “96”, “97”, “98”, “99”, “9A”, “9B”, “9C”, “9D”, “9E”, “9F”,
           “A0”, “A1”, “A2”, “A3”, “A4”, “A5”, “A6”, “A7”, “A8”, “A9”, “AA”,
           “AB”, “AC”, “AD”, “AE”, “AF”, “B0”, “B1”, “B2”, “B3”, “B4”, “B5”,
           “B6”, “B7”, “B8”, “B9”, “BA”, “BB”, “BC”, “BD”, “BE”, “BF”, “C0”,
           “C1”, “C2”, “C3”, “C4”, “C5”, “C6”, “C7”, “C8”, “C9”, “CA”, “CB”,
           “CC”, “CD”, “CE”, “CF”, “D0”, “D1”, “D2”, “D3”, “D4”, “D5”, “D6”,
           “D7”, “D8”, “D9”, “DA”, “DB”, “DC”, “DD”, “DE”, “DF”, “E0”, “E1”,
           “E2”, “E3”, “E4”, “E5”, “E6”, “E7”, “E8”, “E9”, “EA”, “EB”, “EC”,
           “ED”, “EE”, “EF”, “F0”, “F1”, “F2”, “F3”, “F4”, “F5”, “F6”, “F7”,
           “F8”, “F9”, “FA”, “FB”, “FC”, “FD”, “FE”, “FF” };

   private final static byte[] val = { 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
           0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
           0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
           0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
           0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x00, 0x01,
           0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x3F, 0x3F, 0x3F,
           0x3F, 0x3F, 0x3F, 0x3F, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x3F,
           0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
           0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
           0x3F, 0x3F, 0x3F, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x3F, 0x3F,
           0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
           0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
           0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
           0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
           0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
           0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
           0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
           0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
           0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
           0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
           0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
           0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
           0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
           0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F };

   /**
    * 編碼
    * 
    * @param s
    * @return
    */
   public static String escape(String s) {
       StringBuffer sbuf = new StringBuffer();
       int len = s.length();
       for (int i = 0; i < len; i++) {
           int ch = s.charAt(i);
           if ('A' <= ch && ch <= 'Z') {
               sbuf.append((char) ch);
           } else if ('a' <= ch && ch <= 'z') {
               sbuf.append((char) ch);
           } else if ('0' <= ch && ch <= '9') {
               sbuf.append((char) ch);
           } else if (ch == '-' || ch == '_' || ch == '.' || ch == '!'
                   || ch == '~' || ch == '*' || ch == '\'' || ch == '('
                   || ch == ')') {
               sbuf.append((char) ch);
           } else if (ch <= 0x007F) {
               sbuf.append('%');
               sbuf.append(hex[ch]);
           } else {
               sbuf.append('%');
               sbuf.append('u');
               sbuf.append(hex[(ch >>> 8)]);
               sbuf.append(hex[(0x00FF & ch)]);
           }
       }
       return sbuf.toString();
   }

   /**
    * 解碼 說明:本方法保證 不論參數s是否經過escape()編碼,均能得到正確的「解碼」結果
    * 
    * @param s
    * @return
    */
   public static String unescape(String s) {
       StringBuffer sbuf = new StringBuffer();
       int i = 0;
       int len = s.length();
       while (i < len) {
           int ch = s.charAt(i);
           if ('A' <= ch && ch <= 'Z') {
               sbuf.append((char) ch);
           } else if ('a' <= ch && ch <= 'z') {
               sbuf.append((char) ch);
           } else if ('0' <= ch && ch <= '9') {
               sbuf.append((char) ch);
           } else if (ch == '-' || ch == '_' || ch == '.' || ch == '!'
                   || ch == '~' || ch == '*' || ch == '\'' || ch == '('
                   || ch == ')') {
               sbuf.append((char) ch);
           } else if (ch == '%') {
               int cint = 0;
               if ('u' != s.charAt(i + 1)) {
                   cint = (cint << 4) | val[s.charAt(i + 1)];
                   cint = (cint << 4) | val[s.charAt(i + 2)];
                   i += 2;
               } else {
                   cint = (cint << 4) | val[s.charAt(i + 2)];
                   cint = (cint << 4) | val[s.charAt(i + 3)];
                   cint = (cint << 4) | val[s.charAt(i + 4)];
                   cint = (cint << 4) | val[s.charAt(i + 5)];
                   i += 5;
               }
               sbuf.append((char) cint);
           } else {
               sbuf.append((char) ch);
           }
           i++;
       }
       return sbuf.toString();
   }

   public static void main(String[] args) {
       String stest = “中文1234abcd”;
       System.out.println(stest);
       System.out.println(escape(stest));
       System.out.println(unescape(escape(stest)));
   }

}

參考資料:
http://zhanghaidang.javaeye.com/blog/150470
http://blog.csdn.net/mubingyun/archive/2008/12/09/3482219.aspx
http://skiyo.cn/article/Skiyo-38-1223063418.html

Categories: Java Script Tags: , ,

jQuery 學習筆記(二) – Form 欄位應用

2009年1月9日 3 則評論

學習jQuery,剛開始還不太習慣,語法很像javascript(呵~他本來就算在其中),但又不能直接拿來當物件用,真是麻煩呀~~,所以使用jQuery,最好基礎打好一點,不然可能會花費很多時間在查文件或TRY TRY 是否可行。

用Javascript ,以前最常就是在驗證欄位,雖然現在用了jQuery搞不好會變成一些傳遞參數還是畫面特效的
不過驗證欄位還是基本必須的啦,所以找到不錯的文章在提到jQuery取form裡的相關欄位的方式為何:

獲取一組radio被選中項的值
var item =
$('input[@name=items][@checked]').val();
獲取select被選中項的文本
var item =
$(“select[@name=items]
option[@selected]”).text();
select下拉框的第二個元素為當前選中值
$('#select_id')[0].selectedIndex
= 1;
radio單選組的第二個元素為當前選中值
$('input[@name=items]').get(1).checked =
true;

獲取值:

文本框,文本區域:$(“#txt”).attr(“value”);
多選框checkbox:$(“#checkbox_id”).attr(“value”);
單選組radio:  
$(“input[@type=radio][@checked]”).val();
下拉框select: $('#sel').val();

控制表單元素:
文本框,文本區域:$(“#txt”).attr(“value”,'');//清空內容
               
$(“#txt”).attr(“value”,'11');//填充內容

多選框checkbox: $(“#chk1”).attr(“checked”,'');//不打勾
               
$(“#chk2”).attr(“checked”,true);//打勾
               
if($(“#chk1”).attr('checked')==undefined) //判斷是否已經打勾

單選組radio:   
$(“input[@type=radio]”).attr(“checked”,'2');//設置value=2的項目為當前選中項
下拉框select:  
$(“#sel”).attr(“value”,'-sel3');//設置value=-sel3的項目為當前選中項
              
$(“<option value='1'>1111</option><option
value='2'>2222</option>”).appendTo(“#sel”)//添加下拉框的option
              
$(“#sel”).empty();//清空下拉框

感覺複雜多了,有空再來精簡一下。

參考資料:
http://www.cnblogs.com/xlfj521/archive/2008/01/29/1057375.html

Categories: Java Script Tags:

輔仁電子報盃攝影比賽~得獎囉

2009年1月8日 2 則評論

前陣子,剛好有收到輔大電子報,並有舉辦輔仁電子報盃攝影比賽,想說去參加看看
所以挑選了二張照片,就是先前網誌有Po 的兩篇,如下:

沒想到昨天接到輔大公共事務室來電,說我得獎了,請找時間去領獎
哈~真高興,從得知訊息到領到獎都還不知是哪一張得獎.也不知是得什麼獎.(也不好意問!!)

上網查一下,原來是親情那張~銅牌…我原本還看好 輔大的聖誕燈飾呢..=.=||

用戶插入圖片

反正得獎就是肯定~哈~~哈~~有獎就會開心!!
第一次參加比賽就有得獎,心情就好!

相關的得獎作品請看: 輔仁電子報盃攝影比賽~得獎名單出爐嚕!

Categories: 攝影543 Tags:
分頁: 上一頁 1 2 3 ... 32 33 34 35 36 37 38 ... 86 87 88 下一頁