在我的Servlet中,我想访问上下文的根目录,以便可以进行一些JavaScript缩小。将缩小作为安装过程的一部分来完成是可能的,但我希望在Servlet启动时进行缩小,以降低实现成本。有人知道获取上下文目录的方法,以便我可以加载和写入磁盘文件吗?
这应该能够为您提供真正的路径,以便您可以用于提取/编辑文件。
我们在上下文监听器中正在执行类似的操作。
public class MyServlet extends HttpServlet {
public void init(final ServletConfig config) {
final String context = config.getServletContext().getRealPath("/");
...
}
...
}
ServletContext#getResource()
访问WebContent中的文件。因此,如果您的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");
Servlet
并不是一个好主意。最好使用ServletContextListener
,并在contextInitialized()
上执行你的操作。我曾经搜索结果,但却毫无进展。在需要使用JavaScript访问当前contextPath的JSP页面中,实际上非常简单。
只需将以下行放入您的html head内的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();
...
}
...
}
还是更复杂的东西?