2012-03-15 93 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);