以下是在Struts2中下载文件时,相关DownloadAction的配置信息
-
<actionname="download"class="com.jadyer.action.DownloadAction">
-
<resultname="success"type="stream">
-
<paramname="contentType">application/vnd.ms-powerpoint</param>
-
<paramname="contentDisposition">filename="Struts2.ppt"</param>
-
<paramname="inputName">downloadFile</param>
-
</result>
-
</action>
type默认为dispatcher。在处理文件下载的操作时,必须将type显式设置为stream类型
stream主要向浏览器发送InputStream对象,通常用来处理下载文件,还可用于返回AJAX数据
接下来就需要设置StreamResult类的三个重要的属性,如下所示
contentType属性用来指定下载文件的类型,同样可以在Tomcat6.0.20//conf//web.xml文件中查看MIME Type Mappings
contentDisposition属性用来设定显示的文件名,这是在点击下载链接时显示在提示框中的文件名
同时它的值的filename=" "所设定的name值也是下载到本地之后的文件的名字
并且它的写法是固定的filename=" ",这是由HTTP协议所规范的
inputName属性的值需严格遵守JavaBean规范,它对应着Action中返回inputStream的方法名
假设inputName设为downFile,则Action中必定有一个返回inputStream的getDownFile()方法
另外contentDisposition属性可以设定两个值,它的第一个值用来设定文件打开方式,默认的是inline即在浏览器中打开
也可设定attachment,如<param name="contentDisposition">attachment;filename="Struts2.ppt"</param>
即无论是什么类型的文件,哪怕是TXT,它也会弹出一个下载框,供用户选择打开或下载
废话少说,直接上代码
首先是web.xml文件
-
<?xmlversion="1.0"encoding="UTF-8"?>
-
<web-appversion="2.5"xmlns="http://java.sun.com/xml/ns/javaee"
-
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
-
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
-
<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>/*</url-pattern>
-
</filter-mapping>
-
</web-app>
然后是用于提供文件下载按钮的index.jsp页面
-
<%@pagepageEncoding="UTF-8"%>
-
<inputtype="button"value="Struts2的文件下载【Struts2的stream拦截器的简便应用】"onclick="javascript:window.location='download.action';"/>
然后是Struts2中的配置文件struts.xml
-
<?xmlversion="1.0"encoding="UTF-8"?>
-
<!DOCTYPEstrutsPUBLIC"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.1//EN"
-
"http://struts.apache.org/dtds/struts-2.1.dtd">
-
<struts>
-
<packagename="struts2.1"extends="struts-default">
-
<actionname="download"class="com.jadyer.action.DownloadAction">
-
<resultname="success"type="stream">
-
<paramname="contentType">application/vnd.ms-powerpoint</param>
-
<paramname="contentDisposition">attachment;filename="Struts2.ppt"</param>
-
<paramname="inputName">downloadFile</param>
-
</result>
-
</action>
-
</package>
-
</struts>
最后是用来处理文件下载的核心操作的DownloadAction.java
-
packagecom.jadyer.action;
-
-
importjava.io.InputStream;
-
-
importorg.apache.struts2.ServletActionContext;
-
-
importcom.opensymphony.xwork2.ActionSupport;
-
-
@SuppressWarnings("serial")
-
publicclassDownloadActionextendsActionSupport{
-
-
publicInputStreamgetDownloadFile()throwsException{
-
returnServletActionContext.getServletContext().getResourceAsStream("/upload/Struts2.ppt");
-
}
-
-
@Override
-
publicStringexecute()throwsException{
-
returnSUCCESS;
-
}
-
}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
补充:测试之前,记得在WebRoot下面建立一个upload目录
补充:然后在upload目录下提供一个Struts2.ppt文件,原因你知道的
转自:http://blog.csdn.net/jadyer/article/details/6172018
分享到:
相关推荐
struts2官方文档
使用struts2实现文件下载功能,可以直接运行!
struts2中实现文件上传 struts2中实现CRUD struts2中的OGNL struts2的新表单标志的使用 struts2与AJAX一 struts2与AJAX二 struts2与AJAX三 struts2中用Spring实现IOC struts2中的零配置与IOC struts2介绍之使用连接...
struts2的根本webwork2
在struts2基础上实现的包括单文件、多文件的上传及下载
网上很多有关struts2的api文档都是不全的。我经过精心整理出的struts2api文档,非常齐全。
NULL 博文链接:https://zhouxianglh.iteye.com/blog/511901
struts2中的文件上传和下载: 1.首先导入commons-fileupload-1.2.1.jar和commons-io-1.4.jar两个jar包 2.其次JSP页面中的文件上传控件所在的form必须设置属性enctype="multipart/form-data" 3.再次,struts2中...
Struts 2中实现文件下载 文件下载
在struts官网下的struts2中没有帮助文档,几经周折找到的API文档,包括了struts中常用jar包(struts2-core,xwork-core等)!
Struts2 Struts2 超好的Struts2 pdf 文档 Struts2 Struts2 超好的Struts2 pdf 文档 Struts2.pdf文档
Struts2下载文件时中文乱码和空格处理
struts2文件上传和下载 struts2文件上传和下载 struts2文件上传和下载 struts2文件上传和下载 struts2文件上传和下载
struts2中的文件上传和下载示例 struts2中的文件上传和下载示例 struts2中的文件上传和下载示例
struts2 chm 程序包 org.apache.struts2 接口概要 接口 说明 StrutsStatics Constants used by Struts. 类概要 类 说明 RequestUtils Request handling utility class. ServletActionContext Web-specific ...
struts2配置文件以及代码示例struts2配置文件以及代码示例struts2配置文件以及代码示例struts2配置文件以及代码示例struts2配置文件以及代码示例struts2配置文件以及代码示例struts2配置文件以及代码示例struts2配置...
http://blog.csdn.net/johnjobs/article/details/8076832博文中附件的下载链接
Struts2中文件上传与下载案例
struts2文件下载极其简单struts2文件下载极其简单struts2文件下载极其简单struts2文件下载极其简单
Struts2 开发者文档 api