开发者学堂课程【Java Web开发系列课程 - Struts2框架入门:Struts2的文件下载】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/537/detail/7323
Struts2的文件下载
一、文件下载
1、在 servlet 中的文件下载是通过流来实现的
2、在 Struts2 中可以通过流来实现下载
使用 Http Servlet Response 来实现,和以前 Servlet 中文件下载的方式一致。注意在这个 action 执行方法中返回 null。
有三个方面来了解:
1、action代码:
代码如下:
public class DownloadAction{
public String execute()throws IOException{
HttpServletRequest req=ServletActionContext.getRequest();
HttpServletResponse resp=
ServletActionContext.getResponse();
//获取路径
String path=req.getRealpath("/download");
File file = new File(path,"Struts2.chm");
resp.setContentLength((int)file.length());
resp.setCharacterEncoding("utf-8");
resp.setContentType("application/octet-stream");
resp.setHeader("Content-Disposition",
"attachment;filename=Struts2.ch);
byte[]buffer new byte[400];
int len=0;
Inputstream is = new FileInputstream(file);
Outputstream os = resp.getOutputStream();
while((len=is.read(buffer))!=-1){
os.write(buffer,0,len);
}
os.close();
is.close();
return null;
}
}
2、struts.xml 配置
代码如下:
<package name="default"namespace="/"extends="struts-default">
<!-·当action的处理方法返回空是
不用配置结果集->
<action name="download"
class="cn.sxt.action.DownLoadAction">
</action>
</package>
3、Jsp 页面
代码如下:
<
Boby>
<a href=“download.action ”>struts2的文档</a>
</boby >
使用 Struts2本来结果集来进行文件下载
1、 Action 的代码
代码如下:
public class StreamDownloadAction
{
private String fileName;
public String execute(){
return Action.SUCCESS;
}
public Inputstream
getInputstream()throws
FileNotFoundException{
HttpServletRequest req=ServletActionContext.getRequest();
/
/获取路径
String
path=reg.getRealPath("/download");
return new
FileInputStream(new File(path,fileName));
}
public String getFileName(){
return
fileName;
}
public void setFileName(String fileName){
this.fileName
=
fileName;
}
}
2、Strut.xml 配置文件
代码如下:
<action name="streamDownload"
class="cn.sxt.action.StreamDownloadAction">
<result type="stream">
<param name="inputName">inputstream</param>
<param
name="contentDisposition">attachment;filename=$fileName}</par
am>
</result>
</action>
3、Jsp 页面
代码如下
<body>
<a
href="streamDownLoad..action?fileName:=5 truts2.chm">struts2的文档
</a>
<a
href="streamDownload.action?fileName=Struts1.3.chm">struts1
档</a>
</body>