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

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

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

有帮助吗?

解决方案

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

Javadoc链接

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

public class MyServlet extends HttpServlet {

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

    ...
}

其他提示

在我的 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 文件?我从未见过基于请求的缩小的需要,它只会不必要地增加很多开销。您可能只想在应用程序启动期间执行一次。如果是这样,那么使用 Servlet 因为这是一个坏主意。更好的利用 ServletContextListener 做你的事 contextInitialized().

我用谷歌搜索结果却一无所获。在需要使用Java Script访问当前的JSP页面中 上下文路径 这实际上很容易。

只需将以下行放入您的 html头 里面一个 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();
        ...
    }

    ...
}

或者更复杂的东西?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top