E-MAIL:i@openwudi.com
DownloadAction
这个类最大限度的减少了文件下载操作代码量,用起来也很简单。写一个类并且继承DownloadAction,重写getStreamInfo方法。由于此方法需要返回一个DownloadAction.StreamInfo类型的,并且DownloadAction.StreamInfo是一个接口,我们需要返回一个DownloadAction.StreamInfo接口的实现类。
Struts提供了2个实现类DownloadAction.FileStreamInfo, DownloadAction.ResourceStreamInfo 具体区别我就不阐述了,它们都可以得到文件流。
以下是范例代码:
----------------------------不算华丽的分割线-----------------------------------------
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);
}
}
----------------------------不算华丽的分割线-----------------------------------------
重写execute方法设置请求头为附件格式
把这个Action加入到struts-config.xml中,大功告成。
<action path="/wudiDown" type="cn.iego.wudi.strutsdemo.user.web.struts.actions.WudiDownload"></action>
联系客服