Jodd 3.6.6 發(fā)布了,Jodd 是一個開源的 Java 工具集, 包含一些實用的工具類和小型框架。簡單,卻很強大!Jodd是一個通用目的的開源Java庫少輕量級框架和組件:豆操縱的工具,更容易數(shù)據(jù)庫訪問,對網(wǎng)絡(luò)工程建設(shè)代理Proxetta,優(yōu)雅的時間處理,寵物JDateTime Madvoc分貝捆綁.你可以把Jodd想象成Java的“瑞士軍刀”,不僅小,鋒利而且包含許多便利的功能。
Jodd = Tools + IoC + MVC + DB + AOP + TX + JSON + HTML < 1.5 Mb
Jodd 被分成眾多模塊,按需選擇,其中
工具類模塊有:
jodd-core 一些工具類,包括Printf、JDateTime、StringUtil、Fast buffers等等
jodd-bean BeanUtil以及類型檢查轉(zhuǎn)換工具
jodd-props 更強大的Java Properties替代
jodd-email 更簡單易用的e-mail收發(fā)
jodd-upload 處理HTTP上傳
jodd-servlets 一些Servlet相關(guān)的工具類, 附帶一套漂亮的JSP標(biāo)簽庫
jodd-http 輕巧的HTTP客戶端
小型框架模塊有:
jodd-madvoc 一個MVC框架
jodd-petite 一個依賴注入容器
jodd-lagarto HTML/XML解析器,包含Jerry和CSSelly,讓你像jQuery一樣篩選HTML節(jié)點
jodd-lagarto-web Lagarto的Web擴展,包含Decora、HtmlStapler等等
jodd-proxetta 幫你實現(xiàn)動態(tài)代理,獲取函數(shù)參數(shù)名
jodd-dboom 數(shù)據(jù)庫訪問的輕量級封裝,可看作一個簡單的ORM
jodd-json JSON解析、序列化
jodd-vtor 一個基于注解的字段驗證框架
Jodd提供的功能有:
1. 提供操作Java bean
2. 可以從各種數(shù)據(jù)源加載Bean
3. 簡化JDBC的接連與代碼
4. 剖析SQL查詢
5. 處理時間與日期
6. 操作與格式化String
7. 搜索本地硬盤上的文件
8. 幫助處理Servlet請求等
除此之外還包含一個很小,但實用的基于JSP的MVC框架。
使用Jodd的優(yōu)點簡化和統(tǒng)一 controller ,拋棄 extends SimpleFormController ,統(tǒng)一使用 implements Controller 的方式。
2. 簡化 JSP 頁面的 bind, 不需要一個字段一個字段的綁定。
3. 對 bean 沒有任何要求,可以使用任意的 bean 做為 formBean.
使用方法簡介:
1 把 jodd.jar 放到 web-inf->lib 下,在 web.xml 里聲名標(biāo)簽:
< taglib >
< taglib-uri > jodd </ taglib-uri >
< taglib-location > /WEB-INF/lib/jodd.jar </ taglib-location >
</ taglib >
2 任意的一個 javaBean做為FormBean
package caike;
public class User {
private String userName;
private String password;
public String getPassword() {
return password;
}
public void setPassword(String pwd) {
this .password = pwd;
}
public String getUserName() {
return userName;
}
public void setUserName(String username) {
this .userName = username;
}
}
3 在 JSP 頁面使用 jodd tag:, 比如對應(yīng)用戶登錄頁面的
<% @page import = " caike.User " %>
<% @taglib uri = " jodd " prefix = " jodd " %>
< jodd:form beans ="user" scopes ="session" >
< form action ="my.htm" method ="post" >
< table width ="300" border ="0" cellspacing ="0" cellpadding ="0"
align ="center" class ="white" >
< tr >
< td height ="32" align ="right" width ="107" > 用戶名: </ td >
< td height ="32" width ="193" >< input type ="text" name ="userName"
class ="input" size ="20" > </ td >
</ tr >
< tr >
< td height ="33" align ="right" width ="107" > 密碼: </ td >
< td height ="33" width ="193" >< input type ="password" name ="password"
class ="input" size ="21" ></ td >
</ tr >
< tr >
< td height ="69" align ="center" colspan ="2" >
< input type ="submit" name ="Submit" value ="登錄" >
</ tr >
</ table >
</ form >
</ jodd:form >
4 Dispatch-servelt.xml 中對 controller 的配置
<bean id="myController" class="caike.MyController">
</bean>
不再需要這種方式:
<!--
<bean id="myController" class="caike.MyFormController">
<property name="commandClass" value="caike" />
<property name="formView" value="userForm" />
</bean>
-->
5 在 controller 中取出 user
package caike;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jodd.bean.BeanUtil;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
public class MyController implements Controller {
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception {
User user = new User();
BeanUtil.load(user, request);
System.out.println( " 用戶名: " + user.getUserName() + " 密碼: " + user.getPassword());
return null ;
}
}
需要注意的地方:
表單中對應(yīng)的名字 name 和 javaBean 里對應(yīng)的屬性名要相同。
<input type="text" name="userName"
class="input" size="20">
public class User {
private String userName;
.......
改進(jìn)記錄包括:
FIXED
[http]Fixed special case when content-length and chunked encoding exists.
NEW
[util] getResourceAsStream now has a boolean argument to disable the cache.
CHANGED
[util]Zip methods now returns resulting zip File .
FIXED
[methref]Fixed parallel access, added Pathrefs .
FIXED
[mail]Fixed parsing with MailAddress .
NEW
[mail]Added startTlsRequired and plaintextOverTLS() .
NEW
[mail]Added debug mode option and strict email address flag.
CHANGED
[bean] BeanCopy got some slight modifications and improvements.
CHANGED
[madvoc]Execution of inteceptors, filters and actions is significantly simplified.