1、學習案例:通過在downloadfile.jsp頁面點擊“下載文件”,查看文件是不是可以成功下載。
2、案例分析:struts2文件下載只需簡單配置便可。
a)先在下載頁面(downloadfile.jsp)創(chuàng)建下載文件的鏈接
<a href="downloadFile">下載文件</a>
b)創(chuàng)建action(DownloadFileAction.java)
只需創(chuàng)建1個InputStream類型類型的get方法。
注意:此處方法名規(guī)則為:get+自定義名稱。自定義名稱會在struts.xml中用到。
c)配置struts.xml
文件下載默許使用的返回結(jié)果名稱為success。
<result type="stream">
<param name="contentDisposition">attachment;filename="filecuijun.txt"</param>
<param name="inputName">downloadFile</param>
</result>
通過之前的學習,我們了解到type="stream"用于文件下載,我們可以在struts-default.xml文件中查看,同時,我們找到其對應的類:org.apache.struts2.dispatcher.StreamResult。有興趣的朋友自行研究。
d)通過以上步驟便可完成簡單的文件下載。
e)注意:
1、struts.xml中配置的返回結(jié)果,必須是stream類型。
2、返回結(jié)果必須傳遞contentDisposition和inputName
3、contentDisposition中的參數(shù)格式必須為:attachment;filename="文件名"
4、contentDisposition中attachment;表示不管甚么類型的文件都得提示保存或打開,不能直接在閱讀器顯示。大家可以自行測試。
5、inputName指定的名稱既是我們在action中定義的方法的名稱。必須1致,不然struts2不知道你是要求的那個方法。
6、Action中人return的文件名稱是服務器中的資源名稱。而contentDisposition中filename的名稱是在下載文件時,保存到客戶真?zhèn)€名稱。
3、經(jīng)驗之談:
a)網(wǎng)上的1些查看文檔都是由源碼生成的,大家有興趣可以自己制作。而我們學習中1般要參考文檔和源碼配合看。參考文檔只是為了方便。大家自行選擇。
b)大家1定要學會給自己出問題,然后自己再想法解決。有人會說,我這不是自找難看嗎,其實不是這樣的,當我們想法出困難時,其實也是在加深我們對知識點的記憶。這類方式還是提倡的。比如:《Struts2之struts2文件上傳詳解》這章,那個朋友測試出:org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException這個異常了。有的話,你們想到解決方法了嗎。
the request was rejected because its size (31974169) exceeds the configured maximum (2097152)通過這段話,我們可以知道我們上傳的文件大小超越了默許上傳問價的大小。而怎樣修改呢。我之前說過struts大部份功能都是通過攔截器實現(xiàn)的。而在struts-default.xml中我們可以找到fileUpload這個攔截器,它在defaultStack中有存在,說明我們上傳文件的功能是由它實現(xiàn)的。通過其對應的實現(xiàn)類,我們可以發(fā)現(xiàn)有個maximumSize成員變量,而它恰好也有set方法,這是你又會想到甚么呢?,我之前又說過,攔截器傳值怎樣傳。所以我們在對應的action中配置攔截器。固然這樣是不行的。我只是給大家講用已有的知識分析問題的思路。這類方法行不通,我們再想一想還有甚么辦法,我之前在《Struts2之default.properties詳解》中有講過struts.multipart.parser=jakarta,配置默許文件上傳組件。而在它下方第3行有:struts.multipart.maxSize=2097152這樣1個配置。下面怎樣弄,大家應當會吧。
好了,今天就講這么多,說多了大家就該無聊了。
4、參考項目:http://download.csdn.net/detail/u011638419/8222629
5、逐日1樂:
甲:“經(jīng)人介紹,我連續(xù)相親10次,終究相到1個有緣的人。”
乙:“有緣?怎樣說?”
甲:“他就是我第1次相親的對象。”
終究解釋權(quán)歸愛尚合伙人(www.23hhr.com)所有,轉(zhuǎn)載請注明出處。