• struts2文件下载及 <param name="inputName">inputStream</param>的理解


    转自:http://blog.csdn.net/wnczwl369/article/details/7483290

    转自:http://hi.baidu.com/c2_sun/item/934a542518c6ecc5a5275aad

    struts.xml文件配置:

     1 <span style="font-size:16px;"><?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE struts PUBLIC
     3     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
     4     "http://struts.apache.org/dtds/struts-2.0.dtd">
     5 
     6 <struts>
     7     <constant name="struts.enable.DynamicMethodInvocation" value="false" />
     8     <constant name="struts.devMode" value="true" />
     9 
    10     <package name="app14a" extends="struts-default">
    11         <action name="Menu">
    12               <result>/jsp/Menu.jsp</result>
    13         </action>
    14         <action name="ViewCss" class="app14a.FileDownloadAction">
    15             <result name="success" type="stream">
    16                 <param name="inputName">inputStream</param>
    17                 <param name="contentType">text/css</param>
    18                 <param name="contentDisposition">filename="main11.css"</param>
    19                 <param name="bufferSize">2048</param>
    20             </result>
    21         </action>
    22         <action name="DownloadCss" class="app14a.FileDownloadAction">
    23             <result name="success" type="stream">
    24                 <param name="inputName">inputStream</param>
    25                 <param name="contentType">application/octet-stream</param>
    26                 <param name="contentDisposition">filename="main111222.css"</param>
    27                 <param name="bufferSize">2048</param>
    28             </result>
    29         </action>
    30     </package>
    31 </struts></span>

       action特殊的地方在于result的类型是一个流(stream),配置stream类型的结果时,因为无需指定实际的显示的物理资源,所以无需指定location属性,只需要指定inputName属性,该属性指向被下载文件的来源,对应着Action类中的某个属性,类型为InputStream,,struts2会寻找一个返回类型为InputStream的方法getInputStream()(方法名最好为getInputStream,有人说此方法名可以为别的可能需要与struts.xml中的inputName保存一致下面有解释,不过我实验的结果不是这样,须为getInputStream,可能是org.apache.struts2.dispatcher.ResultStream类限制造成,感兴趣的可以看看此类的源码,就会明白的),得到InputStream。

         另一种理解:action中定义一个返回InputStream的方法,该方法作为被下载文件的入口,且需要配置stream类型结果时指定inputName参数,inputName参数的值就是方法去掉get前缀、首字母小写的字符串。

    下面则列出了和下载有关的一些参数列表: 

    参数说明 
    contentType 
    内容类型,和互联网MIME标准中的规定类型一致,例如text/plain代表纯文本,text/xml表示XML,image/gif代表GIF图片,image/jpeg代表JPG图片 
     
    inputName 
    下载文件的来源流,对应着action类中某个类型为Inputstream的属性名,例如取值为inputStream的属性需要编写getInputStream()方法 
     
    contentDisposition 
    文件下载的处理方式,包括内联(inline)和附件(attachment)两种方式,而附件方式会弹出文件保存对话框,否则浏览器会尝试直接显示文件。取值为: 
    attachment;filename="struts2.txt",表示文件下载的时候保存的名字应为struts2.txt。如果直接写filename="struts2.txt",那么默认情况是代表inline,浏览器会尝试自动打开它,等价于这样的写法:inline; filename="struts2.txt" 
     
    bufferSize 
    下载缓冲区的大小
     
     

    配置文件详解:

    1、type 为 stream 应用 StreamResult 处理

    2、contentType

       内容类型,和互联网MIME标准中的规定类型一致,例如text/plain代表纯文本,text/xml表示XML,image/gif代表GIF图片,image/jpeg代表JPG图片

    3、inputName

      下载文件的来源流,对应着action类中某个类型为Inputstream的属性名,例如取值为inputStream的属性需要编写getInputStream()方法

    4、contentDisposition

      文件下载的处理方式,包括内联(inline)和附件(attachment)两种方式,而附件方式会弹出文件保存对话框,否则浏览器会尝试直接显示文件。取值为:

      attachment;filename="struts2.txt",表示文件下载的时候保存的名字应为struts2.txt。如果直接写filename="struts2.txt",那么默认情况是代表inline,浏览器会尝试自动打开它,等价于这样的写法:inline;filename="struts2.txt"

    5、bufferSize

      下载缓冲区的大小

     

  • 相关阅读:
    hive报错 java.sql.SQLException: No suitable driver found for jdbc:hive://localhost:10000/default
    使用Beeline连接Hive
    hive报错 root is not allowed to impersonate root (state=08S01,code=0)
    hive报错 Could not open client transport with JDBC Uri: jdbc:hive2://node01:10000/default:java.net.ConnectException refused
    excel快速删除空值单元格,数据上移
    FineBI 图表选择
    数据库连接池大小设置?
    工作中有待留❤️积累的一些经验
    内存包括随机存储器(RAM),只读存储器(ROM),以及高速缓存(CACHE)。RAM最重要
    我自己ood的复习思路:抄
  • 原文地址:https://www.cnblogs.com/x_wukong/p/3703017.html
Copyright © 2020-2023  润新知