Tomcat在哪里附加/到目录路径?

Ano*_*ose 6 java tomcat servlets tomcat6

假设我的Tomcat webapps目录如下所示:

webapps/
webapps/fooapp/
webapps/fooapp/WEB-INF/
webapps/fooapp/WEB-INF/web.xml
webapps/fooapp/bardir/
Run Code Online (Sandbox Code Playgroud)

当我发出GET请求时/fooapp/bardir,Tomcat发现webapps/fooapp/bardir是一个目录,并发送回302 /fooapp/bardir/(在结尾处有一个斜杠).

这是我的问题:Tomcat源代码在哪里发生这种情况? (我正在看6.0.x但任何版本的正确答案都是一个很好的起点.)

我可以在这个主题上找到的唯一参考资料是Catalina功能规范,其中说明了默认Servlet:

在此servlet处理的每个HTTP GET请求上,应执行以下处理:

[...]

  • 如果请求的资源是目录:
    • 如果请求路径不以"/"结尾,则重定向到附加了"/"的相应路径,以便正确解析欢迎文件中的相对引用.

但是,此功能似乎不在org.apache.catalina.servlets.DefaultServlet中; 或者至少,它并不是唯一的:如果我用一个servlet 类不存在servlet替换web.xml中的默认servlet ,目录路径仍然会返回302以添加斜杠,而每个其他请求都会返回错误正如所料.

Hen*_*ing 3

认为它发生在org.apache.tomcat.util.http.mapper.Mapper中,即在internalMapWrapper (Context, CharChunk, MappingData)方法中。

但不幸的是我不太确定——也许这确实是一个更适合tomcat 用户邮件列表的问题。抱歉没有更好的答案。