2013年10月17日 星期四

筆記

Runtime-polymorphism
http://blog.sanaulla.info/2013/05/14/runtime-polymorphism-in-java/

sub class 繼承 super class 後,sub class 的 constructor 一定要呼叫某一個 super class 的 constructor
若沒有宣告任何 super(...) 時,預設將呼叫 super class 中沒有參數的 constructor
若 super class 所有定義的 constructor 皆有參數,會拋出 compilation error: Implicit super constructor XXXX() is undefined. Must explicitly invoke another constructor

2013年10月14日 星期一

攔截 Jersey 的 Exception 時略過 Jersey 自身吐出的 Exception

如果在使用 ExceptionMapper 時,攔截了所有的 RuntimeException 的話,預設會連 Jersey 吐的 WebApplicationException 一起攔截
因此會導致像是透過 GET 去存取應該用 POST 存取的 URL 時,應該要吐的 405 Method Not Allowed 一起被攔截並轉成指定的 Response 了。
而單獨略過 WebApplicationException 的方法可以參考 [1]。

2013年10月11日 星期五

使用 Jersey + Multi-part 接受檔案上傳

基本參考對象是 [6] 的範例,因為 Jersey 基本上已經做完大部分的事情,所以程式碼其實很簡單
不過在佈署 Jersey 時可能會有一些奇怪的問題~

2013年10月9日 星期三

在 HTTP header 放入特殊字元或文字

在正常的 HTTP header 中,依據 [1] 的回應,RFC 2616 文件中有以下的描述。
Words of *TEXT MAY contain characters from character sets other than ISO-8859-1 [22] only when encoded according to the rules of RFC 2047 [14].
因此 HTTP header 在不使用編碼的情況下,預設是以 ISO-8859-1 編碼。
而要放入 ISO-8859-1 不支援的字元時,必須使用 MIME 編碼才行。

解決在 eclipse 輸入中文會變亂碼

在 Windows 7(或 Windows XP)底下,直接從 eclipse 執行內含使用 Scanner 的程式
要接受使用者輸入時,會發現輸入的字串直接輸出都會是亂碼~
其實問題本身是系統編碼跟環境編碼不一致的問題。
因為 Windows 7(或 Windows XP)在繁體中文的環境中預設使用的編碼是 Big5
但是 eclipse 預設的編碼是 UTF-8,因此會發生 eclipse 使用 UTF-8 去編碼實際上是 Big5 的字元,就會變成亂碼了。