【问题标题】:Query on hitting specific servlet as default tomcat servlet查询将特定 servlet 作为默认 tomcat servlet
【发布时间】:2014-06-01 13:29:32
【问题描述】:

在我问这个问题之前,我已经通过了这个link

通常当我们浏览http://localhost:80/ 时,我们看到../tomcat/conf/web.xml (file1) 被servlet 容器而不是../tomcat/webapps/ROOT/WEB-INF/web.xml (file2) 拾取,并且file2 中没有任何内容。

现在,我可以访问作为默认 tomcat servlet(DTS) 提供的企业应用程序,当我说 DTS 时,这意味着当我输入 http://localhost:80/ 时,我得到的应用程序页面为 http://localhost/ent-app/

我的问题:

link 中,它说将所需的应用程序放在 ROOT 文件夹中,以使特定的 servlet 成为 DTS。但就我而言,ROOT 文件夹的 WEB-INF/web.xml 与 ent-app 没有任何关系,请帮助我理解,servlet 容器如何将我的 ent-app 选为 DTS?

我需要检查我机器的 tomcat 文件夹中的哪些内容才能理解?

【问题讨论】:

  • ROOT 文件夹与我的特定应用程序无关。 ROOT/WEB-INF/web.xml 有这个... Welcome to Tomcat Welcome to Tomcat

标签: java tomcat servlets


【解决方案1】:

如果你想将/ 重定向到/ent-app,那么你需要配置它。 ROOT Web 应用程序没有魔法:您需要自己配置它来执行重定向。

您可以编写自己的 servlet/filter 映射到 /* 并将所有内容重定向到 /ent-app,或者您可以使用 url-rewrite 之类的东西并根据自己的喜好进行配置。

【讨论】:

  • 如果ROOT没有魔法,那么为什么上面的链接说要在ROOT中替换我的servlet?
  • 也就是说,我需要检查 tomcat/webapps/ent-app/WEB-INF/web.xml 中的 web.xml 以检查 servlet 映射是如何完成的
  • 您的ent-app 应用程序只会被发送URL 以/ent-app/ 开头的请求。这意味着如果您请求/foo,那么该请求将转到其他应用程序。假设/foo 没有映射到任何other Web 应用程序,它将被发送到ROOT 应用程序。只需编写一个从 ROOT Web 应用程序到 /ent-app 应用程序的简单重定向器。
  • 但是为什么从 tomcat/conf/web.xml 指向 defaultservlet 呢?这是指导做什么的 web.xml。所以我的问题是,理想情况下这个 web.xml 必须在 ROOT/WEB-INF 文件夹中。
  • CATALINA_BASE/conf/web.xml 是所有 Web 应用程序的默认 web.xml。你几乎不应该编辑它。您想要的是在您的ROOT webapp 中执行重定向的 servlet(或过滤器)。 没有 WEB-INF/web.xml 也可以这样做,但如果这样做会更直接。 CATALINA_BASE/conf/web.xml 不应该被考虑编辑。
猜你喜欢
  • 2012-12-22
  • 1970-01-01
  • 2011-10-05
  • 2020-02-05
  • 1970-01-01
  • 2015-01-25
  • 1970-01-01
  • 1970-01-01
  • 2014-05-25
相关资源
最近更新 更多