以编程方式从我的 java webapp 读取静态资源 [重复]

2024-03-22

目前,我的 .war 文件中有一堆图像,如下所示。

WAR-ROOT
  -WEB-INF
  -IMAGES
    -image1.jpg
    -image2.jpg
  -index.html

当我通过 servlet/jsp/etc 生成 html 时,我可以简单地链接到

http://host/contextroot/IMAGES/image1.jpg http://host/contextroot/IMAGES/image1.jpg

and

http://host/contextroot/IMAGES/image1.jpg http://host/contextroot/IMAGES/image1.jpg

不是我正在编写一个 servlet,它需要获取这些图像的文件系统引用(在本例中渲染出复合 .pdf 文件)。有没有人建议如何获取对战争中放置的文件的文件系统引用,类似于这样?

这可能是我在 servlet 初始化时获取的 url?显然我可以有一个明确指向安装目录的属性文件,但我想避免额外的配置。


如果你能保证WAR被展开,那么你可以使用ServletContext#getRealPath() http://download.oracle.com/javaee/6/api/javax/servlet/ServletContext.html#getRealPath%28java.lang.String%29将相对 Web 路径转换为绝对磁盘文件系统,您可以在通常的 Java IO 内容中进一步使用它。

String relativeWebPath = "/IMAGES/image1.jpg";
String absoluteDiskPath = getServletContext().getRealPath(relativeWebPath);
File file = new File(absoluteDiskPath);
InputStream input = new FileInputStream(file);
// ...

但是,如果您不能保证 WAR 已展开(即所有资源仍然打包在 WAR 内),并且您实际上对绝对磁盘文件系统路径和您的所有内容不感兴趣,实际上需要只是一个InputStream出来,然后使用getServletContext().getResourceAsStream() http://download.oracle.com/javaee/6/api/javax/servlet/ServletContext.html#getResourceAsStream%28java.lang.String%29反而。

String relativeWebPath = "/IMAGES/image1.jpg";
InputStream input = getServletContext().getResourceAsStream(relativeWebPath);
// ...

也可以看看:

  • getResourceAsStream() vs FileInputStream https://stackoverflow.com/questions/2308188/getresourceasstream-vs-fileinputstream
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以编程方式从我的 java webapp 读取静态资源 [重复] 的相关文章

随机推荐

  • Python 编程。访问 Windows 右键菜单选项

    我希望能够自动化工作中的一些任务 其中之一是将 Power Point 文件合并并转换为 PDF 我是个新手 我刚刚读完 Magus Heitland 的 Beginning Python 所以我不太确定我具体要问什么 在 Windows
  • 编码的 UI 测试生成器无法为记录的操作生成代码

    我尝试在 Visual Studio 2015 Enterprise 中记录 Windows 10 上运行的 IE 中最简单的编码 UI 操作 问题是最近我开始得到Value cannot be null Parameter name ke
  • 在 ruby​​ 进程之间处理大数据对象

    如果使用 Marshal dump 写入文件 我的 Ruby 哈希值将达到大约 10 MB gzip 压缩后大约为 500 KB 在 ruby 中迭代和更改这个哈希值非常快 不到一毫秒 即使复制它也非常快 问题是我需要在 Ruby on R
  • C# 序列化对象并获取字节流

    我有一个对象 一个实例Serializable班级 我想知道如何以字节流的形式获取这个对象 我知道我可以使用BinaryFormatter http msdn microsoft com en us library c5sbs8z9 asp
  • 提高 pandas groupby 的性能

    我有一个用 Python 编写的机器学习应用程序 其中包括数据处理步骤 当我编写它时 我最初在 Pandas DataFrames 上进行数据处理 但是当这导致性能糟糕时 我最终使用普通 Python 重写了它 用 for 循环代替矢量化操
  • 获取错误的毫秒延迟值

    我试图获得 1 毫秒的延迟 但延迟增加了 15 倍 我也尝试过使用 WindowsSleep 1 函数也给了我相同的结果 为什么我没有得到精确的毫秒延迟 它的工作延迟为 1 秒 include
  • 表行的 jQuery 条件选择器

    我有一个表 其中包含数据 td item td td order code td td price td 我正在使用 jQuery 处理该表 它需要查找订单代码 each productList tbody tr function var
  • #pragma 末尾的隐式屏障

    朋友们 我正在尝试学习 openMP 范例 我使用以下代码来理解 omp for pragma int main void int tid int i omp set num threads 5 pragma omp parallel pr
  • SceneKit 在与 Swift 接触后获取纹理坐标

    我想在 3D SceneKit 场景中操作 2D 纹理 因此我使用此代码来获取本地坐标 IBAction func tap sender UITapGestureRecognizer var arr NSArray my3dView hit
  • Javascript - 获取两个日期之间的日期数组

    var range getDates new Date new Date addDays 7 我希望 范围 是一组日期对象 一个代表两个日期之间的每一天 诀窍在于它还应该处理月份和年份的边界 Date prototype addDays f
  • .Net core DI 范围验证,范围与瞬态?

    正在阅读docs https learn microsoft com en us aspnet core fundamentals dependency injection view aspnetcore 2 2 scope validat
  • Mongoose 中的“__v”字段是什么

    我在用着Mongoose版本 3 与MongoDB2 2 版 我注意到一个 v字段已开始出现在我的MongoDB文件 这与版本控制有关吗 它是如何使用的 From here http mongoosejs com docs guide ht
  • 如何将字符串解析为 Haskell 中的函数?

    我想要一个看起来像这样的函数 readFunc String gt Float gt Float 它的操作是这样的 gt readFunc sin pi 2 gt 1 0 gt readFunc 2 3 0 gt 5 0 gt readFu
  • IE 地址栏和源代码中出现奇怪的字符串

    这可能是也可能不是编程问题 但我网站的一两个用户的地址栏中插入了一些奇怪的字符串 地址应该是 http URL 情侣 http URL Couple文件夹 page aspx 但有时同样的事情会变成 http 网址 http URL X 1
  • Python 模块类型输入

    我正在使用动态加载Python模块importlib import module如下 def load module mod name str gt return importlib import module mod name 有人可以告
  • 比较 MAC OSX 中 Bash 中的两个日期

    我是 Bash 新手 提前道歉 Set up 我有一个特定的结束日期end这取决于特定的开始日期s和周期长度p这样 end s p Problem 当且仅当今天的日期早于或等于结束日期时 我想执行命令 即 执行命令iffdate end C
  • 将自定义字符串转换为日期时间格式

    我有一个日期时间数据字符串列表 如下所示 list 2016 08 02T09 20 32 456Z 2016 07 03T09 22 35 129Z 我想将其转换为示例格式 对于第一项 8 2 2016 9 20 32 AM 我试过这个
  • 以编程方式格式化谷歌图表

    使用以下代码如何设置格式以便CurrencyValue1和CurrencyValue2在图表中显示为美元 作为货币值 function drawChart var data new google visualization DataTabl
  • 在 PictureBox 上绘制折线

    我想在以下位置绘制折线 由一条或多条线段组成的连续线 PictureBox 在这里 我们可以通过指定每个线段的端点来创建多条线 并计算每个线段的距离 即每条线的距离 如果您想在图片框上执行此操作 最简单的方法是从PictureBox并提供当
  • 以编程方式从我的 java webapp 读取静态资源 [重复]

    这个问题在这里已经有答案了 目前 我的 war 文件中有一堆图像 如下所示 WAR ROOT WEB INF IMAGES image1 jpg image2 jpg index html 当我通过 servlet jsp etc 生成 h