Servlet 3.0 有一个很棒的特性:我可以使用 META-INF/resources 文件夹访问 JAR 中的静态资源。因此,如果我的 JAR 中有一个 javascript,我可以使用 http://myurl.com/myapp/myjavascript.js访问。那太棒了。但是...如何从 jar 中获取该文件以对其进行操作或对其进行处理?
问问题
157 次
1 回答
1
只需使用ServletContext#getResourceAsStream()
通常的方法来获取InputStream
它:
InputStream input = getServletContext().getResourceAsStream("/META-INF/javascript.js");
至于你操纵它的意图,忘记它。此资源不可写。基本上,您需要提取整个 JAR、操作条目、重新打包 JAR 并提供自定义类加载器来重新加载它并告诉容器使用它。即使您成功了,一旦您重新部署 WAR 或在某些配置中即使您只是重新启动服务器,所有更改也会丢失,原因很简单,这些更改不包含在原始 WAR 中。
在解决具体的功能需求方面,您走错了路。我建议退后一步,问一个关于如何解决您错误地认为这是正确解决方案的特定具体功能需求的新问题。
于 2013-08-03T03:03:55.643 回答