tomcat - 使用 Servlet 3.0 Tomcat 在 JAR 中获取文件

标签 tomcat servlet-3.0

Servlet 3.0 有一个很棒的特性:我可以使用 META-INF/resources 文件夹访问 JAR 中的静态资源。因此,如果我的 JAR 中有一个 javascript,我可以使用 http://myurl.com/myapp/myjavascript.js .那太棒了。 但是...如何从 jar 中获取该文件以对其进行操作或对其进行处理?

最佳答案

只需使用 ServletContext#getResourceAsStream()获取它的 InputStream 的常用方法:

InputStream input = getServletContext().getResourceAsStream("/META-INF/javascript.js");

至于你想操纵它,算了吧。此资源不可写。基本上,您需要提取整个 JAR、操作条目、重新打包 JAR 并提供自定义类加载器以重新加载它并告诉容器使用它。即使你成功了,一旦你重新部署 WAR 或在某些配置中,即使你只是重新启动服务器,所有更改也会丢失,原因很简单,这些更改不包含在原始 WAR 中。

您在解决具体功能需求方面走错了路。我建议退后一步,提出一个关于如何解决您错误地认为是正确解决方案的特定具体功能需求的新问题。

关于tomcat - 使用 Servlet 3.0 Tomcat 在 JAR 中获取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18028792/

相关文章:

mysql - 尝试从 NetBeans 中的 jsp 连接到 MySQL 时访问被拒绝

tomcat - HTTPS 在 EC2 服务器上运行,但在公共(public)互联网上运行不正常

osgi - 在 Servlet 3.0 服务器(如 Tomcat 7)中使用 Felix

java - 程序化 Servlet 3.0 JSP jsp-property-group 配置

java - 无法在 Tomcat 服务器上创建文件

java - Tuckey - URL 重定向有效但转发无效

java - 电子邮件发送代码不适用于 ubuntu

java - 无法在 CQ 中部署 SlingServlet

java - @资源错误: "Naming binding already exists for foo.NewServlet/userName in namespace"

java - Web 服务与 Servlet