在我的 Servlet 中,我想访问上下文的根,以便我可以做一些 JavaScript 缩小。
可以在安装过程中进行缩小,但我想在 Servlet 启动时进行以降低实施成本。
有谁知道获取上下文目录以便我可以将文件加载和写入磁盘的方法?
这应该为您提供可用于提取/编辑文件的真实路径。
我们在上下文监听器中做类似的事情。
public class MyServlet extends HttpServlet {
public void init(final ServletConfig config) {
final String context = config.getServletContext().getRealPath("/");
...
}
...
}
在我的 Servlet 中,我想访问上下文的根,以便我可以做一些 JavaScript 缩小
您还可以通过 访问 WebContent 中的文件ServletContext#getResource()
。因此,如果您的 JS 文件位于例如,WebContent/js/file.js
那么您可以使用以下内容Servlet
来获取File
它的句柄:
File file = new File(getServletContext().getResource("/js/file.js").getFile());
或得到一个InputStream
:
InputStream input = getServletContext().getResourceAsStream("/js/file.js");
也就是说,您需要多久压缩一次 JS 文件?我从未见过需要基于请求的缩小,它只会不必要地增加很多开销。您可能只想在应用程序启动期间执行一次。如果是这样,那么使用 aServlet
是一个坏主意。更好地使用ServletContextListener
和做你的事contextInitialized()
。
我在谷歌上搜索结果,却一无所获。在需要使用 Java Script 访问当前contextPath的 JSP 页面中,这实际上非常容易。
只需将以下行放入块内的html 头中。script
// set up a global java script variable to access the context path
var contextPath = "${request.contextPath}"
你的意思是:
public class MyServlet extends HttpServlet {
public void init(final ServletConfig config) {
final String context = config.getServletContext();
...
}
...
}
或者更复杂的东西?