2012-03-15 124 views

回答

4

在servlet的

String warName = new File(getServletContext().getRealPath("/")).getName(); 

您可以使用此。

+3

在JBoss的AS7,在一個叫做'fu.war'戰爭,這個計算結果爲'fu.war-a714101a57c33ed9'。在一些servlet容器中,這可能會起作用,但是規範顯然不需要。 – 2012-03-15 20:54:04

+4

當容器配置爲在內存中而不是在磁盤中擴展WAR時,會拋出'NullPointerException'。 – BalusC 2012-03-16 13:12:57

+0

@BalusC,你是對的,但無論如何,情況並非如此。 – 2012-03-16 13:16:30

5

ServletContext.getContextPath()

這將返回該應用程序的上下文路徑(或「」爲根上下文)。在一個servlet容器中,沒有兩個應用程序會具有相同的值。

編輯:

而對於那些誰不知道上下文路徑是什麼:它的應用程序的URI前綴。在大多數情況下,它默認爲war文件的名稱,除非您明確配置它。所以如果你有foo.war,那麼你可以在http://localhost:8080/foo/上訪問它,上面的函數將返回「/ foo」。

1

另一種方式來獲取路徑,適用於任何事情,不只是戰爭和servlet,非常適合調試目的:

 URL resource = this.getClass().getClassLoader().getResource(""); 
     System.out.println("resource = " + resource);