从Servlet访问Tomcat上下文路径
在我的Servlet中,我想访问上下文的根,以便我可以做一些JavaScript缩小。
可以将minify作为安装过程的一部分进行,但我想在Servlet启动时进行,以降低实现成本。
有谁知道获取上下文目录的方法,以便我可以加载和写入磁盘文件?
这应该为您提供可用于提取/编辑文件的真实路径。
Javadoc Link
我们在上下文监听器中做了类似的事情。
public class MyServlet extends HttpServlet { public void init(final ServletConfig config) { final String context = config.getServletContext().getRealPath("/"); ... } ... }
在我的Servlet中,我想访问上下文的根,以便我可以做一些JavaScript缩小
您还可以通过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");
也就是说,您需要多久缩小一次JS文件? 我从未见过基于请求的缩小的必要性,它只会不必要地增加很多开销。 您可能只想在应用程序启动期间执行一次。 如果是这样,那么使用Servlet
是一个坏主意。 更好地使用ServletContextListener
并在contextInitialized()
上执行您的操作。
我在谷歌搜索结果,没有在哪里。 在需要使用Java Script访问当前contextPath的 JSP页面中,它实际上非常简单。
只需将以下行放入script
块中的html头部即可 。
// 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(); ... } ... }
还是更复杂的东西?