Как реализовать сложное отображение сервлетов в дескрипторе web.xml - PullRequest
0 голосов
/ 22 октября 2010

Я столкнулся со следующей задачей: у меня есть хост, например host.com и веб-приложение на нем. Приложение написано на Java (JSP / Servlets + Struts2).

Мне нужно реализовать такой HTTP-запрос на отображение сервлета: если пользователь вводит адрес в браузере, например http://host.com/admin.action,, где admin.action - существующее действие, определенное в struts.xml, то визуализировать это действие struts2 для пользователя. Если пользователь вводит что-то вроде http://host.com/abra-kadabra, (действие abra-kadabra не определено в struts.xml), то передайте этот запрос какому-нибудь сервлету или действиям Struts.

Может кто-нибудь посоветовать, как это сделать?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 22 октября 2010

Вы можете использовать очень мощный Tuckey URLRewriteFilter .то есть

<rule>
   <from>^/abra-kadabra$</from>
   <to>/admin.action</to>
</rule>

Это правило будет перенаправлять все запросы браузера в / abra-kadabra в /admin.action, прозрачные для пользователя.

1 голос
/ 22 октября 2010

Спецификация сервлета не дает вам много вариантов.Вы можете сопоставить свой сервлет с определенным путем (/some/specific/path), со всеми путями в некоторой иерархии (/dir/*) или с некоторым расширением (*.action).Лучшее, что вы можете сделать, это сопоставить ваш сервлет с *.action, а затем определить действие, которое должно быть выполнено, на основе request.getRequestURI() или request.getServletPath().

...