E-MAIL:i@openwudi.com
DownloadAction
這個(gè)類(lèi)最大限度的減少了文件下載操作代碼量,用起來(lái)也很簡(jiǎn)單。寫(xiě)一個(gè)類(lèi)并且繼承DownloadAction,重寫(xiě)getStreamInfo方法。由于此方法需要返回一個(gè)DownloadAction.StreamInfo類(lèi)型的,并且DownloadAction.StreamInfo是一個(gè)接口,我們需要返回一個(gè)DownloadAction.StreamInfo接口的實(shí)現類(lèi)。
Struts提供了2個(gè)實(shí)現類(lèi)DownloadAction.FileStreamInfo, DownloadAction.ResourceStreamInfo 具體區別我就不闡述了,它們都可以得到文件流。
以下是范例代碼:
----------------------------不算華麗的分割線(xiàn)-----------------------------------------
package cn.iego.wudi.strutsdemo.user.web.struts.actions;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DownloadAction;
public class WudiDownload extends DownloadAction {
@Override
protected StreamInfo getStreamInfo(ActionMapping arg0, ActionForm arg1,
HttpServletRequest arg2, HttpServletResponse arg3) throws Exception {
return new DownloadAction.ResourceStreamInfo("application/zip", this.getServlet().getServletContext(), "/WEB-INF/a.zip");
}
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
response.setHeader("Content-Disposition", "attachment;filename=w.zip");
return super.execute(mapping, form, request, response);
}
}
----------------------------不算華麗的分割線(xiàn)-----------------------------------------
重寫(xiě)execute方法設置請求頭為附件格式
把這個(gè)Action加入到struts-config.xml中,大功告成。
<action path="/wudiDown" type="cn.iego.wudi.strutsdemo.user.web.struts.actions.WudiDownload"></action>
聯(lián)系客服