使用Struts+ognl進(jìn)行文件下載

Struts2框架不僅提供了一系列的攔截器幫我們完成驗(yàn)證,參數(shù)注入的任務(wù),還可以使用不同的type 完成不同的功能,接下來(lái)解析一下使用配置文件Action中結(jié)果類型為stream時(shí)完成文件下載的功能。

需要理解的是,Action在值棧中,而ognl的根就是值棧。這就是為什么在配置文件中可以使用ognl表達(dá)式來(lái)獲取Action的屬性(Action中要實(shí)現(xiàn)對(duì)應(yīng)屬性的get方法)。

步驟一:配置struts.xml配置文件


配置結(jié)果類型為stream

步驟二:配置參數(shù)

? ? ?1)配置ContentType:配置需要下載文件的web類型,在web.xml中尋找zip對(duì)應(yīng)的mine-type

? ? ?2)配置inputName:配置流的名稱,需要在Action提供對(duì)應(yīng)的Set(),Get()方法。這個(gè)流就是給瀏覽器用戶下載的流。

? ? 在Action中完成相關(guān)代碼:

(注意需要使用ServletContext來(lái)獲得流)

? ? ?3)配置contentDisposition:

? ? ?該內(nèi)容需要放在響應(yīng)頭中,而響應(yīng)頭只能使用拉丁碼表,因此,如果我們的文件名稱為中文,則需要使用URLEncoder編碼對(duì)中文進(jìn)行編碼才能發(fā)送。

在此,我們是用ognl表達(dá)式來(lái)完成這一需求。

<param name="contentDisposition">

? ? ?attachment;filename="${filename}"?

</param>

? ? ?注意:a.此處不是EL表達(dá)式,EL表達(dá)式只在jsp頁(yè)面出現(xiàn),不在配置文件中出現(xiàn)。

? ? ? ? ? ? ? ? ?b.ognl表達(dá)式中根是值棧,值棧中放的是Action

? ? ? ? ? ? ? ? ?c.配置文件中使用ognl表達(dá)式的格式是${},在括號(hào)中填寫ognl。由于沒有加#,所以是從根,即Action中取值

? ? ? ? ? ? ? ? ?d.在Action中添加filename屬性,并對(duì)其完成轉(zhuǎn)碼。


? ? ?4)配置bufferSize:設(shè)定緩沖區(qū)大小


到此已經(jīng)完成了所有工作,運(yùn)行后的結(jié)果為:


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 標(biāo)簽 如果要配置的標(biāo)簽,那么必須要先配置標(biāo)簽,代表的包的概念。 包含的屬性 name包的名稱,要求是唯一的,管理a...
    偷偷得路過(guò)閱讀 1,512評(píng)論 0 0
  • 概述 什么是Struts2的框架Struts2是Struts1的下一代產(chǎn)品,是在 struts1和WebWork的...
    inke閱讀 2,337評(píng)論 0 50
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚_t_閱讀 34,623評(píng)論 18 399
  • 看了標(biāo)題也許不太清楚,所以先上兩張 滴滴 的截圖,對(duì)比一下: 應(yīng)該可以明顯的看到,第一張圖中紅色框中的“分鐘”兩個(gè)...
    齊小政閱讀 14,884評(píng)論 11 38
  • 疲累的雙眼打著架 亢奮的大腦抽著風(fēng) 夜不能寐,往事翻騰 點(diǎn)點(diǎn)滴滴的倒放 讓心一絲絲揪緊 充滿了悔恨與落寞 我也快忘...
    大橘子_7983閱讀 397評(píng)論 0 2

友情鏈接更多精彩內(nèi)容