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