Разные URL для разработки и производства. (Перезагрузка статического контента)

1

Итак, вот моя история.

Я разрабатываю весеннее веб-приложение. Перезагрузка статического содержимого (js, css, jsp) была нарушена и найдена в следующем потоке:

Получение ресурсов на сервере VFrabric для развертывания без необходимости перезагрузки контейнера

Для перезагрузки на работу у меня не могло быть корневого URL '/'. Поэтому я меняю это на "/project" и мои перезагрузки. Большой!

Но тогда возникает следующая проблема. У меня есть много аякс-запросов к '/typeahead/searchUniversities/% QUERY', например, это нужно будет изменить на "project/typeahead/searchUniversities/% QUERY". И когда я загружу его на рабочий сервер, мне нужно будет вернуть его обратно в '/typeahead/searchUniversities/% QUERY'

Поскольку "/проект" предназначен только для разработки

Поэтому я читал про профили, но я не уверен, что это путь. Я мог бы переусердствовать?

Я также думал о том, чтобы иметь что-то вроде "$ {baseurl}/typeahead/searchUniversities/% QUERY", а затем просто менять одно место перед производством. Но не знаю, как это сделать.

Если бы кто-нибудь мог привести меня к примеру, как это сделать, было бы здорово.

Спасибо!

  • 0
    Вы используете Maven в качестве инструмента для сборки?
  • 0
    Да я использую Maven
Показать ещё 2 комментария
Теги:
spring
production-environment
url

2 ответа

2
Лучший ответ

Изменение: добавить еще один прямой способ получить контекстный путь в JSP

URL-адрес никогда не должен быть статичным в webapp: путь контекста определяется во время развертывания, а не во время компиляции. Если вы используете библиотеку Spring tag, вы можете использовать <spring:url>, если не тег JSTL <c:url>. Оба автоматически добавят для вас контекстный путь.

BTW: в JSP <%= application.getContextPath() %> указывает путь контекста без какого-либо дополнительного taglib.

Но, пожалуйста, используйте только относительные пути, где это имеет смысл и никогда не используется для URL "верхнего уровня".

  • 0
    Я думаю, что это решение моей проблемы. Я не просто уверен, как добраться до тегов this в моем отдельном файле JS. Чтобы изменить мой AJAX вызывает URL-адреса.
  • 0
    @nilsi Я не очень хорош в JavaScript. Но ИМХО вам нужен хотя бы один JS, который не будет статичным в / js, а будет динамически генерироваться JSP - просто не забудьте установить тип text/javascript ... Этот будет содержать ваш фактический путь к контексту, это будет либо просто определять переменную, которая будет использоваться другими файлами JS, либо напрямую использоваться всеми вашими вызовами ajax.
Показать ещё 2 комментария
0

Ваше приложение не должно зависеть от контекстного пути, в котором оно развертывается. Одним из решений этой конкретной проблемы было бы использование относительных путей в ваших запросах ajax,

например

' typeahead/searchUniversities/%QUERY ', а не ' /typeahead/searchUniversities/%QUERY '

  • 0
    Будьте осторожны при использовании относительных запросов, вы должны быть уверены в уровне глубины текущего URL. ИМХО это безопасно только в тривиальных приложениях, где все URL находятся на уровне 1.
  • 0
    Вот почему я не использую этот метод. Так как у меня одни и те же ссылки на разных глубинах.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню