URL-адреса, теряющие имя приложения в Tomcat 7 - PullRequest
2 голосов
/ 07 августа 2011

У меня есть приложение Java, работающее на Tomcat 7. Я хочу, чтобы мое приложение имело свое имя в URL. Например:

http://localhost:8080/MyApp

Я создаю WAR, развертываю, и к приложению обращаются правильно. Однако все мои теги <a> и <form> не добавляют имя приложения в URL-адреса. То есть делать что-то вроде:

<a href="/myPage">Click Me</a>

не работает. Ссылка заканчивается так:

http://localhost:8080/myPage

вместо

http://localhost:8080/MyApp/myPage

Есть ли способ настроить Tomcat для добавления имени приложения в ссылки и т. Д.? Как уже упоминалось, я не хочу удалять имя приложения из URL (то есть делать его корневым). Я знаю, что есть некоторые обходные пути (например, добавление пути к контексту в URL-адрес вручную, использование <c:url> и т. Д. Но мне интересно, можно ли сказать, что Tomcat должен это сделать. не попадает в мое приложение. Если это имеет значение, я использую Spring MVC и Maven.

1 Ответ

4 голосов
/ 07 августа 2011

Я знаю, что есть некоторые обходные пути (например, ручное добавление пути к контексту в URL, использование <c:url> и т. Д.

Это не обходные пути. Это решения. Вы просто ошиблись, предполагая, что веб-приложение работает в корневом каталоге домена. Самым простым решением -imo- является использование HTML <base>. Смотри также здесь .

Но мне интересно, может ли Tomcat сделать это? Я полагаю, что это место, чтобы спросить, так как запрос не попадает в мое заявление.

Нет. Это не обязанность сервлетконтейнера. Ни JspServlet, ни DefaultServlet не делают этого. Это ответственность самого веб-приложения (и сервера, насколько это возможно).

...