Фильтры в коте - PullRequest
       46

Фильтры в коте

0 голосов
/ 08 декабря 2010

Передо мной стоит задача добавить зависимое jar-приложение в существующее. Существующий не пользуется большей частью локальных преимуществ и т. Д., Но мой новый должен ...

So like I have now : localhost:8080/old-app
I want to have also : localhost:8080/[en|fr|...]/new-module

Может ли кто-нибудь указать мне направление, потому что, даже если я думаю, что у меня есть идея фильтров, сопоставление фильтров, мне не удается решить ее.

РЕДАКТИРОВАТЬ: Я хотел бы сохранить старый, а также иметь доступ к новому.

Спасибо,

С уважением, P.

Ответы [ 2 ]

3 голосов
/ 08 декабря 2010

Развернуть new-module как ROOT.war (или установить path в /META-INF/context.xml на /).Используйте Tuckey's URLRewriteFilter, чтобы переписать определенные URL-адреса и преобразовать языковую часть в параметр запроса, чтобы он был доступен request.getParameter().Это очень похоже на Apache HTTPD mod_rewrite.

Альтернативой URLRewriteFilter является создание собственного фильтра, аналогичного следующему в методе doFilter().

String uri = request.getRequestURI();
if (uri.matches("^/\\w{2}(/.*)?$")) {
    request.setAttribute("language", uri.substring(1, 3));
    request.getRequestDispatcher(uri.substring(3)).forward(request, response);
} else {
    chain.doFilter(request, response);
}

Отобразите это на url-pattern из /*.Язык будет доступен по request.getAttribute("language") на переадресованном ресурсе.

1 голос
/ 08 декабря 2010

Если вы не хотите, чтобы имя приложения использовалось в качестве корневого контекста, например localhost: 8080 / appname, но в / непосредственно вы должны поместить его в папку tomcat/webapps/ROOT.Чтобы получить более сложные сопоставления URL, взгляните на http://ocpsoft.com/prettyfaces/

...