Struts2笔记——11.文件下载

Struts2提供了stream结果类型,是专门用于支持文件下载功能的。

实现文件下载的action类

这个类与普通action实现类的唯一区别就是,这个action类需要提供一个返回InputStream的方法。该方法是被下载文件的入口。代码如下。如果想要实现控制下载等一系列其他的功能,只需要在execute方法中实现即可。

public class download extends ActionSupport {
	private String inputPath;

	public String getInputPath() {
		return inputPath;
	}

	public void setInputPath(String inputPath) {
		this.inputPath = inputPath;
	}

	public InputStream getTargetFile() throws Exception {

		return ServletActionContext.getServletContext().getResourceAsStream(
				inputPath);
	}

	@Override
	public String execute() throws Exception {

		return SUCCESS;
	}

}

----------------------------------------------------------------------------------------------------------------

下面来看在xml中的配置代码。

<action name="download" class="com.cm.actions.download">
	<param name="inputPath">/WEB-INF/aa.txt</param>

	<result name="success"  type="stream">
	<param name="contentType">text/plain</param>
	<param name="inputName">targetFile</param>
	<param name="contentDisposition">attachment;filename="aa.txt"</param>
	<param name="bufferSize">4096</param>
	</result>
</action>

这里的action就是处理下载按钮的action。inputPath就是文件所在的路径,而返回的结果不再是视图,而是一个流。里面能够规定contentType。inputName则是aciton方法中的返回inputStream的方法的名字。在contentDisposition参数中,如果写了attachment,则是以下载的形式呈现,如果不写,则只是在页面中呈现出来。filename是 下载的时候显示的文件名,可以自定义。

时间: 2024-11-05 02:37:22

Struts2笔记——11.文件下载的相关文章

springmvc学习笔记(11)-springmvc注解开发之简单参数绑定

springmvc学习笔记(11)-springmvc注解开发之简单参数绑定 springmvc学习笔记11-springmvc注解开发之简单参数绑定 spring参数绑定过程 默认支持的类型 简单类型 pojo绑定 自定义参数绑定实现日期类型绑定 springmvc和struts2的区别 本文主要介绍注解开发的简单参数绑定,包括简单类型.简单pojo以及自定义绑定实现类型转换 spring参数绑定过程 从客户端请求key/value数据,经过参数绑定,将key/value数据绑定到contro

《C++ Primer Plus》学习笔记11

<C++ Primer Plus>学习笔记11 第17章 输入.输出和文件 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

[Aaronyang] 写给自己的WPF4.5 笔记11[自定义控件-AyImageButton篇 1/4]

我的文章一定要对读者负责-否则不是好文章  ----       www.ayjs.net  aaronyang技术分享 文章导航: 介绍vs2013 WPF开发,属性代码相关技巧 实战AyImageButton 1.0细用慢讲,学会用户控件,依赖属性,属性回调事件 诞生AyImageButton 1.1 支持 控件简单写法,支持自定义AyImageButton写法,提供详细的API 效果图: AyImageButton记录 源码下载:http://pan.baidu.com/s/1eQlHly

sqlite学习笔记11:C语言中使用sqlite之删除记录

最后一节,这里记录下如何删除数据. 前面所有的代码都继承在这里了,在Ubuntu14.04和Mac10.9上亲测通过. #include <stdio.h> #include <stdlib.h> #include "sqlite/sqlite3.h" #define DB_NANE "sqlite/test.db" sqlite3 *db = NULL; char* sql = NULL; char *zErrMsg = NULL; con

lua学习笔记11:lua中的小技巧

lua中的小技巧,即基础lua语言本身的特种,进行一个些简化的操作 一 巧用or x = x or v 等价于: if not x then x = v end 如果x为nil或false,就给他赋值为 二 三元运算符实现 a and b or c 类似C语言: a ? b : c and 的运算由优先级高于or lua学习笔记11:lua中的小技巧,布布扣,bubuko.com

Struts2笔记1

一.简介 1.作用于web层:Struts2是一种基于MVC模式的轻量级Web框架; 2.各文件夹简介: ?    apps:该文件夹存用于存放官方提供的Struts2示例程序,这些程序可以作为学习者的学习资料,可为学习者提供很好的参照.各示例均为war文件,可以通过zip方式进行解压. ?    docs:该文件夹用于存放官方提供的Struts2文档,包括Struts2的快速入门.Struts2的文档,以及API文档等内容. ?    lib:该文件夹用于存放Struts2的核心类库,以及St

mybatis学习笔记(11)-多对多查询

mybatis学习笔记(11)-多对多查询 mybatis学习笔记11-多对多查询 示例 多对多查询总结 resultMap总结 本文实现多对多查询,查询用户及用户购买商品信息. 示例 查询主表是:用户表 关联表:由于用户和商品没有直接关联,通过订单和订单明细进行关联,所以关联表:orders.orderdetail.items sql SELECT orders.*, user.username, user.sex, user.address, orderdetail.id orderdeta

mybatis学习笔记(11)-一对多查询

mybatis学习笔记(11)-一对多查询 mybatis学习笔记11-一对多查询 示例 小结 本文实现一对多查询,查询订单及订单明细的信息 示例 sql 确定主查询表:订单表 确定关联查询表:订单明细表 在一对一查询基础上添加订单明细表关联即可. SELECT orders.*, user.username, user.sex, user.address, orderdetail.id orderdetail_id, orderdetail.items_id, orderdetail.item

学习笔记11

目前正在专修CSS这一块,现在对内联元素和块元素进行深入的学习一下: 内联元素(inline element)一般都是基于语义级(semantic)的基本元素.内联元素只能容纳文本或者其他内联元素,常见内联元素"a". 块元素(block element)和内联元素(inline element)都是html规范中的概念.块元素和内联元素的基本差异是块元素一般都从新行开始.而当加入了css控制以后,块元素和内联元素的这种属性差异就不成为差异 了.比如,我们完全可以把内联元素cite加上