`
guomingzhang2008
  • 浏览: 161439 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

文件下载 struts2文件下载 struts2注解

阅读更多
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;
    }
}
分享到:
评论
2 楼 1021082712 2015-01-19  
楼主,你的这个代码,你测试了没?有没有问题,当多次点击后,tomcat会不会意外就down掉,当重启tomcat后,会报java.io.EOFException错误?
当return new FileInputStream(filePath);其实这个inputStream没close呢,楼主应该在try catch再加上finally,代码应该这样写:
InputStream stream = null;
        try {
// return new FileInputStream(new File(filePath));
        stream =  new FileInputStream(filePath);//
        return stream;
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{// 正确写法必须要close inputStream
try {
stream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
1 楼 杨莎莎 2014-01-14  
为什么有两个图片文件呢?下的是哪一个啊

相关推荐

    struts2文件上传下载源代码

    在Struts2中,文件上传和下载是常见的功能需求,特别是在处理用户交互和数据交换时。这篇博客文章提供的"struts2文件上传下载源代码"旨在帮助开发者理解和实现这些功能。 文件上传功能允许用户从他们的设备上传文件...

    struts2文件上传下载(注解版)

    在Action类中,你可以创建一个方法来处理文件的读取,然后设置响应的头信息,如Content-Type和Content-Disposition,以指示浏览器以附件形式下载文件。`success.jsp`可能是一个简单的确认页面,告知用户文件已成功...

    struts2利用注解annotation实现文件下载

    其中`url`参数表示要下载文件的路径。 #### 四、总结 通过上述步骤,我们可以看到,在Struts2框架中使用注解来实现文件下载是非常简单且直观的。开发者只需要关注于Action类的定义,而具体的配置则由框架自动完成...

    Struts2全注解方式实现文件上传与下载

    在本资源中,我们将探讨如何利用Struts2的注解方式来实现文件的上传和下载功能,这对于任何Web应用来说都是至关重要的特性。 首先,我们来看“注解”在Struts2中的作用。Struts2允许开发者使用注解来配置Action类,...

    struts2注解登陆

    Struts2注解登录是Java Web开发中一种简化配置的方式,它允许开发者在代码中直接定义控制器、动作和结果页面的映射,从而避免了传统方式下需要在`struts.xml`配置文件中的繁琐设置。这种做法提高了代码的可读性和可...

    Struts2注解详细说明文档

    ### Struts2注解详细说明 #### 一、概述 Struts2框架是Apache软件基金会下的一个开源项目,它提供了一种构建企业级Java Web应用的解决方案。自Struts2.1版本开始,引入了一个重要的插件——Convention Plugin,该...

    Struts2使用注解实现文件的上传与下载

    在处理文件上传和下载这类常见任务时,Struts2提供了一种简洁的方法,尤其是通过注解进行配置,可以实现“零XML”配置,使得开发过程更加高效。本文将深入探讨如何使用Struts2的注解来实现文件的上传与下载。 首先...

    Struts2 注解 Demo

    在`Struts2Demo`项目中,你还可以学习到如何配置Struts2的`struts-plugin.xml`和`struts.xml`文件,以便启用注解支持,并了解如何在web.xml中配置过滤器,确保Struts2框架能正确拦截请求。 总结,Struts2注解是...

    Struts2注解开发jar

    为了使用Struts2的注解开发,开发者需要在项目的类路径下包含`struts2-convention-plugin`的jar包,并在Struts2的配置文件`struts.xml`中启用该插件。例如: ```xml <struts> <package name="default" extends="...

    Maven实现struts2注解

    <constant name="struts.objectFactory" value="struts注解工厂类全限定名,比如:org.apache.struts2.spring.StrutsSpringObjectFactory" /> <package name="default" extends="struts-default"> ...

    Struts2+Jquery+Ajax

    Struts2作为Controller层,通过Action类来实现业务逻辑,并通过配置文件或注解来定义Action与URL的映射关系。 Jquery是一个高效的JavaScript库,简化了HTML文档遍历、事件处理、动画以及Ajax交互。它使得开发者能更...

    struts2注解详解

    ### Struts2 注解详解 #### 一、Struts2 Convention 插件介绍与使用 在 Struts2 框架的发展过程中,随着版本的更新和技术的演进,其配置方式也发生了变化。从 Struts2.1 版本开始,官方不再推荐使用 Codebehind ...

    struts2注解必须包

    在Struts2中,注解(Annotation)是开发者常用的一种元数据表示方式,它允许我们在代码中直接标注信息,简化配置文件。"struts2注解必须包"指的是Struts2提供的一系列注解,它们对于简化Struts2应用的配置和增强其...

    Struts2文件上传与下载

    下载文件 ``` 通过以上步骤,你可以实现在Struts2框架中处理文件上传和下载的功能。然而,在实际应用中,还需要考虑文件大小限制、文件安全(如防止路径遍历攻击)、文件重命名以及错误处理等问题。理解这些知识...

    Struts2之struts2文件上传详解案例struts011

    在Struts2中,文件上传功能是常见的需求,比如用户可能需要上传个人照片、文档或者其他类型的文件。在这个"Struts2之struts2文件上传详解案例struts011"中,我们将深入探讨如何实现这一功能。 首先,我们需要了解...

    Struts 2使用注解配置Action

    在传统的Struts 2应用中,我们通常会通过XML配置文件(struts.xml)来定义Action,包括Action类、结果页面、拦截器等信息。然而,随着Java注解的广泛应用,Struts 2也引入了注解配置的方式来简化开发过程,避免了XML...

    Struts2+spring注解配置

    Struts2 提供了一种使用注解替代 XML 配置的方式,使得开发者无需编写繁琐的 struts.xml 文件,即可完成Action的配置。 **Struts2 注解配置** 1. **Action 注解** - `@Action` 用于标记一个类或方法作为 Struts2 ...

    struts2注解与拦截器demo

    该例子为struts2注解与拦截器demo,利用myEclipse8.5开发,导入刚才后,自动加载所需struts2的jar包,可以直接运行,是初学struts2注解、拦截器很好的例子,保证10分钟学会2种技术,愿意分享给大家。

    struts2文件上传jar

    在Action类中,你需要定义一个或多个属性来接收上传的文件,并设置相应的注解来告知Struts2如何处理它们。 在Action类中,你可以使用`File` 或 `FileItem` 对象来接收文件。`FileItem` 是Apache Commons FileUpload...

    maven-web项目 Struts2 Struts注解 Struts2返回json

    在实际的"Maven-web项目 Struts2 Struts注解"中,`Strut2-Demo`可能包含了以下内容: 1. `pom.xml`:Maven的配置文件,包含了项目依赖和构建信息。 2. `struts.xml`:Struts2的配置文件,可能包含了部分非注解的配置...

Global site tag (gtag.js) - Google Analytics