Struts2笔记--文件下载
Struts2提供了stream结果类型,该结果类型是专门用于支持文件下载功能的。配置stream类型的结果需要指定以下4个属性。
contentType:指定被下载文件的文件类型
inputName:指定被下载文件的入口输入流
contentDisposition:指定下载的文件名
bufferSize:指定下载文件时的缓冲大小
struts2文件下载示例:
1.处理文件下载的Action:
/**
* Description:Struts2控制文件下载
* Author: Eleven
* Date: 2018/1/24 10:39
*/
public class FileAction extends ActionSupport{ //该成员变量对应着struts.xml中inputName的值,并为其提供get方法
private InputStream targetFile; //文件下载
public String download(){
//指定被下载资源的位置,并返回对应的输入流
String path = "/WEB-INF/images/lib.zip";
//利用getResourceAsStream()将指定文件转为对应的输入流
targetFile = ServletActionContext.getServletContext().getResourceAsStream(path);
return SUCCESS;
} //提供get方法
public InputStream getTargetFile() {
return targetFile;
}
}
文件下载,首先得要有被下载的文件资源,这里我将被下载文件放在了项目的WEB-INF/images的路径下面,可根据自己的需求来,然后直接用ServletContext提供的getResourceAsStream()方法返回指定文件对应的输入流。
2.配置struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd"> <struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="true" /> <package name="default" namespace="/" extends="struts-default"> <action name="file_*" class="eleven.action.FileAction" method="{1}">
<!--文件下载-->
<!--配置结果类型为stream的结果-->
<result type="stream">
<!--指定下载文件的文件类型-->
<param name="contentType">application/zip</param><!--image/jpg-->
<!--指定action中返回被下载文件的InputStream的名称-->
<param name="inputName">targetFile</param>
<param name="contentDisposition">filename="aaa.zip"</param>
<!--指定下载文件的缓冲大小-->
<param name="bufferSize">4096</param>
</result>
</action> </package> </struts>
在浏览器地址栏中输入对应的文件下载的访问路径,如http://localhost:8080/demo/file_download,即可下载文件了。
Struts2笔记--文件下载的更多相关文章
- 关于Struts2的文件下载
首先先来说下关于文件下载的原理: 服务端为客户端提供了一个下载服务,所以服务端需要一个输出流(把客户请求下载的文件输出),相对于服务端来说,客户端需要下载接收一个文件,所以它需要一个输入流(接收文件) ...
- 基于 Struts2 的文件下载
介于上篇我们讲述了基于 Struts2 的单文件和多文件上传,这篇我们来聊一聊基于 Struts2 的文件下载. 1.导 jar 包 commons-io-2.0.1.jar struts2-core ...
- struts2 笔记02 文件上传、文件下载、类型转换器、国际化的支持
Struts2的上传 1. Struts2默认采用了apache commons-fileupload 2. Struts2支持三种类型的上传组件 3. 需要引入commons-fileupload ...
- struts2笔记(3)
关于回显: 如果是int型,默认就会回显为0,如果不想让回显,则Integer就好 //**************************************声明式验证************* ...
- struts2笔记(2)
<context-param> <param-name>pattern</param-name> <param-value>yyyy-MM-dd hh: ...
- Struts2 多文件下载
Step1:导入支持jar包 commons-fileupload-1.3.1.jar commons-io-2.4.jar jstl-1.2.jar standard-1.1.2.jar commo ...
- Struts2实现文件下载
实现文件下载: 1.导包:commons-fileload-xx.jar commons-io-xx.jar 2.jsp页面: <s:iterator value="#session. ...
- Struts2中文件下载
在struts.xml中配置如下 <action name="download" class="cn.itcast.domain.User" method ...
- struts2 实现文件下载方法汇总
http://pengranxiang.iteye.com/blog/259401 一.通过struts2提供的下载机制下载文件: 项目名为 struts2hello ,所使用的开发环境是MyEcli ...
随机推荐
- 聊聊、Mybatis Java注解实现
AbstractAnnotationConfigDispatcherServletInitializer public class MvcInitializer extends AbstractAnn ...
- css 外边距,内边距的使用
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 【转】通过制作Flappy Bird了解Native 2D中的Sprite,Animation
作者:王选易,出处:http://www.cnblogs.com/neverdie/ 欢迎转载,也请保留这段声明.如果你喜欢这篇文章,请点[推荐].谢谢! 引子 上一次我们讲了MonoBehaviou ...
- ocrosoft Contest1316 - 信奥编程之路~~~~~第三关 问题 M: 当总统
http://acm.ocrosoft.com/problem.php?cid=1316&pid=12 题目描述 小明想当丑国的总统,丑国大选是按各州的投票结果来确定最终的结果的,如果得到超过 ...
- sqlachemy 原生sql输出
在创建引擎时,将echo参数配置成True,会输出sql执行语句记录.默认False create_engine(statsticConf.sqlalchemy_mysql,connect_args= ...
- PHP与web 页面交互
PHP与Web页面交互是实现PHP网站与用户交互的重要手段.在PHP中提供了两种与Web页面交互的方法,一种是通过Web表单提交数据,另一种是通过URL参数传递. 这里我们将详细讲解表单的相关知识,为 ...
- Android的WebView有哪些坑?
今天逛知乎的时候,看到一个有关Android应用开发中,WebView 的问题,算是开发中比较常见的问题了吧,而且赞同数比较多的答案,确实回答得还不错,这里小编就整理了一下,分享出来大家借鉴借鉴,避免 ...
- [poj] 1235 Farm Tour || 最小费用最大流
原题 费用流板子题. 费用流与最大流的区别就是把bfs改为spfa,dfs时把按deep搜索改成按最短路搜索即可 #include<cstdio> #include<queue> ...
- transform perspective的层级问题
如上图,在积分的数字元素上,使用了transform perspective,其层级就穿透了上面的遮罩层,关键代码如下: .mask { position: fixed; z-index:; } .f ...
- java.net.BindException: Address already in use: JVM_Bind <null>:8080错误
今天打开myeclipse出现java.net.BindException: Address already in use: JVM_Bind <null>:8080错误 从网上搜了一下大 ...