`
holdbelief
  • 浏览: 707945 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Struts 2 的stream result用法

阅读更多

 

原文地址:http://blog.csdn.net/menglingjun/archive/2010/03/08/5356105.aspx

Xml代码

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

 

class代码

 

  1. import java.io.*;       
  2.  import java.text.*;       
  3.  import java.util.Date;       
  4.         
  5.  /**     
  6.   * 文件下载的 Action      
  7.   * @author Unmi     
  8.   */       
  9.  public class NetbookSerialAction {       
  10.         
  11.      public String execute() throws Exception {       
  12.          //这里可加入权限控制       
  13.          return "success";       
  14.      }       
  15.         
  16.      //获得下载文件的内容,可以直接读入一个物理文件或从数据库中获取内容       
  17.      public InputStream getInputStream() throws Exception {       
  18.          //return new FileInputStream("somefile.rar"); 直接下载 somefile.rar       
  19.         
  20.          //和 Servlet 中不一样,这里我们不需对输出的中文转码为 ISO8859-1       
  21.          return new ByteArrayInputStream("Struts2 文件下载测试".getBytes());       
  22.      }       
  23.         
  24.      //对于配置中的 ${fileName}, 获得下载保存时的文件名       
  25.      public String getFileName() {       
  26.          DateFormat df = new SimpleDateFormat("yyyy-MM-dd");       
  27.          String fileName = "序列号(" + df.format(new Date()) + ").txt";       
  28.          try {       
  29.              //中文文件名也是需要转码为 ISO8859-1,否则乱码       
  30.              return new String(fileName.getBytes(), "ISO8859-1");       
  31.          } catch (UnsupportedEncodingException e) {       
  32.              return "impossible.txt";       
  33.          }       
  34.      }       
  35.  }       

 

 

分享到:
评论

相关推荐

    struts2 result配置详解

    Struts2 Result 配置详解 Struts2 框架中 Result 配置是一种非常重要的配置,它直接影响着应用程序的执行结果。Result 配置通常用于定义 Action 的执行结果,例如将结果.redirect 到一个新的 URL,或者将结果....

    struts2的result标签使用

    让我们深入探讨一下`Result`标签的使用以及在Struts2框架中的作用。 ### 1. Struts2框架概述 Struts2框架基于MVC设计模式,主要由四部分组成:Action、ActionMapping、Result和Interceptor。Action负责处理用户的...

    Struts2学习资源Result part1.rar

    默认情况下,如果未明确指定Result类型,那么Struts2会默认使用"dispatcher",它将请求分发到一个JSP页面。然而,Struts2提供了多种Result类型,以满足不同场景的需求。 1. **dispatcher**: 这是最常见的Result类型...

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

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

    留言板留言板struts2留言板struts2

    Struts2内置了多种结果类型,如dispatcher(重定向或转发到一个JSP页面)、stream(下载文件)等,也可以自定义结果类型。 5. **OGNL(Object-Graph Navigation Language)**:Struts2使用OGNL作为默认表达式语言,...

    Struts2 result和type

    ### Struts2中的Result与Type详解 #### 一、引言 在Struts2框架中,`Result`和`Type`是两个非常重要的概念。它们主要用于控制Action执行完毕后页面的跳转方式以及如何处理Action返回的结果。通过合理配置`Result`与...

    struts2 ,struts2 demo

    在提供的“struts2 demo”压缩包中,你可以找到这些概念的具体实现,包括Action类、视图页面、配置文件等,通过分析和运行这些示例,你可以深入理解Struts2的工作原理和用法。这个压缩包对于初学者来说是一个很好的...

    Struts2+Jquery+Ajax

    在Struts2框架下,我们可以使用Jquery的Ajax方法向服务器发送请求,获取JSON或XML数据,然后动态更新页面的部分内容。 在"06-mvc之struts2.ppt"中,可能涵盖了以下内容: 1. Struts2框架的基本概念和架构 2. 如何...

    Struts2的视频学习代码

    Struts2支持多种Result类型,如JSP、FreeMarker、Stream等。配置在Action配置文件中,它定义了Action执行完成后如何跳转到下一个视图。 4. **OGNL(Object-Graph Navigation Language)**:OGNL是Struts2中的默认...

    Struts2全部jar包

    `struts.xml`或`struts2-convention-plugin.xml`用于定义Action、结果类型、拦截器栈等,而注解可以在Action类或方法上直接添加,简化配置。 3. **拦截器(Interceptors)**:拦截器是Struts2的一大特色,它们在...

    struts2框架的使用

    4. **结果类型(Result Types)**:Struts2支持多种结果类型,如`dispatcher`(用于转发到JSP页面)、`stream`(用于下载文件)、`redirect`(重定向到另一个URL)等。在Action配置中,通过指定结果类型和目标路径,...

    Struts2项目代码

    4. **结果类型(Result)**:Action执行后会返回一个结果,Struts2支持多种结果类型,如dispatcher(转发到JSP页面)、stream(处理文件下载)等。结果类型在Action类的execute方法中通过返回值或注解指定。 5. **...

    黑马程序员Struts2笔记

    黑马程序员的笔记中可能包含了如何创建一个简单的Struts2应用,从HelloWorld实例到实际的表单提交、文件上传下载等实战案例,帮助初学者快速掌握Struts2的基本用法。 通过学习这些笔记,开发者将能够理解Struts2的...

    struts2实现文件下载功能

    - 在Action类中,设置返回值(Result)为`stream`类型。这告诉Struts2框架需要以流的形式传输数据。在Struts2的配置文件(struts.xml)中添加相应的配置。 3. **设置Content-Type和Content-Disposition**: - 在...

    struts2的复习

    8. 结果映射:Struts2支持基于结果名称的映射,通过struts.properties文件或Action注解中的result元素定义,可以灵活地指定结果的URL。 9. 通配符匹配:Struts2允许使用通配符进行Action和结果的匹配,例如,`*.{...

    struts2完整例子

    3. **配置文件**:Struts2使用XML配置文件(struts.xml或struts-default.xml)来定义Action的映射、拦截器链、结果类型等。这些配置定义了请求如何路由到Action,以及Action如何响应。 4. **拦截器(Interceptor)*...

    struts2学习笔记

    3. **使用Struts2进行下载**:通过设置Action的结果类型为`stream`,并提供文件流,Struts2可以生成下载链接。 **六.Struts2的属性驱动和模型驱动** 1. **属性驱动**:Action类中的字段直接对应请求参数,Struts2...

    Struts2演示源码

    此外,Action中方法的输入校验是非常重要的,Struts2提供了一套完整的验证机制。开发者可以使用注解或XML配置文件定义验证规则,Struts2会自动进行数据校验,并在验证失败时返回错误信息。这有助于确保数据的准确性...

    struts2案例 struts2 struts2源码

    首先,Struts2的架构基于Action和Result的设计模式,Action是业务逻辑的载体,Result则是处理Action执行后展示结果的方式。这种设计使得开发者可以灵活地定义业务流程,并且易于测试和重用代码。 在Struts2源码中,...

    struts2完整压缩包

    这个"struts2完整压缩包"很可能包含了Struts2框架的全部组件、库文件、文档、示例代码以及必要的配置文件,使得开发者可以快速地在自己的项目中集成并使用Struts2。 Struts2的核心概念基于Model-View-Controller...

Global site tag (gtag.js) - Google Analytics