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

Web applications 在Servlet中获取Web应用程序名称,web-applications,servlets,Web Applications,Servlets,我正在开发一个可以在多个web应用程序中使用的公共工件。开发人员只需将MyListener类添加到他们的web.xml中。在我的侦听器中,我需要获取代码运行时使用的web应用程序名称 尽管getServletContextName()将给出一个名称,但该名称是在web.xml中编码的显示名称。我认为显示名称是可选的,因此不可靠。所以我想得到实际的web应用程序名。有办法做到这一点吗 谢谢您的关注。我找到了一种方法 new java.io.File(context.getRealPath("/")

我正在开发一个可以在多个web应用程序中使用的公共工件。开发人员只需将MyListener类添加到他们的web.xml中。在我的侦听器中,我需要获取代码运行时使用的web应用程序名称

尽管getServletContextName()将给出一个名称,但该名称是在web.xml中编码的显示名称。我认为显示名称是可选的,因此不可靠。所以我想得到实际的web应用程序名。有办法做到这一点吗


谢谢您的关注。

我找到了一种方法

new java.io.File(context.getRealPath("/")).getName()
上面给出了web应用程序名称,即WAR名称

哈迪克,谢谢你调查这件事


MaVRoSCy,显示名称可以是任何内容。它不必是web应用程序名。例如,所有Maven web项目的默认显示名称都是“Archetype created web application”,我不想选择它。

我找到了一种方法

new java.io.File(context.getRealPath("/")).getName()
上面给出了web应用程序名称,即WAR名称

哈迪克,谢谢你调查这件事

MaVRoSCy,显示名称可以是任何内容。它不必是web应用程序名。例如,所有Maven web项目的默认显示名称都是“Archetype created web application”,我不想选择它。

尝试使用此代码

String ApplicationName = ((HttpServletRequest) request).getContextPath()
                    .replace("/", "");
请尝试使用此代码

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

如果不是显示名称,那么实际的应用程序名称是什么?您要查找的是
request.getContextPath()
。它返回用于调用的web应用程序的名称。e、 g.`。因此,返回值将是“test”,如果它不是显示名称,那么实际的应用程序名称是什么?您要查找的是
request.getContextPath()
。它返回用于调用的web应用程序的名称。e、 g.`。所以,返回值将被“测试”这不是一种可靠的方法<当WAR文件未在本地磁盘文件系统上展开,而是在内存中展开时,code>getRealPath()返回
null
。这是特定于服务器的配置设置,无法从webapp内部控制。这不是一种可靠的方法<当WAR文件未在本地磁盘文件系统上展开,而是在内存中展开时,code>getRealPath()返回
null
。这是特定于服务器的配置设置,无法从webapp内部控制。