6

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

可以在安装过程中进行缩小,但我想在 Servlet 启动时进行以降低实施成本。

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

4

4 回答 4

14

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

Javadoc 链接

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

public class MyServlet extends HttpServlet {

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

    ...
}
于 2008-09-11T20:49:26.253 回答
2

在我的 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()

于 2009-11-27T11:49:50.273 回答
0

我在谷歌上搜索结果,却一无所获。在需要使用 Java Script 访问当前contextPath的 JSP 页面中,这实际上非常容易。

只需将以下行放入块内的html 头中。script

// set up a global java script variable to access the context path
var contextPath = "${request.contextPath}" 
于 2009-11-27T10:36:32.320 回答
-1

你的意思是:

public class MyServlet extends HttpServlet {

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

    ...
}

或者更复杂的东西?

于 2008-09-11T20:39:05.297 回答