有陣子的新聞了...
雖然 Google 自己開發了Dalvik Virtual Machine 技術, 但仍然 必免不了 Oracle 控告的命運!
但以Open Source 來說,對於開發者沒有多大影響就好囉..
小綠人... 你真的中招了!
有陣子的新聞了...
雖然 Google 自己開發了Dalvik Virtual Machine 技術, 但仍然 必免不了 Oracle 控告的命運!
但以Open Source 來說,對於開發者沒有多大影響就好囉..
小綠人... 你真的中招了!
Struts1和Struts2的比較
翻譯:zhiyong.tong
出自:Apache Struts 2 Documentation
http://struts.apache.org/2.x/docs/comparing-struts-1-and-2.html
特性 |
Struts 1 |
Struts 2 |
Action classes |
Struts 1要求Action類要擴展自一個抽象基類。 Struts 1的一個共有的問題是面向抽象類編程而不是面向介面編程。 |
Struts 2的Action類實現了一個Action介面,連同其他介面一起來實現可選擇和自定義的服務。Struts 2提供一個名叫ActionSupport的基類來實現一般使用的介面。雖然,Action介面不是必須的。任何使用execute方法的POJO對象可以被當作Struts 2的Action對象來使用。 |
Threading Model |
Struts 1 Action類是單例類,因爲只有一個示例麳控制所有的請求。單例類策略造成了一定的限制幷且給開發帶來了額外的煩惱。Action資源必須是綫程安全或者同步的。 |
Struts 2 Action對象爲每一個請求都實例化對象,所以沒有綫程安全的問題。(實踐中,servlet容器産生許多丟棄的對象對於每一個請求,多於一個的對象並不影響垃圾收集) |
Servlet Dependency |
Struts 1的Action類依賴於servlet API以爲HttpServletRequest和HttpServletResponse作爲參數傳給execute方法當Action被調用時。 |
Struts 2的Action不和容器有關。Servlet上下文被表現爲簡單的Maps,允許Action被獨立的測試。Struts 2的Action可以訪問最初的請求和相應,如果需要的話。然而,其他的架構元素減少或者排除直接訪問HttpServletRequest或者HttpServletResponse的需要。 |
Testability |
測試Struts 1的主要障礙是execute方法暴露了Servlet API。第三方的擴展,Struts測試用例,提供Struts 1的集合對象。 |
Struts 2的Action可以通過實例化Action麳測試,設置屬性,然後調用方法。依賴注入的支持也是測試變得更簡單。 |
Harvesting Input |
Struts 1使用ActionForm對象麳捕獲輸入。象Action一樣,所有的ActionForm必須擴展基類。因爲其他的JavaBean不能作爲ActionForm使用,開發者經常創建多餘的類麳捕獲輸入。DynaBeans可以被用來作爲替代ActionForm的類麳創建。但是開發者可以重新描述已經存在的JavaBean。 |
Struts 2 Action屬性作爲輸入屬性,排除第二個輸入對象的需要。輸入屬性可能有豐富的對象類型這些類型有他們自己的屬性。Action的屬性可以通過標簽庫麳訪問。Struts 2也支持ActionForm形式。豐富的對象類型,包含業務或者域對象,可以被當作輸入或者輸出對象麳使用。糢型驅動特性簡化標簽對POJO輸入對象的引用。 |
Expression Language |
來寫點有關 程式設計的東西,
由於跟Java比較熟, 就來寫寫收錄有關Java String 的東西.
String 類別中已經提供了將基本資料型態轉換成 String 的 static 方法
也就是 String.valueOf() 這個參數多載的方法。
有下列幾種:
String.valueOf(boolean b) : 將 boolean 變數 b 轉換成字串
String.valueOf(char c) : 將 char 變數 c 轉換成字串
String.valueOf(char[] data) : 將 char 陣列 data 轉換成字串
String.valueOf(char[] data, int offset, int count) :
將 char 陣列 data 中 由 data[offset] 開始取 count 個元素 轉換成字串
String.valueOf(double d) : 將 double 變數 d 轉換成字串
String.valueOf(float f) : 將 float 變數 f 轉換成字串
String.valueOf(int i) : 將 int 變數 i 轉換成字串
String.valueOf(long l) : 將 long 變數 l 轉換成字串
String.valueOf(Object obj) : 將 obj 物件轉換成 字串, 等於 obj.toString()
用法就如:
int i = 10;
String str = String.valueOf(i);
這時候 str 的值"10"