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以添加斜杠,而每个其他请求都会返回错误正如所料.
我认为它发生在org.apache.tomcat.util.http.mapper.Mapper中,即在internalMapWrapper (Context, CharChunk, MappingData)方法中。
但不幸的是我不太确定——也许这确实是一个更适合tomcat 用户邮件列表的问题。抱歉没有更好的答案。
| 归档时间: |
|
| 查看次数: |
2187 次 |
| 最近记录: |