在Servlet中获取Web应用程序名称

3

我正在开发一个通用的构件,可用于多个Web应用程序。 开发人员只需将我的监听器类添加到他们的web.xml中。 在我的监听器中,我需要获取我的代码正在运行的Web应用程序名称。

虽然getServletContextName()将提供名称,但此名称是在web.xml中编码的显示名称。 我认为显示名称是可选的,因此不可靠。 所以我想获得实际的Web应用程序名称。 有办法做到这一点吗?

感谢您的关注。


如果它不是显示名称,那么实际应用程序名称是什么? - MaVRoSCy
4
你是否在寻找request.getContextPath()方法?它返回你用来调用web应用程序的名称,例如http://localhost:8080/test。因此,返回值将是“test”。 - Hardik Mishra
2个回答

4

尝试使用以下代码

String ApplicationName = ((HttpServletRequest) request).getContextPath()
                    .replace("/", "");

-1

我找到了一种方法来做这件事....

new java.io.File(context.getRealPath("/")).getName()

以上提供了Web应用程序名称,即WAR名称。
Hardik,感谢您的关注。
MaVRoSCy,显示名称可以是任何内容。它不必是Web应用程序名称。例如,所有Maven Web项目的默认显示名称都将为“Archetype created web application”,我不想选择它。

6
这种方式不可靠。当WAR文件没有在本地磁盘文件系统上展开而是在内存中时,getRealPath()会返回null。这是一个服务器特定的配置设置,无法从您的Web应用程序内部进行控制。 - BalusC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接