有上传,必有下载。struts同时也提供灵活性很高的下载功能。 本次主要介绍最基本的下载;由于时间关系,限制下载的次数以及一些安全问题下次再补充。
首先:最简单的下载,无非是给定一个超链接,用户点击之后弹出下载框进行下载;下载的文件名字有两种方法传入:
(1). <a href="user/down?
fileName=HrInterceptor.txt">点击下载</a> 红色部分便是对应传到action的属性;
(2). 采用依赖注入的属性,在配置文件struts.xml中动态指定该属性值
<action name="down" class="com.action.DownloadAction" >
<param name="fileName">\upload\HrInterceptor.txt</param>
<result name="success" type="stream">
<param name="contentType">text/plain</param>
<param name="inputName">DownLoadFile</param>
<param name="contentDisposition">
attachment;filename="aa.txt"
</param>
</result>
</action>
红色部分是需要添加的内容,注意是在<param>是和<result>同一个级别下的。
二者选其一后,在action定义变量fileName,并写get set方法。
其次:细心的朋友会发现struts.xml的<result>的type属性为"stream";表示用流 的形式返回给用户下载;
<param name="contentType">text/plain</param> 表示限制下载文件参数为*.txt文件;
<param name="contentDisposition">
attachment;filename="aa.txt"
</param> attachment; 表示弹出下载对话框,filename="aa.txt" 则表示下载文件的默认名称;
接着: 可能你在自己做的过程中会遇到这个异常
"Can not find a java.io.InputStream with the name" 表示找不到该路径下文件; 可能涉及到的原因如下:
(1).缺少<param name="inputName">DownLoadFile</param>,这句话表示指定由action类的getDownLoadFile()方法返回被下载文件的流
(2).action类里缺少getDownLoadFile()方法
(3).路径出错,请细查自己的文件路径
若用到绝对路径,本人demo的代码是:
public InputStream getDownLoadFile()throws Exception {
return new FileInputStream("f:\\oracle.txt");
}
若是相对路径,代码则为:
private String fileName;
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public InputStream getDownLoadFile()throws Exception {
String realPath="/upload/"+fileName;
System.out.println(realPath);
InputStream in=ServletActionContext.getServletContext ().getResourceAsStream(realPath);
return in;
}
基本功能已经实现,初学的童鞋们可参考。由于时间关系,比较强大的下载功能就下次再写出来吧!
分享到:
相关推荐
Struts2Demo2是一个基于Apache Struts2框架的示例应用,它展示了如何在实际开发中使用Struts2来构建动态Web项目。Struts2是一个强大的MVC(Model-View-Controller)框架,用于简化Java Web应用程序的开发过程。在这...
这个"Struts2 demo2"很可能是为了演示和学习Struts2框架的多种功能和配置方式。以下是根据提供的文件名解析出的相关知识点: 1. **SSH2**: SSH代表Spring、Struts2和Hibernate三个开源框架的组合,常用于构建企业级...
Struts2支持多种结果类型,如dispatcher(转发到JSP)、stream(下载文件)、redirect(重定向)。结果配置可以根据Action执行的结果(success、error等)决定跳转到哪个视图。 在提供的“struts2 demo”压缩包中,...
此外,Struts2还提供了丰富的结果类型,如`dispatcher`(转发到JSP页面)、`stream`(下载文件)、`redirect`(重定向)等,这些结果类型在`struts.xml`中通过`result`元素定义。 在`struts2Demo`中,你可能会发现测试...
本项目为基于Java语言的Struts1框架设计的struts1Demo项目源码,包含55个文件,涵盖23个JAR包、10个Java源文件、6个JSP文件、4个XML配置文件及其他类型文件。
标题"Struts2示例demo"暗示我们将探讨一个实际的应用场景,即如何使用Struts2框架来开发Web应用。这个示例可能包括创建Action类、配置struts.xml、设定JSP视图和处理用户请求等多个步骤。 描述中的"Struts示例demo...
在"struts2demo全注解"这个主题中,我们将深入探讨Struts2如何通过注解实现Action类的配置,以及如何封装请求参数到Map对象中。 在传统的Struts2配置中,我们通常会在`struts.xml`配置文件中定义Action、结果类型、...
Struts2.5.2Demo 是一个基于Java Enterprise Edition (JEE) 和Web开发的示例项目,它展示了如何使用Struts 2.5.2框架来构建动态、交互式的Web应用程序。Struts 2是一个极其流行的开源MVC(Model-View-Controller)...
这个"Struts2经典demo"是为初学者设计的,它包含了一系列的示例代码和必要的jar包,帮助理解Struts2的工作原理和用法。 在Struts2中,核心概念包括Action、Result、Interceptor等。Action是处理用户请求的核心,它...
这个"Struts2小demo"是一个基础的学习资源,旨在帮助开发者开启SSH(Spring、Struts2、Hibernate)集成开发之旅。 SSH是Java企业级开发中常用的三大开源框架,它们分别是Spring、Struts2和Hibernate。Spring提供了...
这个"struts2入门demo"是为初学者准备的一个基础实践项目,旨在帮助理解Struts2的核心概念和工作流程。让我们深入探讨一下Struts2的关键知识点。 首先,Struts2是一个基于MVC(Model-View-Controller)架构的框架,...
这个"Struts2入门demo"旨在为初学者提供一个快速理解并实践Struts2框架的起点。以下是对Struts2核心概念和相关知识点的详细说明: 1. **MVC模式**:Struts2是基于Model-View-Controller(MVC)设计模式的,它将业务...
Struts2Demo6是一个基于Apache Struts 2框架的示例项目,用于演示该框架的基本用法和功能。Struts2是Java Web开发中的一个流行MVC(模型-视图-控制器)框架,它简化了构建可维护、可扩展的Web应用程序的过程。在这个...
Struts2Demo是一个基于Struts2框架的示例项目,主要展示了如何利用Struts2进行Web应用程序开发,尤其是关于用户登录功能的实现。Struts2是Apache软件基金会下的一个开源项目,它是一个用于构建企业级Java Web应用的...
strut2是与webwork相似的一种web开发框架,这里这个demo可以让你轻松学习struts2基本的action配置、访问和过滤器使用,为了区别可以在本空间中下载基于webwork框架的应用webwork_test,加以对比,可以让你一下学习两...
这是一个struts2框架的处理流程的demo,里面有struts2基本的配置和模拟登录的例子,以及struts2前台后后台的数据交互方式的解释,代码中有完整的注释帮助理解struts2的基本流程,同时对jstl和struts2的标签也有一定...
此外,Struts2提供了丰富的插件支持,如JSON结果类型、文件上传下载、国际化等功能。通过添加相应的依赖和配置,开发者可以轻松地集成这些功能到自己的应用中。 在实践这个Struts2 demo时,你可能经历了以下步骤: ...
在本项目“Struts的Demo”中,我们将深入探讨这两个框架如何协同工作,构建一个简单的整合示例。 首先,Struts是Apache软件基金会的一个开源项目,它提供了一个用于构建基于Java Servlets的Web应用程序的MVC框架。...