2013-10-24 5 views
1

Я хотел бы изменить URL некоторых страниц на моем сайте точно так же, как четыреугольном делает:JSP/Servlet переписывание URL

из www.foursquare.com/v/anystring/venueid

к www.foursquare.com/v/venue-name/venueid

Например центральный парк в Нью-Йорке:

https://foursquare.com/v/writeherewhatyouwant/412d2800f964a520df0c1fe3

становится

https://foursquare.com/v/central-park/412d2800f964a520df0c1fe3

Я разрабатываю чистый JSP/Servlet приложение, никаких рамок, в контейнере Tomcat.

Я думал использовать urlrewritefilter Таки, но я не вижу, как я могу использовать динамические значения, поступающие из самого там (название местности)

Как я могу сделать это сервлет?

+0

Похоже, вам нужно использовать [Restlet] (http://restlet.org/) для достижения этой цели. Проверьте его учебник: [Маршрутизаторы и иерархические URI] (http://restlet.org/learn/tutorial/2.1/#part11) –

ответ

2

Off верхней части моей головы, вот то, что вы могли бы попробовать:

1) Создание сервлета с сервлет-отображением, соответствующим общий (префикс) часть URL (например, для Четвероугольного шаблона будет /v/*).

2) В своем сервлете извлеките оставшуюся часть пути URL, используя request.getPathInfo(). Затем вы можете разобрать его с помощью обычных утилит строк и преобразовать их в новый путь.

3) Предполагая, что ваш обновленный путь находится в переменной с именем newUrl, позвоните response.sendRedirect(newUrl), чтобы сообщить обозревателю, обновив его URL. Это также вызовет ваш сервлет снова с новым путем, поэтому он должен обрабатывать оба случая.

Смотрите Javadoc для HttpServletResponse.sendRedirect() для получения дополнительной информации о том, как он обрабатывает относительный против абсолютных путей и т.д.

+0

спасибо, даже если это не так «чисто», как я бы хотел, это хорошее решение – Rohi

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