gpt4 book ai didi

tomcat - 没有 WEB-INF 的嵌入式 Tomcat

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

我正在努力设置嵌入式 Tomcat 服务器。我的设置与 Tomcat 约定不相似,因为我有一个 somePath/www 目录,其中包括 index.html 在内的静态文件。我也没有 WEB-INF,也没有 web.xml。

请求localhost:8080/时需要Tomcat打开index.html。这不起作用,我收到页面未找到错误。然而,当我请求 localhost:8080/index.html 时,请求返回相关文件。我当前尝试的配置如下所示。

tomcat.addWebapp("/", "somePath/www");
Context ctx = tomcat.addContext("/", "somePath/www");
Wrapper defaultServlet = ctx.createWrapper();
defaultServlet.setName("default");
defaultServlet.setServletClass("org.apache.catalina.servlets.DefaultServlet");
defaultServlet.addInitParameter("debug", "0");
defaultServlet.addInitParameter("listings", "false");
defaultServlet.setLoadOnStartup(1);
ctx.addChild(defaultServlet);
ctx.addServletMapping("/*", "default");

另一方面,对于以下设置:

tomcat.addWebapp("/MY_APP", "somePath/www");

localhost:8080/MY_APP/也可以正常工作。

当 url 只是上下文根时,有没有办法让嵌入的 Tomcat 加载位于任意目录中的 index.html?我还需要不更改目录结构的解决方案。谢谢!

最佳答案

为了让 tomcat 为只有上下文路径 (http://localhost:8080/) 的请求提供 index.html,您需要应用以下修改:

  • 使用 Context.addWelcomeFile()"index.html" 添加到上下文的欢迎文件列表中。该文件将相对于您的上下文的基本目录进行查找。您还可以使用相对路径,例如。 “static/index.html”
  • "default" servlet 的 servlet 映射中使用 "/" 模式。只有这样,tomcat 才会在调用默认 servlet 之前考虑欢迎文件并重写请求路径。

应用这些更改后,代码应如下所示:

Context ctx = tomcat.addContext("/", "somePath/www");

defaultServlet = ctx.createWrapper();
defaultServlet.setName("default");
defaultServlet.setServletClass("org.apache.catalina.servlets.DefaultServlet");
defaultServlet.addInitParameter("debug", "0");
defaultServlet.addInitParameter("listings", "false");
defaultServlet.setLoadOnStartup(1);

ctx.addChild(defaultServlet);
ctx.addServletMapping("/", "default");
ctx.addWelcomeFile("index.html");

这类似于当您调用 tomcat.addWebapp() 时 tomcat 配置上下文的方式,因此您可以只使用它:

Context ctx = tomcat.addWebapp("/", "somePath/www");

关于tomcat - 没有 WEB-INF 的嵌入式 Tomcat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15114892/

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