【发布时间】:2018-11-18 01:31:02
【问题描述】:
我在 tomcat 中有一个带有上下文路径“/cas”的 servlet Web 应用程序。
当我访问“http://localhost:8080/cas”时,tomcat 会重定向到“http://localhost:8080/cas/”。
是否在任何文档中指定了这种行为?
有没有“/cas”的servlet?
【问题讨论】:
我在 tomcat 中有一个带有上下文路径“/cas”的 servlet Web 应用程序。
当我访问“http://localhost:8080/cas”时,tomcat 会重定向到“http://localhost:8080/cas/”。
是否在任何文档中指定了这种行为?
有没有“/cas”的servlet?
【问题讨论】:
它返回一个重定向,因为这些是 Java Servlet 规范 rev 3.0 中指定的规则,在 12.1 URL 路径的使用部分。它也存在于所有其他 Servlet Spec 版本中(以不同的编号)。
/cas 和 /cas/ 之间存在差异。其中一个对您的应用程序不可见(即没有您可以映射的url-pattern 将导致您的 Web 应用程序中的资源响应),另一个将被您的应用程序视为/。
如果你在ROOT 应用程序中将/cas 映射到某个东西,Tomcat 将忽略它,因为存在覆盖它的最长匹配规则(映射到/cas 的上下文)所以你的/cas 应用程序将覆盖您在 ROOT 应用程序中映射的任何内容。
/cas 请求,根据定义,是一个没有尾随 / 的目录请求,因此 Tomcat 执行添加 / 的重定向。然后10.10 欢迎文件部分开始发挥作用,Tomcat 将检查您的应用程序以确定下一步该做什么。
【讨论】:
/cas 到/cas/ 的解析作为重定向。它当然可以使用(应用程序认为的)“转发”在内部处理请求,但是重定向更清晰一些,并为客户端提供了一些关于它发生了什么的信息。
.../dir 到 .../dir/。