struts.xml文件配置:

  1. <span style="font-size:16px;"><?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE struts PUBLIC
  3. "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
  4. "http://struts.apache.org/dtds/struts-2.0.dtd">
  5. <struts>
  6. <constant name="struts.enable.DynamicMethodInvocation" value="false" />
  7. <constant name="struts.devMode" value="true" />
  8. <package name="app14a" extends="struts-default">
  9. <action name="Menu">
  10. <result>/jsp/Menu.jsp</result>
  11. </action>
  12. <action name="ViewCss" class="app14a.FileDownloadAction">
  13. <result name="success" type="stream">
  14. <param name="inputName">inputStream</param>
  15. <param name="contentType">text/css</param>
  16. <param name="contentDisposition">filename="main11.css"</param>
  17. <param name="bufferSize">2048</param>
  18. </result>
  19. </action>
  20. <action name="DownloadCss" class="app14a.FileDownloadAction">
  21. <result name="success" type="stream">
  22. <param name="inputName">inputStream</param>
  23. <param name="contentType">application/octet-stream</param>
  24. <param name="contentDisposition">filename="main111222.css"</param>
  25. <param name="bufferSize">2048</param>
  26. </result>
  27. </action>
  28. </package>
  29. </struts></span>

    action特殊的地方在于result的类型是一个流(stream),配置stream类型的结果时,因为无需指定实际的显示的物理资源,所以无需指定location属性,只需要指定inputName属性,该属性指向被下载文件的来源,对应着Action类中的某个属性,类型为InputStream,,struts2会寻找一个返回类型为InputStream的方法getInputStream()(方法名最好为getInputStream,有人说此方法名可以为别的可能需要与struts.xml中的inputName保存一致下面有解释,不过我实验的结果不是这样,须为getInputStream,可能是org.apache.struts2.dispatcher.ResultStream类限制造成,感兴趣的可以看看此类的源码,就会明白的),得到InputStream。

    另一种理解:action中定义一个返回InputStream的方法,该方法作为被下载文件的入口,且需要配置stream类型结果时指定inputName参数,inputName参数的值就是方法去掉get前缀、首字母小写的字符串。

下面则列出了和下载有关的一些参数列表:

参数说明 
contentType 
内容类型,和互联网MIME标准中的规定类型一致,例如text/plain代表纯文本,text/xml表示XML,image/gif代表GIF图片,image/jpeg代表JPG图片 
 
inputName 
下载文件的来源流,对应着action类中某个类型为Inputstream的属性名,例如取值为inputStream的属性需要编写getInputStream()方法 
 
contentDisposition 
文件下载的处理方式,包括内联(inline)和附件(attachment)两种方式,而附件方式会弹出文件保存对话框,否则浏览器会尝试直接显示文件。取值为: 
 
attachment;filename="struts2.txt",表示文件下载的时候保存的名字应为struts2.txt。如果直接写filename="struts2.txt",那么默认情况是代表inline,浏览器会尝试自动打开它,等价于这样的写法:inline; filename="struts2.txt" 
 
bufferSize 
下载缓冲区的大小

struts2文件下载相关信息的更多相关文章

  1. ManagementClass类解析和C#如何获取硬件的相关信息

    在.NET的项目中,有时候需要获取计算机的硬件的相关信息,在C#语言中需要利用ManagementClass这个类来进行相关操作. 现在先来介绍一下ManagementClass类,首先看一下类的继承 ...

  2. MySQL查看数据库相关信息

    使用MySQL时,需要了解当前数据库的情况,例如当前的数据库大小.字符集.用户等等.下面总结了一些查看数据库相关信息的命令   1:查看显示所有数据库 mysql> show databases ...

  3. php http头设置相关信息

    HTTP 状态码 状态码用来告诉HTTP客户端,HTTP服务器是否产生了预期的Response. HTTP/1.1中定义了5类状态码, 状态码由三位数字组成,第一个数字定义了响应的类别 1XX 提示信 ...

  4. 在linux中查询硬件相关信息

    1.查询cpu的相关 a.查询CPU的统计信息 使用命令:lscpu 得到的结果如下: Architecture: x86_64 CPU op-mode(s): -bit, -bit Byte Ord ...

  5. Android根据文件路径使用File类获取文件相关信息

    Android通过文件路径如何得到文件相关信息,如 文件名称,文件大小,创建时间,文件的相对路径,文件的绝对路径等: 如图: 代码: public class MainActivity extends ...

  6. Linux sysinfo获取系统相关信息

    Linux中,可以用sysinfo来获取系统相关信息. #include <stdio.h> #include <stdlib.h> #include <errno.h& ...

  7. C# 获取进程或线程的相关信息

    信息来自: http://blog.163.com/kunkun0921@126/blog/static/169204332201293023432113/ using System; using S ...

  8. 获取Java系统相关信息

    package com.test; import java.util.Properties; import java.util.Map.Entry; import org.junit.Test; pu ...

  9. 把数据保存到数据库附加表 `dede_addonarticle` 时出错,请把相关信息提交给DedeCms官方。Duplicate entry

    把数据保存到数据库附加表 `dede_addonarticle` 时出错,请把相关信息提交给DedeCms官方.Duplicate entry ’3′ for key ‘PRIMARY’ 你的主键是不 ...

随机推荐

  1. MVC 中使用EF

    EF 1)简单查询 后台代码 using MvcApplication18.Models; using System; using System.Collections.Generic; using ...

  2. 开源的49款Java 网络爬虫软件

    参考地址 搜索引擎 Nutch Nutch 是一个开源Java 实现的搜索引擎.它提供了我们运行自己的搜索引擎所需的全部工具.包括全文搜索和Web爬虫. Nutch的创始人是Doug Cutting, ...

  3. VC++ 监控指定目录改变

    转载:http://www.cnblogs.com/doublesnke/archive/2011/08/16/2141374.html VC++实施文件监控:实例和详解 相关帮助: http://h ...

  4. centos Linux 统计某个文件夹占用空间大小

    转载自 http://www.07net01.com/linux/centos_Linux_tongjimougewenjianjiazhanyongkongjiandaxiao_12510_1346 ...

  5. js 返回并刷新

    chrome 下 history.back()或者history.go(-1)都是返回并刷新的,但是ff浏览器只返回不刷新 location = document.referrer 这个在两个浏览器下 ...

  6. Create XO Checker Game With Oracle Forms

    Created XO Checker game in Oracle Forms and sharing its FMB (source code) for reference so that you ...

  7. CATransition(过渡)

    属性动画只对图层的可动画属性起作用,所以如果要改变一个不能动画的属性(比如图片),或者从层级关系中添加或者移除图层,属性动画将不起作用. 于是就有了过渡的概念.过渡并不像属性动画那样平滑地在两个值之间 ...

  8. zoj 1453 Surround the Trees(凸包求周长)

    链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=453 Time Limit: 2 Seconds      Memory ...

  9. pyspark 中启动 jupyter notebook

    还是打算选择python学习spark编程 因为java写函数式比较复杂,scala学习曲线比较陡峭,而且sbt和eclipse和maven的结合实在是让人崩溃,经常找不到主类去执行 python以前 ...

  10. WPF GroupBox样式

    来源:http://code.msdn.microsoft.com/WPF-GroupBox-Style-1d9df7c5/ 效果: XAML CODE: <Window xmlns=" ...