![](/img/trans.png)
[英]With Java EE and GWT, how can I open a new browser tab to a web app on the same server?
[英]How can I get the name of the current web app in Java EE?
如何在Java EE中獲取當前Web應用程序的名稱?
我對獨立Java很滿意,但Java EE對我來說是新手。 我正在編寫一些自定義代碼來插入第三方Java EE報告包。 我在同一個Tomcat服務器上部署了多個實例,所以我有類似的東西:
C:\ +-- tomcat6 +-- webapps +-- app1 +-- app2
因此,當用戶訪問時,請說http://example.com/app1/viewReport ,我希望能夠獲得“app1”。 (而不是通過解析URL,最好。)
此外,如果有辦法獲得app1的根(在這個例子中,C:\\ tomcat6 \\ webapps \\ app1),那也很棒。
它被稱為上下文路徑。 如果代碼在Web應用程序請求上下文中運行,則可以通過調用HttpServletRequest#getContextPath()
來獲取它。
如果您嘗試訪問webapp中的文件/資源的內容,則最好使用以下方法之一:
在給定相對於Web應用程序的路徑的情況下,使用ServletContext#getRealPath(String)
也可以獲取文件/資源的磁盤上的物理路徑,但它不可靠(如果將webapp部署為webapp,則無法始終工作)例如,WAR)。
根據您的評論,您試圖訪問/ WEB-INF / classes目錄中的資源。 因為WEB-INF / classes / *是Web應用程序特定類所在的位置,所以您可以像訪問Java SE應用程序中的任何類路徑資源一樣訪問它。 再次,假設您的代碼在webapp的上下文中運行,您可以簡單地使用以下內容:
在您的情況下,您可能希望使用后者,然后通過Properties#load(InputStream)加載Properties文件。
有點像:
Properties props = new Properties();
props.load(getClass().getResourceAsStream("/reportCustom.properties"));
我想要做的是在webapps / myapp / WEB-INF / classes / reportCustom.properties中加載屬性文件
由於該文件位於classes
目錄中,因此可以使用ClassLoader (用於在類路徑上加載文件的常用Java機制)加載它。 最好使用上下文ClassLoader 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.