struts 文件下载 annotation 注解版

【本文简介】

本文将简单介绍使用 struts2 ,通过零配置和 annotation 实现文件下载功能。

【文件夹结构】

【web.xml有关struts的配置】

    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>
            org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>*.action</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>*.jsp</url-pattern>
    </filter-mapping>

【访问的对应的url】

以上的web.xml配置导致下面的访问地址的方法名有要加:.action

http://localhost:8080/TestBySSH/download!testDownload.action?fileName=file1.txt

【action代码】

 1 package com.modelsystem.action;
 2
 3 import java.io.FileInputStream;
 4 import java.io.FileNotFoundException;
 5 import java.io.InputStream;
 6
 7 import org.apache.struts2.convention.annotation.Namespace;
 8 import org.apache.struts2.convention.annotation.ParentPackage;
 9 import org.apache.struts2.convention.annotation.Result;
10 import org.apache.struts2.convention.annotation.ResultPath;
11 import org.apache.struts2.convention.annotation.Results;
12
13
14 /**
15  * @描述 struts 文件下载 annotation 注解版
16  * @作者   小M
17  * @博客 http://www.cnblogs.com/xiaoMzjm/
18  * @时间 2014/07/30
19  */
20 @ParentPackage("struts-default")
21 @Namespace("/")
22 @ResultPath(value = "/")
23 @Results({
24         @Result(params = {
25                 // 下载的文件格式
26                 "contentType", "application/octet-stream",
27                 // 调用action对应的方法
28                 "inputName", "inputStream",
29                 // HTTP协议,使浏览器弹出下载窗口
30                 "contentDisposition", "attachment;filename=\"${fileName}\"",
31                 // 文件大小
32                 "bufferSize", "10240"},
33                 // result 名
34                 name = "download",
35                 // result 类型
36                 type = "stream")
37 })
38 public class DownloadAction extends BaseAction{
39
40     private static final long serialVersionUID = 1L;
41
42     /**
43      * 下载文件名
44      * 对应annotation注解里面的${fileName},struts 会自动获取该fileName
45      */
46     private String fileName;
47
48     public String getFileName() {
49         return fileName;
50     }
51
52     public void setFileName(String fileName) {
53         this.fileName = fileName;
54     }
55
56     /**
57      * 下载文件应访问该地址
58      * 对应annotation注解里面的 name = "download"
59      */
60     public String testDownload() {
61         return "download";
62     }
63
64     /**
65      * 获取下载流
66      * 对应 annotation 注解里面的 "inputName", "inputStream"
67      * 假如 annotation 注解改为 "inputName", "myStream",则下面的方法则应改为:getMyStream
68      * @return InputStream
69      */
70     public InputStream getInputStream() {
71
72         // 文件所放的文件夹 , 有关路径问题,请参考另一篇博文:http://www.cnblogs.com/xiaoMzjm/p/3878758.html
73         String path = getServletContext().getRealPath("/")+"\\DownLoadFile\\";
74
75         // 下载路径
76         String downLoadPath = path + fileName;
77
78         // 输出
79         try {
80             return new FileInputStream(downLoadPath);
81         } catch (FileNotFoundException e) {
82             e.printStackTrace();
83         }
84         return null;
85     }
86 }

struts 文件下载 annotation 注解版,布布扣,bubuko.com

时间: 2024-10-16 14:41:24

struts 文件下载 annotation 注解版的相关文章

struts2+hibernate+spring注解版框架搭建以及简单测试(方便脑补)

为了之后学习的日子里加深对框架的理解和使用,这里将搭建步奏简单写一下,目的主要是方便以后自己回来脑补: 1:File--->New--->Other--->Maven--->Maven Project--->Next(之后界面如下所示:) --->Next(点击next之后出现如下界面:选择最后一个 maven-archetype-webapp,然后点击next) --->Next(点击next之后出现如下界面,然后选择好组织号,工程号,版本号即可),最后点击Fi

springMVC 注解版

关于Spring MVC注解 @Transactional 事务标签 @InitBinder 标签 分类: Java开发 源代码分享2012-06-14 10:59 7721人阅读 评论(2) 收藏 举报 springmvcjavaemailpathstring 主要用到了spring-aop-2.5.6.jar的AOP支持包! 之前我们在AccountService中加入了注解@Transactional标签,但是要想要真正发挥事务作用,还需要一些配置. 主要需要调整dao.xml文件 dao

springMVC(注解版笔记)

springMVC(注解版) 较之于非注解版本,发生一下变化: 1.配置文件需要配置的标签有: <!-- 包的扫描,此包下面的所有包都启用注解 --> <context:component-scan base-package="com.mindreader.springmvc.controller" /> <!-- 开启注解 --> <!--包的映射--> <bean class="org.springframework.

SpringMVC环境搭建---xml版及注解版

一.建立 JavaWeb 项目(基于Intellij 14.0.3搭建) 1.建立一个 Java 项目,在项目下新建一个文件夹 webapp ,然后在该文件夹下新建一个 WEB-INF 文件夹: 2.在 WEB-INF文件夹下建立 web.xml 文件,从 tomcat 安装路径 /conf/web.xml 中拷贝基本的文档结构,修改相应编码为 utf-8: 3.在 WEB-INF 下建立 jsp 文件夹,用来存放相关jsp 文件(MVC 中的 V): 4.在 WEB-INF 下建立 lib 文

SpringBoot整合Mybatis【非注解版】

接上文:SpringBoot整合Mybatis[注解版] 一.项目创建 新建一个工程 ? 选择Spring Initializr,配置JDK版本 ? 输入项目名 ? 选择构建web项目所需的staters(启动器) ? 选择与数据库相关的组件 ? 分析:Spring Boot基本上将我们实际项目开发中所遇到的所有场景都做了封装.它将所有的功能场景都抽取出来,做成了一个个的staters(启动器),只需要在项目的pom.xml配置文件里面引入这些starter相关场景的所有依赖都会导入进来.需要什

springMVC初识-配置版&amp;注解版

一.环境搭建(maven项目) 1.依赖: <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.0</version> <scope>test</scope> </dependency> <dependency> <gro

自己写的基于java Annotation(注解)的数据校验框架

JavaEE6中提供了基于java Annotation(注解)的Bean校验框架,Hibernate也有类似的基于Annotation的数据校验功能,我在工作中,产品也经常需要使 用数据校验,为了方便和重用,自己写了一个简单的基于Annotation的校验框架.有兴趣的可以扩展. 框架说明: AnnotationValidable接口:所有需要使用该校验框架的类都要实现它,该类中没有任何方法需要实现,仅仅是一个表明那些类需要使用该校验框架的标识. GetFiledValue类:是一个工具类,对

第17篇-JAVA Annotation 注解

第17篇-JAVA Annotation 注解 每篇一句 :真的努力后你会发现自己要比想象的优秀很多 初学心得: 怀着一颗奋斗不息的心,一切困苦艰辛自当迎刃而解 (笔者:JEEP/711)[JAVA笔记 | 时间:2017-05-17| JAVA Annotation注解 ] 1.什么是注解(Annotation) Annotation 其实就是代码里的特殊标记, 它用于替代配置文件,也就是说,传统方式通过配置文件告诉类如何运行,有了注解技术后,开发人员可以通过注解告诉类如何运行.在Java技术

Java Annotation 注解

java_notation.html div.oembedall-githubrepos { border: 1px solid #DDD; list-style-type: none; margin: 0 0 10px; padding: 8px 10px 0; font: 13.34px/1.4 helvetica, arial, freesans, clean, sans-serif; width: 452px; background-color: #fff } div.oembedall