`
zjnbshifox
  • 浏览: 312837 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

Struts 2 的stream result

    博客分类:
  • Java
阅读更多
 <action name="download" class="com.unmi.action.DownloadAction">  
     <result name="success" type="stream"><!--type 为 stream 应用 StreamResult 处理-->  
         <param name="contentType">application/octet-stream</param><!--默认为 text/plain-->  
           
         <!-- 默认就是 inputStream,它将会指示 StreamResult 通过 inputName 属性值的 getter 方法,  
               比如这里就是 getInputStream() 来获取下载文件的内容,意味着你的 Action 要有这个方法 -->  
         <param name="inputName">inputStream</param>  
           
         <!-- 默认为 inline(在线打开),设置为 attachment 将会告诉浏览器下载该文件,filename 指定下载文  
               件保有存时的文件名,若未指定将会是以浏览的页面名作为文件名,如以 download.action 作为文件名,  
               这里使用的是动态文件名,${fileName}, 它将通过 Action 的 getFileName() 获得文件名 -->  
         <param name="contentDisposition">attachment;filename="${fileName}"</param>  
         <param name="bufferSize">4096</param><!-- 输出时缓冲区的大小 -->  
     </result>  
</action>


 package com.unmi.action;  
   
 import java.io.*;  
 import java.text.*;  
 import java.util.Date;  
   
 /** 
  * 文件下载的 Action  
  * @author Unmi 
  */  
 public class NetbookSerialAction {  
   
     public String execute() throws Exception {  
         //这里可加入权限控制  
         return "success";  
     }  
   
     //获得下载文件的内容,可以直接读入一个物理文件或从数据库中获取内容  
     public InputStream getInputStream() throws Exception {  
         //return new FileInputStream("somefile.rar"); 直接下载 somefile.rar  
   
         //和 Servlet 中不一样,这里我们不需对输出的中文转码为 ISO8859-1  
         return new ByteArrayInputStream("Struts2 文件下载测试".getBytes());  
     }  
   
     //对于配置中的 ${fileName}, 获得下载保存时的文件名  
     public String getFileName() {  
         DateFormat df = new SimpleDateFormat("yyyy-MM-dd");  
         String fileName = "序列号(" + df.format(new Date()) + ").txt";  
         try {  
             //中文文件名也是需要转码为 ISO8859-1,否则乱码  
             return new String(fileName.getBytes(), "ISO8859-1");  
         } catch (UnsupportedEncodingException e) {  
             return "impossible.txt";  
         }  
     }  
 }  

分享到:
评论

相关推荐

    解决struts2下载异常的jar包 struts2-sunspoter-stream-1.0.jar

    在struts2中使用result里type="stream"的结果类型时,可以实现文件的下载管理,使用时也是比较顺畅,但是当在“下载提示窗口”中点击“取消按钮”时,总是报出“java.lang.IllegalStateException”异常,异常内容...

    Struts2入门教程(全新完整版)

    org.apache.struts2.views.freemarker.FreemarkerResult 16 httpheader 16 控制特殊http行为的结果类型 16 org.apache.struts2.dispatcher.HttpHeaderResult 16 stream 16 向浏览器发送InputSream对象,通常用来处理...

    深入浅出Struts2(附源码)

    本书是广受赞誉的Struts 2优秀教程,它全面而深入地阐述了Struts 2的各个特性,并指导开发人员如何根据遇到的问题对症下药,选择使用最合适的特性。作者处处从实战出发,在丰富的示例中直观地探讨了许多实用的技术,...

    Struts2和Ajax数据交互示例详解

    前言 我们从Web 2.0的随波逐流,Ajax的大放异彩说起,Struts2框架自己整合了对Ajax的原生支持(struts 2.1.7+,之前的版本可以通过插件实现),框架的整合只是使得JSON的创建变得异常...使用stream类型的result 此种

    深入浅出Struts 2 .pdf(原书扫描版) part 1

    书中介绍了如何利用Struts 2 来解决Web 应用开发中的常见问题,同时还深入浅出地探讨了许多能帮助程序员编写Struts 2 应用程序的技巧,如管理页面导航活动、输入验证、国际化和本地化、对Ajax 的支持,等等。...

    Struts Updownload 源码

    * 从ServletContext容器根目录拿去相关资源文件,它被result(type="stream")stream指定类调用,因此在 * result中要指定关联关系&lt;param name="inputName"&gt;inputStream * */ System.out.println(...

    SSH笔记-result标签的type的使用

    SSH笔记 result标签里面 type的使用 demo包括dispatcher、chain、redirect、redirectAction、stream

    dangdang和smartstruts2.rar

    &lt;result name="success" type="stream"&gt; &lt;param name="inputName"&gt;image &lt;/result&gt; &lt;result name="success" type="json"&gt;&lt;/result&gt; &lt;result name="success" type="json"&gt;&lt;/result&gt; &lt;result ...

    网上商城需求报告

    &lt;result name="success" type="stream"&gt; &lt;param name="inputName"&gt;image &lt;/result&gt; &lt;result name="success" type="json"&gt;&lt;/result&gt; &lt;result name="success" type="json"&gt;&lt;/result&gt; &lt;result name=...

Global site tag (gtag.js) - Google Analytics