gpt4 book ai didi

java - Tomcat:设置 servlet 的自定义 url(servlet 映射与 .war 部署)

转载 作者:行者123 更新时间:2023-11-28 22:07:26 26 4
gpt4 key购买 nike

我希望有人能帮我解决这个问题。我在 Tomcat 服务器上运行虚拟 servlet。这基本上有效,启动后可以访问网站。我想指定一个自定义网址,例如localhost:8080/mydesiredname

我将我的 servlet 部署为 .war 文件。事实证明,.war 的名称决定了可以访问 Tomcat 的 url 名称。如果它叫abc我的 servlet 将在 localhost:8080/abc 下运行.

虽然我对这个解决方案并不满意,但我想知道 servlet-mapping 是什么?适合 <Tomcathome>/conf/web.xml .我试图覆盖和/或添加一个额外的 url 名称,我的 servlet 应该可以在该名称下访问,但这似乎不起作用。我在 web.xml 中的代码如下所示:

<servlet>
<servlet-name>ABC</servlet-name>
<servlet-class>myservlet.TheServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>ABC</servlet-name>
<url-pattern>/otherUrl</url-pattern>
</servlet-mapping>

所以我希望我的 servlet 只能通过 /otherUrl 访问或者附加到由 .war 名称决定的 url。我可能遗漏了什么。有人可以为我澄清一下吗?

最佳答案

这里有两个概念需要理解:上下文路径(可以找到应用程序的地方)和servlet 路径

上下文路径 总是相对于主机名(呃,足够接近)。因此,如果您的上下文称为 mydesiredname然后你可以在https://example.com/mydesiredname找到它.

应用程序 WEB-INF/web.xml 中的所有 URL是上下文相关的。这意味着如果您指定 /ABC对于你的 servlet 的 <url-mapping> (或 servlet 路径)然后您将通过请求 https://example.com/mydesiredname/ABC 到达该 servlet .

在 Web 应用程序中,无法响应“在”您的上下文路径 之外的 URL,因为容器不会向 https://example.com/ABC 发送请求。到具有上下文路径 的 Web 应用程序 /mydesiredname .

如果您想使用 https://example.com/ABC 访问您的 servlet ,那么您要做的就是将您的 Web 应用程序部署到所谓的“根”上下文。在 Tomcat 中,您通过将 WAR 文件命名为 ROOT.war 来做到这一点。并且上下文路径变为"" (空字符串)。

关于java - Tomcat:设置 servlet 的自定义 url(servlet 映射与 .war 部署),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51100308/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com