我正在尝试更多地了解使用JSP解释路径的方式。
将HTML基本标记与相对URL结合使用时,使用斜杠结束基本href是否相当标准?
我问的原因是因为我经常需要根据JSP中的上下文根来表达事物(例如,对于表单操作),以便在我映射表单时将表单路由到相应的servlet在web.xml中。
大多数时候我每次都会使用${pageContext.request.contextPath}
,直到我了解了基本标签。
但是,我猜测,因为在JSP中,斜杠被服务器解释为Web应用程序的根,我不能拥有我的基础,例如:
<base href="/foo"/>
然后在表单中有:
<form action="/extension">
...
</form>
因为这会导致表单提交到mydomain.com/extension
而不是mydomain.com/foo/extension
。我是否理解正确,因为斜杠具有特殊含义,您通常需要用反斜杠结束基本HREF以获得所需的效果?
由于
答案 0 :(得分:9)
不是。
浏览器不会简单地连接您的基本href
属性和相对网址。
相反,<base>
标记设置文档基本网址,然后用于动态生成新路径。
您可以在WHATWG HTML规范中看到一个有趣的示例:
<base href="http://www.example.com/news/index.html">
<p>Visit the <a href="archives.html">archives</a>.</p>
请注意,href
属性甚至以文件名结尾。
这意味着如果您没有在基础href
属性中添加尾部斜杠,foo
将被视为路径的最后一个易失性部分,并且基本上将被删除。举例来说:
<base href="http://www.example.com/news/index.html" />
<img src="ball.png" /> <!-- GET http://www.example.com/news/ball.png -->
<base href="http://www.example.com/news/" />
<img src="ball.png" /> <!-- GET http://www.example.com/news/ball.png -->
<base href="http://www.example.com/news" />
<img src="ball.png" /> <!-- GET http://www.example.com/ball.png -->
<base href="http://www.example.com/" />
<img src="ball.png" /> <!-- GET http://www.example.com/ball.png -->
<!-- If served from http://www.example.com: -->
<base href="/" />
<img src="ball.png" /> <!-- GET http://www.example.com/ball.png -->