Java - Как фильтр перезаписи URL Tuckee изменяет URL-адрес запроса? - PullRequest
5 голосов
/ 26 января 2010

Я хочу написать свою собственную версию переписывания URL для моего приложения, но я не знаю, как изменить URL входящего запроса в фильтре.

Я попытался просто переслать переписанный URL, но это делает так, чтобы все другие фильтры в цепочке не вызывались.

Ответы [ 3 ]

4 голосов
/ 26 января 2010

Правильный способ сделать это - создать подкласс HttpServletRequestWrapper, переопределить его getRequestURI() и другие методы для возврата нового URL-адреса и обернуть запрос им. Таким образом, вам не нужно менять другие сопоставления фильтров.

3 голосов
/ 27 октября 2011

Зачем писать свой, если у вас уже есть много хорошо написанных вариантов? Вы можете использовать фильтр перезаписи URL-адресов Tuckey, но я бы также посмотрел на это OCPsoft PrettyFaces или OCPsoft Rewrite:

С PrettyFaces :

создать WEB-INF / pretty-config.xml

<url-mapping>
   <pattern value="/#{username}" />
   <view-id value="/profile.jsp" />
</url-mapping>

Это автоматически поместит значение URL «username» в параметр запроса с именем «username» и скроет исходный URL и заменит его новым в ссылках на ваших страницах HTML.

С Переписать :

Это то же самое, что и при использовании Rewrite, который немного более явный, но также более мощный и настраиваемый.

ConfigurationBuilder.begin()
   .addRule(Join.path("/{username}").to("/profile.jsp")
                .where("username").bindsTo(Request.parameter("username")));

Надеюсь, это поможет.

~ Линкольн

3 голосов
/ 26 января 2010

но из-за этого все остальные фильтры в цепочке не называются.

Просто перенастройте другие фильтры для прослушивания нового url-pattern.

...