以前希望考研,对所用到的东西都是浅尝辄止。现在突然觉得考研的决定是自己失去了好多好多,人就应该面对现实,面对责任,而不是追求梦想而脱离实际。废话不多说了,让我分享一下struts2下载时候参数的配置。
1。annotation实现
@Results( { @Result(name = "success", type = "stream", params = { "contentType", "application/octet-stream;charset=ISO8859-1", "inputName", "inputStream", "contentDisposition","attachment;filename=\"${fileName}\"", "bufferSize", "4096" }) })
2。xml配置
<action name="download" class="com.lizw.FileDownloadAction"> <result name="success" type="stream"> <param name="inputName">inputStream</param> <param name="contentType">application/octet-stream</param> <param name="contentDisposition">filename=${fileName}</param> <param name="bufferSize">2048</param> </result> </action>
下面针对各个参数详细解释一下:
contentType :
内容类型,和互联网MIME标准中的规定类型一致,例如text/plain代表纯文本,text/xml表示XML,image/gif代表GIF图片,image/jpeg代表JPG图片
inputName :
下载文件的来源流,对应着action类中某个类型为Inputstream的属性名,例如取值为inputStream的属性需要编写getInputStream()方法
contentDisposition :
文件下载的处理方式,包括内联(inline)和附件(attachment)两种方式,而附件方式会弹出文件保存对话框,否则浏览器会尝试直接显示文件。取值为:
attachment;filename="readme.txt",表示文件下载的时候保存的名字应为readme.txt。如果直接写filename="readme.txt",那么默认情况是代表inline,浏览器会尝试自动打开它,等价于这样的写法:inline; filename="readme.txt"
bufferSize :
下载缓冲区的大小
对struts2下载流的理解:
action中定义一个返回InputStream的方法,该方法作为被下载文件的入口,且需要配置stream类型结果时指定inputName参数,inputName参数的值就是方法去掉get前缀、首字母小写的字符串。
对应的核心Java代码:
// 如果下载文件名为中文,进行字符编码转换 public String getDownloadFileName() { String downloadFileName = fileName; try { downloadFileName = new String(downloadFileName.getBytes(), "ISO8859-1"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return downloadFileName; } public InputStream getInputStream() throws Exception { /** * 下载用的Action应该返回一个InputStream实例, 该方法对应在result里的inputName属性值为targetFile */ return ServletActionContext.getServletContext().getResourceAsStream( STORAGEPATH); } public String execute() throws Exception { return SUCCESS; }
相关推荐
从给定的文件信息来看,标题“struts2中文学习文档”和描述“struts2的根本webwork2”表明这是一份关于Struts2框架的学习资料,特别强调了Struts2与WebWork2的关系。Struts2是Apache Struts的一个版本,它是一个用于...
在Struts2中处理文件下载是常见的需求,比如用户请求下载服务器上的文件,如PDF、图片或其他类型的文档。本案例"Struts2之struts012"将深入探讨如何在Struts2中实现文件下载的功能。 首先,我们需要创建一个Action...
在Struts中实现文件下载是一项常见的功能,尤其在处理用户请求获取服务器上的静态或动态资源时。这篇博文将深入探讨如何在Struts框架下实现文件下载的功能。 首先,我们需要了解文件下载的基本原理。当用户点击下载...
Struts2支持多种内置结果类型,如`dispatcher`(默认的,用于转发到JSP)、`stream`(用于处理文件下载)和`redirectAction`(用于重定向到另一个Action)。每个结果类型都有其特定的配置方式来传递参数。 1. **在...
"struts2 jar"文件包含了Struts2框架的核心库,可能包括struts2-core、struts2-convention、struts2-json-plugin等依赖,这些是开发Struts2应用必不可少的组件。 "Struts2"可能是项目实例代码,包括Action类、视图...
在"struts2资源下载"中,我们可以获取到与Struts2相关的各种资料,包括但不限于教程、示例代码、API文档、安全补丁以及社区提供的插件等,这些都对学习和使用Struts2框架极其有益。 Struts2的核心功能包括: 1. **...
在深入探讨Struts2验证框架参数之前,我们首先简要回顾一下Struts2框架本身。Struts2是基于MVC(Model-View-Controller)设计模式的Java Web应用框架,它提供了一种灵活的方式来构建可扩展的企业级Web应用程序。...
“Struts2.3.1.2_API.chm”文档包含了Struts2框架的详细API,其中涵盖了各个主要类和接口的解释、方法签名、参数说明以及返回值类型。开发者可以通过查阅此文档,快速查找特定功能的实现方式,例如ActionSupport类,...
4. **结果类型(Result Types)**:Struts2支持多种结果类型,如`dispatcher`(默认,将结果转发到JSP页面)、`stream`(用于文件下载)、`redirect`(重定向URL)等,可以根据不同的需求选择合适的结果类型。...
### Struts2参数配置详解 #### 一、概述 在深入了解Struts2框架时,我们不可避免地会接触到各种参数配置。这些配置对于整个框架的运行至关重要。本文将围绕Struts2中的关键配置进行深入探讨,旨在帮助开发者更好地...
在`Struts2_0900_ModelDrivenParamInput`这个文件中,可能包含了关于Struts2 0.9.0版本如何处理ModelDriven模式下参数输入的示例代码。ModelDriven模式简化了Action类的编写,使得业务逻辑更专注于处理业务,而不是...
2. **创建Action类**:定义一个Action类,该类通常包含一个用于接收文件的字段,使用`@Params`注解指定参数类型为`java.io.File`或`org.apache.struts2.dispatcher.multipart.UploadedFile`。 ```java public ...
在Struts2中,你需要配置`struts.xml`文件来启用文件上传插件,并指定允许的最大文件大小、存储路径等参数。 在Action类中,`upload()`方法接收上传的文件,并使用`FileItem`接口来处理每个部分。`FileItem`对象...
Struts2 中 Action 接收参数的方法 Struts2 框架中,Action 组件可以通过多种方式接收参数,这些方式包括使用 Action 的属性、使用 DomainModel 和使用 ModelDriven。下面将详细介绍这些方法: 使用 Action 的属性...
在Struts2的配置文件(通常是struts.xml)中,Action的基本配置结构如下: ```xml 包名字" extends="继承的包" namespace="空间名"> 访问的名称" class="处理请求的类"> 处理类返回的结果名称">该结果名称所对应...
### Struts2中Action间的参数传递方法 在Struts2框架中,经常需要实现Action之间的跳转,并在跳转过程中传递必要的参数。这种需求在实际开发中非常常见,尤其是在需要根据用户的不同操作来调用不同的业务逻辑时。...
在这个示例中,我们将深入探讨如何通过Struts2实现文件下载功能。 首先,我们来看一下文件下载的基本流程。当用户点击下载链接时,浏览器会向服务器发送一个新的请求,这个请求的目标是特定的Action,即`...
3. 创建Struts2的配置文件struts.xml,定义Action、包(package)、namespace等。 **三、Namespace** Namespace是Struts2中用于组织Action的一种方式,可以看作是Action的命名空间。它有助于避免Action名称冲突,同时...
在"struts2上传下载项目"中,我们可以深入理解如何利用Struts2实现文件的上传与下载功能。 首先,上传功能在Web应用中十分常见,比如用户在注册时上传头像,或者提交文档等。在Struts2中,我们主要借助`struts2-...