转自:http://blog.csdn.net/ctrl_shift_del/article/details/6277340

ServletActionContext.getServletContext().getResourceAsStream("/"+tempfile);

这是java加载资源的方法,所谓资源,实际上是任何一个文件,但特别的 是,getResourceAsStream这个方法不使用绝对路径,
而是使用相对于classpath环境变量的相对路径。

所 以,如果写:
  getResourceAsStream("/resource.xml");

则要保证classpath下有 resource.xml文件就能找到。

通常,开发环境下,src目录(也就是源代码所在的目录)是包含在classpath中的,
而 在tomcat下,classpath其一指向:WEB-INF/classes目录。

另:如需使用绝对路径则可使用方法:

 public InputStream getVoiceFile() throws FileNotFoundException {
return new FileInputStream("D:/test.wav");
}

下面看一个完整的项目相关代码(struts2应用):

action 中的java 部分代码:

 public InputStream getVoiceFile() throws FileNotFoundException {

            return new FileInputStream(this.getCurrentFileFullName());

               //return ServletActionContext.getServletContext().getResourceAsStream(this.getCurrentFileFullName());
  }     public String voice(){
    return "voice";
  } }

struts.xml中部分代码:

 <result name="voice" type="stream">
<!-- 下载文件类型 -->
<param name="contentType">audio/wav</param>
<param name="inputName">inputStream</param>
<!-- 下载的InputStream流,Struts2自己动对应Action中的getVoiceFile方法,该方法必须返回InputStream 类型 -->
<param name="inputName">voiceFile</param>
<param name="bufferSize">2048</param>
</result>

jsp页面部分代码:

 <s:iterator value="voiceList" status="index" id="fielInfo">
  <tr>     <td><s:property value="fileName"/></td>
    <td><embed src="Controller_voice.action?currentFileFullName=<s:property value="fileFullName" />" autostart=false /></td>   </tr>
</s:iterator>

struts2文件下载,动态设置资源地址的更多相关文章

  1. android ImageView网络图片加载、动态设置尺寸、圆角..

    封装了一个关于ImageView的辅助类,该类可以方便实现网络图片下载的同时,动态设置图片尺寸.圆角.....一系列连贯的操作,无样式表,java代码实现所有功能,使用很方便. package com ...

  2. spring security动态管理资源结合自定义登录页面

    如果想将动态管理资源与自定义登录页面一起使用,最简单的办法就是在数据库中将登录页面对应的权限设置为IS_AUTHENTICATED_ANONYMOUSLY. 因此在数据库中添加一条资源信息. INSE ...

  3. struts2文件下载 <result type="stream">

    <!--struts.xml配置--> <action name="download" class="com.unmi.action.DownloadA ...

  4. 4.Servlet(动态web资源)

    Servlet (动态web资源) 开发一个动态web资源(即开发一个Java程序向浏览器输出数据) 需完成以下两个步骤 1.编写一个Java类,实现servelet接口 2.把开发好的Java类部署 ...

  5. 实现iOS图片等资源文件的热更新化(三):动态的资源文件夹

    简介 此文,将尝试动态从某个不确定的文件夹中加载资源文件.文章,会继续完善自定义的 imageNamed 函数,并为下一篇文章铺垫. 这么做的意义 正如我们经常所说的那样,大多数情景知道做事的意义往往 ...

  6. easyui表单多重验证,动态设置easyui控件

    要实现的功能:在做添加学生信息的时候,利用easyui的验证功能判断 学号是否重复和学号只能为数字 最终效果如下图: 但在做这个的过程中,遇到了一系列的问题: 扩展validatebox的验证方法,最 ...

  7. Windows下使用命令行设置ip地址的DNS服务器

    使用命令行或者编写bat批处理设置网络连接的IP地址以及DNS服务器地址有时候会比手动更加方便,IP地址和DNS的设置一般是配合的,常用到的几个状态是: 1.IP地址动态获取,DNS也动态 2.IP地 ...

  8. JMeter非GUI方式运行时动态设置线程组及传参

    http://blog.csdn.net/selingchen/article/details/48106517 在使用JMeter进行性能测试自动化时,可能会有如下需求: 1.指定运行多少线程,指定 ...

  9. Silverlight动态设置WCF服务Endpoint

    2013-02-02 05:57 by jv9, 1763 阅读, 3 评论, 收藏, 编辑 去年12月收到一位朋友的邮件,咨询Silverlight使用WCF服务,应用部署后一直无法访问的问题,通过 ...

随机推荐

  1. gcc的-D和-U参数:宏的设置与取消 _CCFLAGS=" -w -enable-threads=posix -DLINUX -D_REENTRANT -DWORKONGN -Dlinux -D_GN_DETAIL_SDR_"

    _CCFLAGS=" -w -enable-threads=posix -DLINUX -D_REENTRANT -DWORKONGN -Dlinux -D_GN_DETAIL_SDR_&q ...

  2. 理解css中的line-height

    在css中,line-height有下面五种可能的值:我们来看看w3c中列出如下可能值: normal:默认,设置合理的行间距. number:设置数字,此数字会与当前的字体尺寸相乘来设置行间距. l ...

  3. 高效使用git的一些命令

    1,添加文件到版本库        添加单个文件: git add filename        添加所有txt文件: git add *.txt        添加所有修改文件: git add ...

  4. C# 多线程通信详解

    一.WaitHandler的类层次 可以看到 WaitHandle是 事件(EventWaitHandle).互斥体(Mutex).信号量(Sempahore)的父类. WaitHandle我们最经常 ...

  5. Swift Tour 随笔总结 (4)

    Switch的一个例子: let vegetable = "red pepper" switch vegetable { case "celery": let ...

  6. 理解Java中的接口

    一.为什么要使用接口 假如有一个需求:要求实现防盗门的功能.门有"开"和"关"的功能,锁有"上锁"和"开锁"的功能. 分 ...

  7. HDU 1062 Text Reverse(水题,字符串处理)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1062 解题报告:注意一行的末尾可能是空格,还有记得getchar()吃回车符. #include< ...

  8. [Effective JavaScript 笔记]第26条:使用bind方法实现函数的柯里化

    bind方法的作用,除了有绑定函数到对象外,我们来看看bind方法的一些其它应用. 简单示例 例子:假设有一个装配URL字符串的简单函数.代码如下 function simpleURL(protoco ...

  9. L17 怎么向应用程序商店提交应用

    原地址:https://developer.apple.com/library/ios/#referencelibrary/GettingStarted/RoadMapiOS/ApplicationD ...

  10. 调用python 报R6034 错误

    R6034 指的是:"An application has made an attempt to load the C runtime library incorrectly. Please ...