1、配置文件方式下载文件:
这种方式,网上有很多例子,我没有试过,我用的是注解方式。
2、注解方式下载文件:
没有上传工程,直接附上代码。
import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.convention.annotation.*;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
/**
* 文件下载类
*
* @author 张国明 guomingzhang2008@gmail.com
* @version 2012-11-29 上午10:34
*/
@ParentPackage("struts-default")
@Namespace("/test")
@ResultPath(value = "/")
@Results({
@Result(params = {
"contentType", "application/octet-stream",
"inputName", "inputStream",
"contentDisposition", "attachment;filename=\"${fileName}\"",
"bufferSize", "4096"},
name = "download", type = "stream")
})
public class DownloadAction extends ActionSupport {
/**
* 下载文档,下载问价的访问入口方法
*
* @return resultName
*/
public String testDownload() {
// 返回 @Result 注解中的 name 值
return "download";
}
/**
* 获取下载读入流 必须要有方法
* 在 @Result 注解的参数 params 中, key 为 "inputName" 所对应的 value "inputStream";
* value "inputStream" ,决定该方法名为getInputStream;
* 如果 value 的值为 hello ,则该方法名为 getHello;
* @return InputStream
*/
public InputStream getInputStream() {
String filePath = "E:\\works_eclipse\\四.jpg";
try {
setFileName(new String("张国明测试 图片.jpg".getBytes(), "iso8859-1") );
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
// 这种方式取到的流为null,原因不详,所以直接 new FileInputStream
// return ServletActionContext.getServletContext().getResourceAsStream(filePath);
try {
return new FileInputStream(filePath);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return null;
}
/**
* 下载文件的名称,用于动态获取下载文件的名称(可选,即下载的文件名可以写死在@Result的params参数中,但是没有人会这么傻。)
* 在 @Result 注解的参数 params 中通过 ${fileName} 来获取该属性 fileName 的值;
* 和EL表达式的取值方式类似,呵呵;
*/
private String fileName;
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
}
分享到:
相关推荐
在Struts2中,文件上传和下载是常见的功能需求,特别是在处理用户交互和数据交换时。这篇博客文章提供的"struts2文件上传下载源代码"旨在帮助开发者理解和实现这些功能。 文件上传功能允许用户从他们的设备上传文件...
在Action类中,你可以创建一个方法来处理文件的读取,然后设置响应的头信息,如Content-Type和Content-Disposition,以指示浏览器以附件形式下载文件。`success.jsp`可能是一个简单的确认页面,告知用户文件已成功...
其中`url`参数表示要下载文件的路径。 #### 四、总结 通过上述步骤,我们可以看到,在Struts2框架中使用注解来实现文件下载是非常简单且直观的。开发者只需要关注于Action类的定义,而具体的配置则由框架自动完成...
在本资源中,我们将探讨如何利用Struts2的注解方式来实现文件的上传和下载功能,这对于任何Web应用来说都是至关重要的特性。 首先,我们来看“注解”在Struts2中的作用。Struts2允许开发者使用注解来配置Action类,...
Struts2注解登录是Java Web开发中一种简化配置的方式,它允许开发者在代码中直接定义控制器、动作和结果页面的映射,从而避免了传统方式下需要在`struts.xml`配置文件中的繁琐设置。这种做法提高了代码的可读性和可...
### Struts2注解详细说明 #### 一、概述 Struts2框架是Apache软件基金会下的一个开源项目,它提供了一种构建企业级Java Web应用的解决方案。自Struts2.1版本开始,引入了一个重要的插件——Convention Plugin,该...
在处理文件上传和下载这类常见任务时,Struts2提供了一种简洁的方法,尤其是通过注解进行配置,可以实现“零XML”配置,使得开发过程更加高效。本文将深入探讨如何使用Struts2的注解来实现文件的上传与下载。 首先...
在`Struts2Demo`项目中,你还可以学习到如何配置Struts2的`struts-plugin.xml`和`struts.xml`文件,以便启用注解支持,并了解如何在web.xml中配置过滤器,确保Struts2框架能正确拦截请求。 总结,Struts2注解是...
为了使用Struts2的注解开发,开发者需要在项目的类路径下包含`struts2-convention-plugin`的jar包,并在Struts2的配置文件`struts.xml`中启用该插件。例如: ```xml <struts> <package name="default" extends="...
<constant name="struts.objectFactory" value="struts注解工厂类全限定名,比如:org.apache.struts2.spring.StrutsSpringObjectFactory" /> <package name="default" extends="struts-default"> ...
Struts2作为Controller层,通过Action类来实现业务逻辑,并通过配置文件或注解来定义Action与URL的映射关系。 Jquery是一个高效的JavaScript库,简化了HTML文档遍历、事件处理、动画以及Ajax交互。它使得开发者能更...
### Struts2 注解详解 #### 一、Struts2 Convention 插件介绍与使用 在 Struts2 框架的发展过程中,随着版本的更新和技术的演进,其配置方式也发生了变化。从 Struts2.1 版本开始,官方不再推荐使用 Codebehind ...
在Struts2中,注解(Annotation)是开发者常用的一种元数据表示方式,它允许我们在代码中直接标注信息,简化配置文件。"struts2注解必须包"指的是Struts2提供的一系列注解,它们对于简化Struts2应用的配置和增强其...
下载文件 ``` 通过以上步骤,你可以实现在Struts2框架中处理文件上传和下载的功能。然而,在实际应用中,还需要考虑文件大小限制、文件安全(如防止路径遍历攻击)、文件重命名以及错误处理等问题。理解这些知识...
在Struts2中,文件上传功能是常见的需求,比如用户可能需要上传个人照片、文档或者其他类型的文件。在这个"Struts2之struts2文件上传详解案例struts011"中,我们将深入探讨如何实现这一功能。 首先,我们需要了解...
在传统的Struts 2应用中,我们通常会通过XML配置文件(struts.xml)来定义Action,包括Action类、结果页面、拦截器等信息。然而,随着Java注解的广泛应用,Struts 2也引入了注解配置的方式来简化开发过程,避免了XML...
Struts2 提供了一种使用注解替代 XML 配置的方式,使得开发者无需编写繁琐的 struts.xml 文件,即可完成Action的配置。 **Struts2 注解配置** 1. **Action 注解** - `@Action` 用于标记一个类或方法作为 Struts2 ...
该例子为struts2注解与拦截器demo,利用myEclipse8.5开发,导入刚才后,自动加载所需struts2的jar包,可以直接运行,是初学struts2注解、拦截器很好的例子,保证10分钟学会2种技术,愿意分享给大家。
在Action类中,你需要定义一个或多个属性来接收上传的文件,并设置相应的注解来告知Struts2如何处理它们。 在Action类中,你可以使用`File` 或 `FileItem` 对象来接收文件。`FileItem` 是Apache Commons FileUpload...
在实际的"Maven-web项目 Struts2 Struts注解"中,`Strut2-Demo`可能包含了以下内容: 1. `pom.xml`:Maven的配置文件,包含了项目依赖和构建信息。 2. `struts.xml`:Struts2的配置文件,可能包含了部分非注解的配置...