问题描述
我有一个根据教程构建的项目,正在进行中。它在 Tomcat 服务器上本地使用 Hibernate 和 Java Servlets。我使用以下两个网址得到不同的结果:
- 本地主机:8080/MyProject/admin
- 本地主机:8080/MyProject/admin/
通过在 >=
的实现中执行的转发导致页面 login.jsp
的显示:
Servlet.Filter
但这两个页面似乎认为它们位于不同的地址。 JSP 页面中有一个 css 文件的链接。
Requestdispatcher dispatcher = request.getRequestdispatcher("/admin/login.jsp");
dispatcher.forward(request,response);
当我查看两个 URL 的“页面源”时,以下是将鼠标悬停在上述链接上时显示的地址:
<link rel="stylesheet" href="../css/styles.css">
因此,只有在我使用地址 localhost:8080/css/styles.css
localhost:8080/MyProject/css/styles.css
时才能找到 styles.css
文件。
有没有办法让 localhost:8080/MyProject/admin/
设置正确/预期的地址,以便用户可以添加或省略“/”,并仍然使用相同的功能到达相同的位置?
我在查找与“/”相关的语法信息时遇到了问题——我希望有一个指向背景信息或解释的链接。
解决方法
从 an article I found 看来,一个文件夹的地址可以以“/”结尾,也可以不以“/”结尾。这不是一个固定的情况。最重要的是保持一致。
由于 Servlets 代码正确解释了末尾带斜杠的表单,而另一个则没有,我得出的结论是,最好的计划是坚持使用斜杠版本,并使用 301 重定向处理非斜杠情况。