jsp - url中以“/”结尾的作用是什么?
问题描述
我有一个项目,由教程构建,正在进行中。它在Tomcat服务器上本地使用Hibernate和 Java Servlets 。我使用以下两个网址得到不同的结果:
- 本地主机:8080/MyProject/admin
- 本地主机:8080/MyProject/admin/
要么login.jsp
通过在以下实现中执行的转发来显示页面Servlet.Filter
:
RequestDispatcher dispatcher = request.getRequestDispatcher("/admin/login.jsp");
dispatcher.forward(request, response);
但是这两个页面似乎认为它们位于不同的地址。JSP 页面中有一个指向 css 文件的链接。
<link rel="stylesheet" href="../css/styles.css">
当我查看两个 URL 的“页面源”时,以下是在将鼠标悬停在上述链接上时显示的地址:
localhost:8080/css/styles.css
localhost:8080/MyProject/css/styles.css
因此,styles.css
仅当我使用地址时才能找到该文件localhost:8080/MyProject/admin/
。
有没有办法Servlet.Filter
设置正确/预期的地址,以便用户可以添加或省略“/”并仍然到达具有相同功能的相同位置?
我在查找与“/”有关的语法信息时遇到了麻烦——我希望有一个指向背景信息或解释的链接。
解决方案
从我发现的一篇文章中,看起来一个文件夹可以用“/”结尾,也可以不用。这不是一个固定的情况。最重要的是要保持一致。
由于 Servlets 代码正确解释了末尾带有斜杠的表单,而另一个没有正确解释,我得出的结论是,最好的计划是坚持使用斜杠版本,并使用 301 重定向来处理非斜线大小写。
推荐阅读
- c# - 选择索引更改事件上的组合框
- android - 无论设备方向是纵向还是横向,我都想以横向模式录制视频
- python - 使用Python将单行的文本拆分为CSV文件中同一列的多行
- python - 模拟 Tornado AsyncHTTPClient 请求/响应
- java - JDK 11 编译失败,JDK 8 编译正常
- javascript - 当比较字符串时,三等号给出错误的输出,但在整数的情况下,它给出正确的输出
- angular - Angular Mat-multiple-select,从下拉列表中获取数据
- c# - 在实体框架核心中一起实现奇异命名约定和数据注释的正确方法
- java - 线程“main”中出现错误 java.lang.NumberFormatException:对于输入字符串:“”
- ruby - 清除具有所需值的输入