Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Динамическое добавление страниц


Автор: llalive 5.8.2011, 12:33
Добрый день.
Имеется следующую ситуацию - мы можем добавлять через админку новые страницы на сайт. Нужно как-то реализовать, дабы осуществлялся редирект к новым страницам. Например, создали страницу news и указали для неё alias /news. 
Пытался решить несколькими способами.
1. Общий сервлет (контроллер), который имеет шаблон URL "/*". Тут возникла проблема, что данный сервлет перехватывает всё подряд - в том числе и пути до css, image и прочее.
- Можно ли как-то запретить данному серлету брать на себя запросы к примеру с URL /images/*. Или можно как-то пропускать данные запросы через сервлет и доставлять куда нужно? (используя например sendRedirect или requestDispatcher.forward - запрос вновь попадает на этот сервлет и зацикливается).
2. Динамически менял web.xml (парсил с базы все алиасы страниц и добавлял их как <url-pattern> в конфиг). Но этот способ мягко говоря не правильный - web.xml менять не есть хорошо, да и без редеплоя web.xml не подсасывается. 
- Существует ли возможность программной перегрузки файла web.xml в процессе работы?

Во-общем, надеюсь на подсказку более рационального решения данной задачи (SpringSecurity часто упоминали в данном контексте, но желательно без фреймворков обойтись). Заранее спасибо.

Автор: Stolzen 5.8.2011, 13:09
Можно сделать RouteFilter, который будет считывать данные о маппинге страниц из файла.
Например, в Gaelyk такое сделано, http://gaelyk.appspot.com/tutorial/url-routing

Код

<filter>
<filter-name>RoutesFilter</filter-name>
<filter-class>groovyx.gaelyk.routes.RoutesFilter</filter-class>
<init-param>
<param-name>routes.location</param-name>
<param-value>WEB-INF/blogRoutes.groovy</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>RoutesFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>



Автор: AntonSaburov 5.8.2011, 18:36
Так может для страниц сделать отдельный каталог и пусть сервлет перехватывает обращения только туда ?

Автор: Farmazon 5.8.2011, 22:07
http://en.wikipedia.org/wiki/Front_Controller_pattern штоле?...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)