我的网络应用程序基于Google Maps API,我在尝试访问jar文件中的图像时遇到问题。
我希望能够做两件事:
在这两种情况下,我都需要提供图像文件的路径。此图像位于jar文件中,该文件在Web服务器中部署Web应用程序后位于/ WEB-INF / lib文件夹中。
我认为以下行可行: iconMarker.image =“WEB-INF / lib / cimCore.jar!/ META-INF / resources / img /”+ ilMarker.icon;
但它在客户端浏览器中显示以下错误: “NetworkError:404 No Found- http://ip/cimWeb/WEB-INF/lib/cimCore.jar!/META-INF/resources/img/gsearch.png”
路径没问题,所以我想通过“!”进行访问性格不是正确的方式。
有什么想法吗?
答案 0 :(得分:0)
您必须使用一个servlet,它将从类加载器加载图像字节,并将这些字节流式传输到响应中:
MyServlet.class.getResourceAsStream("/META-INF/resources/img/gsearch.png")
在图片上获取输入流response.setContentType("image/png")
请注意,大多数MVC框架都支持将URL模式映射到类路径资源,或者至少为您实现上述算法的一部分。
或者您可以从jar文件中提取这些图像,并将它们放在webapp的外部可访问资源树中。
附注:根据设计,WEB-INF无法从外部访问。如果你想做的事情是可能的,那么任何人都可以窃取任何基于Java的webapp的jar文件和配置。