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文件下载浅析的更多相关文章

  1. struts2文件下载 <result type="stream">

    <!--struts.xml配置--> <action name="download" class="com.unmi.action.DownloadA ...

  2. struts2文件下载及 <param name="inputName">inputStream</param>的理解

    转自:http://blog.csdn.net/wnczwl369/article/details/7483290 转自:http://hi.baidu.com/c2_sun/item/934a542 ...

  3. struts2文件下载相关信息

    struts.xml文件配置: <span style="font-size:16px;"><?xml version="1.0" encod ...

  4. Struts2文件下载

    1). Struts2 中使用 type="stream" 的 result 进行下载 2). 可以为 stream 的 result 设定如下参数 contentType: 结果 ...

  5. struts2文件下载出现Can not find a java.io.InputStream with the name的错误

    今天在用struts2就行文件下载时出现如下错误: Servlet.service() for servlet default threw exception java.lang.IllegalArg ...

  6. Struts2 文件下载

    使用Struts2做一个简单的文件下载. 首先,导包,写配置文件就不说了. 进入主题. 文件下载操作类:FileDownload.java import java.io.InputStream; im ...

  7. Struts2 文件下载(中文处理方法以及控制下载文件名称和扩展名)

    Struts2的框架提供了现成的文件下载方式,大大简化了开发下载功能的便利性.网上的例子有很多,我把一些大家普遍比较关注的点,集中一下,给出一个整体方案. 一般我们照着书本或者网上的列子写出了一个De ...

  8. struts2文件下载,动态设置资源地址

    转自:http://blog.csdn.net/ctrl_shift_del/article/details/6277340 ServletActionContext.getServletContex ...

  9. struts2文件下载 出现Can not find a java.io.InputStream with the name的错误

    成功代码: 前台界面jsp: <a style="text-decoration:none;" href="<%=path %>/main/frontN ...

随机推荐

  1. iOS 转让APP

    今天需要将一个客户的app转让到它公司的个人账号上,记录下来流程,给有需要的人方便查看. 上面这个是咨询了苹果的客户之后收到的邮件说明,有需要的大家自己仔细看看. 好了,进入正题: 一:转出方操作 1 ...

  2. XMPP——Smack[6]离线消息和离线文件的实现

    终篇,三天所学所用,也就这些,如果需要大家要自己去查资料研究研究,功能其实可以很强大的 可惜界面做得不好,一大短处,从大一迄今没整好,主要是个人审美不行,哎 毕业季呀毕业季,明天摆摊卖书,再半月就可能 ...

  3. CAS总结之Ticket篇

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  4. 【转】安装Ubuntu 15.10后要做的事

    Ubuntu 15.10发布了,带来了很多新特性,同样也依然带着很多不习惯的东西,所以装完系统后还要进行一系列的优化. 1.删除libreoffice libreoffice虽然是开源的,但是Java ...

  5. 给定一个字符串,仅由a,b,c 3种小写字母组成。

    package com.boco.study; /** * 题目详情 给定一个字符串,仅由a,b,c 3种小写字母组成. 当出现连续两个不同的字母时,你可以用另外一个字母替换它,如 有ab或ba连续出 ...

  6. 学习笔记之Linux Shell脚本教程:30分钟玩转Shell脚本编程

    Linux Shell脚本教程:30分钟玩转Shell脚本编程 http://c.biancheng.net/cpp/shell/

  7. [Effective C++ --025]考虑写出一个不抛异常的swap函数

    引言 在我的上一篇博客中,讲述了swap函数. 原本swap只是STL的一部分,而后成为异常安全性编程的脊柱,以及用来处理自我赋值可能性. 一.swap函数 标准库的swap函数如下: namespa ...

  8. 在eclipse中运行storm-starter

    开源软件官网提供的demo无疑是学习开源软件的最好的最原始的样例. 在Storm官网里下载apache-storm-0.9.6.zip,里面\examples\storm-starter\src\jv ...

  9. eclipse在线安装svn插件

    原文地址:http://www.cnblogs.com/xdp-gacl/p/4354199.html Eclipse在线安装SVN 一.SVN在线安装 下面为在线安装SVN插件.以下是在线安装步骤: ...

  10. MATLAB 误差函数erf(x)

    误差函数: 1.误差函数定义为:   它的性质如下: 2 互补误差函数定义为: 它具有如下性质: 下表给出了误差函数的部分数值: 0.00 0.00000 0.05 0.05637 0.10 0.11 ...