首页 > 代码库 > Struts2之struts2文件下载详解

Struts2之struts2文件下载详解

一、学习案例:通过在downloadfile.jsp页面点击“下载文件”,查看文件是否可以成功下载。

 

二、案例分析:struts2文件下载只需简单配置即可。

 

a)先在下载页面(downloadfile.jsp)创建下载文件的链接

<a href="downloadFile">下载文件</a>

 

b)创建actionDownloadFileAction.java

只需创建一个InputStream类型类型的get方法。

注意:此处方法名规则为:get+自定义名称。自定义名称会在struts.xml中用到。

c)配置struts.xml

文件下载默认使用的返回结果名称为success

<result type="stream">

        <param name="contentDisposition">attachment;filename="filecuijun.txt"</param>

        <param name="inputName">downloadFile</param>

</result>

通过之前的学习,我们了解到type="stream"用于文件下载,我们可以在struts-default.xml文件中查看,同时,我们找到其对应的类:org.apache.struts2.dispatcher.StreamResult。有兴趣的朋友自行研究。

 

d)通过以上步骤即可完成简单的文件下载。

 

e)注意:

1、struts.xml中配置的返回结果,必须是stream类型。

2、返回结果必须传递contentDispositioninputName

3、contentDisposition中的参数格式必须为:attachment;filename="文件名"

4、contentDispositionattachment;表示无论什么类型的文件都得提示保存或打开,不能直接在浏览器显示。大家可以自行测试。

5、inputName指定的名称既是我们在action中定义的方法的名称。必须一致,不然struts2不知道你是请求的那个方法。

6、Action中人return的文件名称是服务器中的资源名称。而contentDisposition中filename的名称是在下载文件时,保存到客户端的名称。

 

 

三、经验之谈:

a)网上的一些查看文档都是由源码生成的,大家有兴趣可以自己制作。而我们学习中一般要参考文档和源码配合看。参考文档只是为了方便。大家自行选择。

b)大家一定要学会给自己出问题,然后自己再想法解决。有人会说,我这不是自找难看吗,并不是这样的,当我们想法出难题时,其实也是在加深我们对知识点的记忆。这种方式还是提倡的。比如:《Struts2struts2文件上传详解》这章,那个朋友测试出:org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException这个异常了。有的话,你们想到解决方法了吗。

the request was rejected because its size (31974169) exceeds the configured maximum (2097152)通过这段话,我们可以知道我们上传的文件大小超出了默认上传问价的大小。而怎么修改呢。我之前说过struts大部分功能都是通过拦截器实现的。而在struts-default.xml中我们可以找到fileUpload这个拦截器,它在defaultStack中有存在,说明我们上传文件的功能是由它实现的。通过其对应的实现类,我们可以发现有个maximumSize成员变量,而它恰好也有set方法,这是你又会想到什么呢?,我之前又说过,拦截器传值怎么传。所以我们在对应的action中配置拦截器。当然这样是不行的。我只是给大家讲用已有的知识分析问题的思路。这种方法行不通,我们再想想还有什么办法,我之前在《Struts2default.properties详解》中有讲过struts.multipart.parser=jakarta,配置默认文件上传组件。而在它下方第三行有:struts.multipart.maxSize=2097152这样一个配置。下面怎么搞,大家应该会吧。

好了,今天就讲这么多,说多了大家就该无聊了。

 

四、参考项目:

 

五、每日一乐:

甲:“经人介绍,我连续相亲十次,终于相到一个有缘的人。” 
乙:“有缘?怎么说?” 
甲:“他就是我第一次相亲的对象。”

 

最终解释权归爱尚合伙人(www.23hhr.com)所有,转载请注明出处。

Struts2之struts2文件下载详解