从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(); ... } ... } 

还是更复杂的东西?