2010-10-22 5 views
0

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

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

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

Спасибо!

ответ

1

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

2

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

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

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

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