簡體   English   中英

從Servlet訪問Tomcat上下文路徑

[英]Accessing Tomcat Context Path from Servlet

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

    ...
}

還是更復雜的東西?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM