程序员人生 网站导航

Struts2之struts2文件下载详解

栏目:框架设计时间:2015-01-06 08:45:05

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

 

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

 

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

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

 

b)创建actionDownloadFileAction.java

只需创建1个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中定义的方法的名称。必须1致,不然struts2不知道你是要求的那个方法。

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

 

 

3、经验之谈:

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

b)大家1定要学会给自己出问题,然后自己再想法解决。有人会说,我这不是自找难看吗,其实不是这样的,当我们想法出困难时,其实也是在加深我们对知识点的记忆。这类方式还是提倡的。比如:《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,配置默许文件上传组件。而在它下方第3行有:struts.multipart.maxSize=2097152这样1个配置。下面怎样弄,大家应当会吧。

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

 

4、参考项目:http://download.csdn.net/detail/u011638419/8222629

 

5、逐日1乐:

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

 

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

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐