Я думаю, что большинство веб-фреймворков Java позволяют вам повторно использовать компоненты и / или теги. Они отличаются гибкостью, контролем, доступностью стандартных компонентов и такими функциями, как URL-адреса, удобные для поисковых систем.
Существует в основном две категории фреймворков: на основе компонентов (JSF, Wicket, Tapestry, GWT) и на основе действий (Struts, Stripes, Webworks, Spring). Оба позволяют повторно использовать компоненты, но основанные на компонентах инфраструктуры скрывают низкоуровневые http-компоненты и позволяют вам использовать полные серверные компоненты состояния.
Какой тип лучше, зависит от того, что вам нужно. Если вам нужен максимальный контроль над HTML, высокопроизводительными и удобными для поисковых систем URL, тогда я бы предпочел среду, основанную на действии. Если вы предпочитаете скрывать сторону http и хотите программировать на более высоком уровне, как будто вы создаете приложение для Windows, то я думаю, что вам лучше работать с компонентной средой.
JSF: сложная структура, большинство программистов считают ее не очень элегантной. Но поскольку это часть стандарта Java EE, это стандарт де-факто.
Wicket: , как и JSF, основанная на компонентах. Но это гораздо проще и элегантнее (возможно, вы захотите рассмотреть Click).
Гобелен: также компонентный фреймворк, он особенно прочен в библиотеке стандартных компонентов для создания мощных веб-приложений.
Полосы: мой личный фаворит, это простой, очень элегантный и простой в освоении MVC-фреймворк. Поскольку это не основанная на компонентах, а основанная на действии структура, она предлагает максимальную гибкость. Он дает вам полный контроль над сгенерированным HTML (как не может большинство основанных на компонентах фреймворков). Это позволяет вам повторно использовать компоненты, повторно используя шаблоны, используемые контроллером Java. Конечный пользователь может просто настроить шаблоны HTML или использовать собственные теги. Я выбрал этот фреймворк, так как он поддерживает генерацию ссылок для дружественной поисковой системе.