Struts2文件下载浅析
Struts2极大的简化了文件上传和下载,本文将主要介绍一下Struts2文件下载的实现
1、功能主要是,在下载页面点击下载后,则下载相应的文件
2、代码部分
jsp页面downloadPage:
<body>
<!--
该页面主要就是一个超链接,点击进入DownloadAction,
并传递三个参数:原文件的名字,文件类型,显示的下载文件名
-->
<a href="${pageContext.request.contextPath}/download?res=example.ppt&resType=application/vnd.ms-powerpoint&resName=MyDownload">点击下载文件</a>
</body>
*************************************************************
DownloadAction:
public class DownloadAction extends ActionSupport{
private String res; //下载的目标资源
private String resType; //下载的文件类型
private String resName;//下载的文件名
public String getRes() throws Exception {
//对res请求参数进行处理,(中文)
return new String(res.getBytes("iso-8859-1"),"utf-8");
}
public void setRes(String res) {
this.res = res;
}
public String getResType() {
return resType;
}
public void setResType(String resType) {
this.resType = resType;
}
public String getResName() {
return resName;
}
public void setResName(String resName) {
this.resName = resName;
}
//提供一个返回值为InputStream的get方法
public InputStream getTarget() throws IOException {
//在目录下我新建了一个downloadFile文件夹,用于存放要下载的文件
return new FileInputStream(ServletActionContext.getServletContext().getRealPath("/downloadFile")+res);
}
@Override
public String execute() throws Exception {
return SUCCESS;
}
}
*************************************************************
配置文件struts.xml:
<action name="download" class="action.DownloadAction">
<result type="stream"> <!-- 二进制流 -->
<!-- 该参数指定二进制流的-->
<param name="contentType">${resType}</param>
<!-- 指定返回InputStream的方法-->
<param name="inputName">target</param>
<param name="contentDisposition">filename=${resName}</param>
<!--控制文件下载缓冲的大小-->
<param name="bufferSize">4096</param>
</result>
</action>
简要介绍一下参数的含义:
1) <param name="contentDisposition">filename=${resName}</param>
contentDisposition默认是 inline(内联的), 比如说下载的文件是文本类型或者图片类型的,就直接在网页上打开,不能直接打开的才会打开下载框自己选择
2) <param name="inputName">target</param>,这个target名字要和DownloadAction.java类中的getTarget()方法名去掉get,小写首字母一致
可能对于各类文件的类型有同学并不是很清楚,这里介绍一下如何查询文件在web的类型
进入自己安装的tomcat ---> conf文件 ---> 打开web.xml 里面列出了所有文件的类型
Struts2文件下载浅析的更多相关文章
- struts2文件下载 <result type="stream">
<!--struts.xml配置--> <action name="download" class="com.unmi.action.DownloadA ...
- struts2文件下载及 <param name="inputName">inputStream</param>的理解
转自:http://blog.csdn.net/wnczwl369/article/details/7483290 转自:http://hi.baidu.com/c2_sun/item/934a542 ...
- struts2文件下载相关信息
struts.xml文件配置: <span style="font-size:16px;"><?xml version="1.0" encod ...
- Struts2文件下载
1). Struts2 中使用 type="stream" 的 result 进行下载 2). 可以为 stream 的 result 设定如下参数 contentType: 结果 ...
- struts2文件下载出现Can not find a java.io.InputStream with the name的错误
今天在用struts2就行文件下载时出现如下错误: Servlet.service() for servlet default threw exception java.lang.IllegalArg ...
- Struts2 文件下载
使用Struts2做一个简单的文件下载. 首先,导包,写配置文件就不说了. 进入主题. 文件下载操作类:FileDownload.java import java.io.InputStream; im ...
- Struts2 文件下载(中文处理方法以及控制下载文件名称和扩展名)
Struts2的框架提供了现成的文件下载方式,大大简化了开发下载功能的便利性.网上的例子有很多,我把一些大家普遍比较关注的点,集中一下,给出一个整体方案. 一般我们照着书本或者网上的列子写出了一个De ...
- struts2文件下载,动态设置资源地址
转自:http://blog.csdn.net/ctrl_shift_del/article/details/6277340 ServletActionContext.getServletContex ...
- struts2文件下载 出现Can not find a java.io.InputStream with the name的错误
成功代码: 前台界面jsp: <a style="text-decoration:none;" href="<%=path %>/main/frontN ...
随机推荐
- fastjson使用示例
一.fastjson 一款Json处理工具包,包括“序列化”和“反序列化”两部分,它具备如下特征:速度最快,测试表明,fastjson具有极快的性能,超越任其他的Java Json parser.包括 ...
- ASP.NET 学习的总结
应用程序域 使用.Net建立的可执行程序*.exe,并没有直接承载到进程当中,而是承载到应用程序域(AppDomain)当中.应用程序域是.Net引入的一个新概念,它比进程所占用的资源要少,可以被看做 ...
- 如何使用Linux通用后门(转zafe)
特别提示:仅用于安全测试和教学,禁止非法用途. 标题党了,呵呵 其实就是个ssh后门,基本可以不用看内核版本,很简单,为照顾新手! ********************************** ...
- 什么是集群(cluster)
1.集群 1.1 什么是集群 简单的说,集群(cluster)就是一组计算机,它们作为一个总体向用户提供一组网络资源.这些单个的计算机系统就是集群的节点(node).一个理想的集群是,用户从来不会意识 ...
- percona-toolkit -1
http://blog.chinaunix.net/uid/16844903/cid-165634-list-1.html
- 获取设置dom属性
getAttribute():获取dom节点属性,带一个参数,表示要获取的属性使用方法:object.getAttribute("id"); setAttribute():设置do ...
- 【面试题】如何让C语言自动发现泄漏的内存
1. 题目 改造malloc和free函数,使C语言能自动发现泄漏的内存,在程序退出时打印中遗漏的内存地址和大小. 2. 思路 用一个链表来记录已经分配的内存地址.在malloc时,把分配的内存地址和 ...
- jemalloc源码结构分析(一):内存申请处理过程
一.5种malloc方法 1)tcache_alloc_small 2)arena_malloc_small 3)tcache_alloc_large 4)arena_malloc_large 5)h ...
- JS判断单选框是否选中
判断单选框是否选中$("#isallday").attr("checked")
- ubuntu 安装sublime并激活
1:add-apt-repository ppa:webupd8team/sublime-text-3加载sublime的源2:sudo apt-get update更新源 3:sudo apt-ge ...