![](/img/trans.png)
[英]How to get Application Path in Tomcat (not from a Servlet context)
[英]Accessing Tomcat Context Path from Servlet
在我的Servlet中,我想訪問上下文的根,以便我可以做一些JavaScript縮小。
可以將minify作為安裝過程的一部分進行,但我想在Servlet啟動時執行此操作以降低實現成本。
有誰知道獲取上下文目錄的方法,以便我可以加載和寫入磁盤文件?
這應該為您提供可用於提取/編輯文件的真實路徑。
我們在上下文監聽器中做了類似的事情。
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.