2014-09-25 29 views
6

我想了解更多關於使用JSP解釋路徑的方式。使用基本標記時的相對URL斜槓

將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以獲得所需的效果?

謝謝

回答

7

不是真的。

瀏覽器不會簡單地連接您的基礎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> 

注意,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 --> 
+0

但不會例子帶你到http:// WWW。例。 COM /新聞/ index.html的/ archives.html? – user1154644 2014-09-25 16:13:04

+0

這是重點,它不會。它會帶你到'example.com/news/archives.html'。 – Denis 2014-09-25 16:45:12

+0

我明白了。那麼使用意向的好處或溝通是什麼:而不是似乎後者更清晰 – user1154644 2014-09-25 17:31:44