【问题标题】:Getting Web Application Name in a Servlet在 Servlet 中获取 Web 应用程序名称
【发布时间】:2012-08-31 18:46:59
【问题描述】:

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

虽然 getServletContextName() 会给出一个名称,但这个名称是 web.xml 中编码的显示名称。我认为 display-name 是可选的,所以它不可靠。所以我想获取实际的 Web 应用程序名称。有没有办法做到这一点?

感谢收看。

【问题讨论】:

  • 如果不是显示名称,实际的应用程序名称是什么?
  • request.getContextPath(),你在找。它返回您用来调用的 Web 应用程序的名称。例如localhost:8080/test`。所以,返回值将是“测试”

标签: web-applications servlets


【解决方案1】:

试试这段代码

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

【讨论】:

    【解决方案2】:

    我找到了一种方法......

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

    上面给出了 Web 应用程序名称,即 WAR 名称。

    Hardik,感谢您对此进行调查。

    MaVRoSCy,显示名称可以是任何东西。它不必是 Web 应用程序名称。例如,所有 Maven Web 项目都将默认显示名称为“我不想选择的原型创建的 Web 应用程序”。

    【讨论】:

    • 这不是一个可靠的方法。当 WAR 文件不在本地磁盘文件系统上展开,而是在内存中展开时,getRealPath() 返回 null。这是一个特定于服务器的配置设置,无法从您的 web 应用程序内部控制。
    猜你喜欢
    • 2013-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-02
    • 1970-01-01
    • 2014-01-19
    • 1970-01-01
    相关资源
    最近更新 更多