2014-09-25 3 views
6

Я пытаюсь узнать больше о том, как пути интерпретируются с помощью JSP.Относительная косая черта при использовании базового тега

При использовании базового тега HTML в сочетании с относительным URL-адресом довольно ли стандартно заканчивать базовый href косой чертой?

Причина, по которой я спрашиваю, заключается в том, что мне часто приходится выражать вещи в терминах корня контекста в JSP (например, для действия формы), так что форма направляется на соответствующий сервлет, как я сопоставил это в web.xml.

В большинстве случаев я бы просто использовал ${pageContext.request.contextPath} каждый раз, пока не узнал о базовом теге.

Однако, я предполагаю, что, поскольку в JSP слэш интерпретируется сервером как корень веб-приложения, я не могу иметь мое основание быть, например:

<base href="/foo"/> 

и то в форме есть:

<form action="/extension"> 
... 
</form> 

Поскольку это приведет к тому, форма для представления mydomain.com/extension вместо mydomain.com/foo/extension. Правильно ли я понимаю это, что, поскольку слэш имеет особое значение, вам обычно нужно закончить базовый HREF с обратной косой чертой, чтобы получить желаемый эффект?

Thanks

ответ

7

Не совсем.

Браузеры не просто объединяют ваши базы href атрибуты и относительные URL-адреса. Вместо этого, <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 --> 
+0

но не пример вас к HTTP: // WWW. пример. ком/Новости/index.html/archives.html? – user1154644

+0

В этом суть, это не так. Это приведет вас к 'example.com/news/archives.html'. – Denis

+0

Я вижу. Итак, каково было бы преимущество или сообщение о намерении использовать: вместо Похоже, что последнее более ясно – user1154644

Смежные вопросы