我试图了解有关JSP解释路径的更多信息。
当将HTML基本标记与相对URL结合使用时,以斜杠结束基本href是否很标准?
我问的原因是因为我经常需要用JSP中的上下文根来表达事物(例如,用于表单操作),以便在将其映射到Web时将表单路由到适当的servlet。 xml。
大多数时候,我${pageContext.request.contextPath}每次都会使用,直到我了解了基本标签。
${pageContext.request.contextPath}
但是,我猜想由于在JSP中服务器将斜杠解释为Web应用程序的根,所以我的基础不能为例如:
<base href="/foo"/>
然后在表单中有:
<form action="/extension"> ... </form>
因为这样会导致将表单提交给mydomain.com/extension而不是mydomain.com/foo/extension。我是否正确理解了这一点,因为斜杠具有特殊含义,因此通常需要在基础HREF上加上反斜杠才能获得所需的效果?
mydomain.com/extension
mydomain.com/foo/extension
谢谢
并不是的。
浏览器不只是将基本href属性和相对URL 串联在一起。而是使用<base>标记设置 文档基本URL ,然后将其用于动态生成新路径。
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则将其视为路径的最后可变部分,并从根本上将其删除。例如:
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 -->