使用WEBWORK實(shí)現(xiàn)文件上傳方法
WEBWORK是一個(gè)靈活功能強(qiáng)大的J2EE Web框架,它完全從web層脫離出來,致力于組件化和代碼重用。除了常見的功能,WEBWORK還可以利用其簡潔的設(shè)計(jì)來實(shí)現(xiàn)文件上傳功能。 利用ognl實(shí)現(xiàn)資
WEBWORK是一個(gè)靈活功能強(qiáng)大的J2EE Web框架,它完全從web層脫離出來,致力于組件化和代碼重用。除了常見的功能,WEBWORK還可以利用其簡潔的設(shè)計(jì)來實(shí)現(xiàn)文件上傳功能。
利用ognl實(shí)現(xiàn)資料綁定
WEBWORK利用ognl實(shí)現(xiàn)的資料綁定是非常實(shí)用的功能。它能夠避免繁瑣調(diào)用和對象setter,并且無需任何多余的配置文件。再加上轉(zhuǎn)換器的功能,我們可以用一個(gè)業(yè)務(wù)對象從前臺(tái)一直串到后臺(tái),無需考慮String轉(zhuǎn)化、不需要DTO、不需要FormBean。
使用數(shù)據(jù)綁定實(shí)現(xiàn)文件上傳
如果能把常見的文件上傳也用數(shù)據(jù)綁定來實(shí)現(xiàn),那就更加完美了。使用WEBWORK的文件上傳攔截器,Action再也不需要了解任何web信息,只需要對具體的Object進(jìn)行操作。需要對用戶上傳的文件進(jìn)行操作時(shí),只需調(diào)用getFile方法。
配置文件上傳攔截器
在webwork2.1.5以前,已經(jīng)有詳細(xì)介紹文件上傳問題的內(nèi)容。在2.1.5以后的版本中,這個(gè)攔截器被加入了正式release版本里面,具體攔截器為。
示例代碼
下面是一個(gè)使用WEBWORK實(shí)現(xiàn)文件上傳的Action示例代碼:
public class FileUploadAction extends ActionSupport {
private File file;
public void setFile(File file) {
file;
}
public String execute() throws Exception {
// 處理上傳文件
return SUCCESS;
}
}
需要注意欄位名稱和Action的屬性同名即可。剩下的事情就是配置攔截器:
lt;interceptorsgt;
lt;interceptor name"fileUpload" class""/gt;
lt;interceptor-stack name"defaultStack"gt;
lt;interceptor-ref name"fileUpload"/gt;
lt;interceptor-ref name"defaultStack"/gt;
lt;/interceptor-stackgt;
lt;/interceptorsgt;
lt;action name"fileUploadAction" class""gt;
lt;result name"success"gt;success.jsplt;/resultgt;
lt;/actiongt;
選擇合適的文件上傳lib
WEBWORK并沒有自己實(shí)現(xiàn)文件上傳功能,而是封裝了幾種通用的File Upload lib,包括pell、cos和apache common三種實(shí)現(xiàn)。
pell是oreilly的包,其功能最全面,也是許多人喜歡使用的文件上傳lib。apache common是apache的common中的一個(gè)文件上傳工具。webwork的封裝提供了一個(gè)通用的訪問接口,在中可以配置具體使用哪個(gè)lib。
推薦使用pell作為文件上傳lib,因?yàn)樗苷_獲取中文文件名稱。apache common會(huì)將中文文件名稱改為,而cos會(huì)產(chǎn)生亂碼。需要注意的是,webwork的封裝喪失了cos的一些功能,所以如果需要使用cos的特殊功能,建議單獨(dú)使用cos。
自定義文件存儲(chǔ)方式
在WEBWORK的文件上傳攔截器功能中,它提供的File只是一個(gè)臨時(shí)文件,Action執(zhí)行之后會(huì)被自動(dòng)刪除。因此,你必須在Action中自行處理文件的存儲(chǔ)方式,可以選擇保存到服務(wù)器的某個(gè)目錄或者保存到數(shù)據(jù)庫中。如果選擇保存到服務(wù)器的目錄,需要自己處理文件同名的問題,而cos包已經(jīng)提供了文件重名的自動(dòng)重命名規(guī)則。
總結(jié)來說,利用WEBWORK實(shí)現(xiàn)文件上傳功能可以大大簡化開發(fā)過程,通過合適的配置和選擇合適的文件上傳lib,可以輕松完成文件上傳功能的開發(fā)。