从Servlet访问Tomcat上下文路径

时间:2008-09-11 20:28:32

标签: java tomcat servlets

在我的Servlet中,我想访问上下文的根,以便我可以做一些JavaScript缩小。

可以将minify作为安装过程的一部分进行,但我想在Servlet启动时进行,以降低实现成本。

有没有人知道获取上下文目录的方法,以便我可以加载文件并将文件写入磁盘?

4 个答案:

答案 0 :(得分:13)

这应该为您提供可用于提取/编辑文件的真实路径。

Javadoc Link

我们在上下文监听器中做了类似的事情。

public class MyServlet extends HttpServlet {

    public void init(final ServletConfig config) {
        final String context = config.getServletContext().getRealPath("/");
        ...
    }

    ...
}

答案 1 :(得分:2)

  

在我的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()上完成您的工作。

答案 2 :(得分:0)

我在google搜索结果并且没有在哪里。在需要使用Java Script访问当前 contextPath 的JSP页面中,它实际上非常简单。

只需将以下几行放入script块内的 html head 即可。

// set up a global java script variable to access the context path
var contextPath = "${request.contextPath}" 

答案 3 :(得分:-1)

你的意思是:

public class MyServlet extends HttpServlet {

    public void init(final ServletConfig config) {
        final String context = config.getServletContext();
        ...
    }

    ...
}

还是更复杂的东西?