struts文件下载机制
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了struts文件下载机制相关的知识,希望对你有一定的参考价值。
Struts2 中使用 type="stream" 的 result 进行下载即可。只用提供一个输入流inputStream,剩下的输出工作struts帮我们做。
1.可以为 stream 的 result 设定如下参数
contentType: 结果类型
contentLength: 下载的文件的长度
contentDisposition: 设定 Content-Dispositoin 响应头. 该响应头指定响应是一个文件下载类型, 一般取值为 attachment;filename="document.pdf".
inputName: 指定文件输入流的 getter 定义的那个属性的名字. 默认为 inputStream
这四个一般在getter方法中定义或者在execute方法执行时设置。
bufferSize: 缓存的大小. 默认为 1024
allowCaching: 是否允许使用缓存
contentCharSet: 指定下载的字符集
这三个参数一般使用默认值或者在xml文件中配置。
以上参数可以在 Action 中以 getter 方法的方式提供,也可以通过配置配置,也可以使用默认值。也可以动态设置值,在execute方法中设置。
1 package FileDownload; 2 3 import java.io.FileInputStream; 4 import java.io.InputStream; 5 6 import javax.servlet.ServletContext; 7 8 import org.apache.struts2.ServletActionContext; 9 10 import com.opensymphony.xwork2.ActionSupport; 11 12 public class FileDownLoad extends ActionSupport { 13 14 /** 15 * 16 */ 17 private static final long serialVersionUID = 1L; 18 19 private String contentType; 20 private long contentLength; 21 private String contentDisposition; 22 private InputStream inputStream; 23 24 25 public String getContentType() { 26 return contentType; 27 } 28 29 30 public long getContentLength() { 31 return contentLength; 32 } 33 34 35 // 在getter方法中设置所需要的参数 36 public String getContentDisposition() { 37 contentDisposition = "attachment;filename=filesUp.html"; 38 return contentDisposition; 39 } 40 41 42 public InputStream getInputStream() { 43 return inputStream; 44 } 45 46 47 @Override 48 public String execute() throws Exception { 49 50 //确定各个成员变量的值 51 contentType = "text/html"; 52 53 ServletContext servletContext = 54 ServletActionContext.getServletContext(); 55 String fileName = servletContext.getRealPath("/files/filesUp.html"); 56 // 打开输入流 57 inputStream = new FileInputStream(fileName); 58 contentLength = inputStream.available(); 59 60 61 return super.execute(); 62 } 63 }
上面可以在execute方法执行时动态设置参数,也可以在getter方法中设置参数。
配置文件
<!-- 文件下载 --> <action name="fileDownload" class="FileDownload.FileDownLoad"> <result type="stream"> <!-- 其他的参数在类中设置或者使用默认 --> <param name="bufferSize">2048</param> </result> </action>
以上是关于struts文件下载机制的主要内容,如果未能解决你的问题,请参考以下文章
14.VisualVM使用详解15.VisualVM堆查看器使用的内存不足19.class文件--文件结构--魔数20.文件结构--常量池21.文件结构访问标志(2个字节)22.类加载机制概(代码片段
[原创]java WEB学习笔记61:Struts2学习之路--通用标签 property,uri,param,set,push,if-else,itertor,sort,date,a标签等(代码片段