Альтернативы JSP для слоя представления Spring MVC


Я ищу, чтобы создать новое приложение с нуля и, вероятно, будет использовать Spring MVC и, возможно, Spring Web Flow. Проекты, созданные Spring Roo, используют Spring MVC и, возможно, Web Flow. Каковы некоторые хорошие альтернативы для технологии просмотра,или JSP с Spring и JSTL taglibs и jQuery-это путь?

16 74

16 ответов:

в стандартном Java EE API единственной альтернативой JSP является Facelets. До сих пор (2010)JSF является единственной структурой MVC, которая изначально поддерживает Facelets.

Spring MVC поддерживает из коробки только JSP, но он имеет настраиваемый view resolver что позволяет использовать Facelets в любом случае. Другие candiates - это сторонние шаблоны, такие как скорость,Freemarker, и Thymeleaf который может быть настроен как технология просмотра для Spring MVC. Весенняя документация имеет интеграция примеры со скоростью и Freemarker.

Я недавно обнаружил Thymeleaf.

Он выглядит как полная замена для JSP и имеет интеграцию с Spring MVC. Подход шаблон больше похож на HTML и может быть более приемлемым для ваших дизайнеров пользовательского интерфейса. У них есть небольшая запись, которая сравнивает два решений бок-о-бок.

недавно я начал работать с простым HTML и jQuery для презентации с Spring MVC, создавая только представление JSON.

до сих пор это происходит довольно хорошо, и хотя мне нужно выполнять работу javascript, это значительно упрощает взаимодействие с моим дизайнером и ускоряет время оборота, когда у него есть изменения, потому что мне не нужно конвертировать его HTML в мой JSP. Жюри все еще находится на общей ремонтопригодности сайта.

вы можете иметь столько технологий просмотра, сколько хотите на Spring MVC. У меня есть Freemarker и JSP view resolvers. Когда я сталкиваюсь с представлением, что это слишком сложно в Freemarker (или просто более удобно в JSP), я создаю представление JSP. Например, Spring JSLT отлично справляется с обработкой форм. Для этого я использую представления JSP, но для почти всего остального у меня есть представления freemarker.

ознакомьтесь с документацией Spring MVC, чтобы узнать, как настроить несколько распознавателей представлений, в основном:

<bean name="freeMarkerViewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
   <property name="cache" value="true"/>
   <property name="prefix" value=""/>
   <property name="suffix" value=".ftl"/>
   <property name="order" value="1"/> <!--NOTICE THE ORDER-->
</bean>

<bean id="jspViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
    <property name="prefix" value="/WEB-INF/jsp/"/>
    <property name="suffix" value=".jsp"/>
    <property name="order" value="2"/> <!--NOTICE THE ORDER-->
</bean>

документация источники также предлагает Freemarker. Freemarker является (насколько я могу судить) быстрым и имеет некоторую интеграцию функций Spring, таких как привязка.

Spring MVC обеспечивает интеграцию со многими различными посмотреть технологии. Я бы рекомендовал использовать FreeMarker или скорость.

хотя это старый вопрос, я думал, что предложу перспективную альтернативу, которая Scalate.

Scalate-это электростанция в вариантах шаблонов. Единственная вероятность заключается в том, что Scalate требует много зависимостей (в то время как он требует Scala, он не требует, чтобы вы писали в Scala).

мой текущий любимый, хотя это руль.java который имеет интеграцию весны.

(мой предыдущий ответ был плохо датирован здесь.) Freemarker по крайней мере так же хорош, как скорость. Но Thymeleaf выглядит еще более убедительно, вместе с layout-dialect это может сделать шаблоны фреймворков, таких как sitemesh и плитки ненужными. Для JSF, критика мыслительных работ кажется правильным:

мы по - прежнему видим, что команды сталкиваются с проблемами при использовании JSF - JavaServer Faces-и рекомендуем вам избегать этой технологии. Команды, похоже, выбирают JSF, потому что это это стандарт Java EE без реальной оценки того, подходит ли им модель программирования. Мы считаем, что JSF ошибочен, потому что его модель программирования поощряет использование собственных абстракций, а не полностью охватывает базовую веб-модель. JSF, например ASP.NET webforms, пытается создать деревья компонентов с отслеживанием состояния поверх разметки HTML и протокола HTTP без состояния. Улучшения в JSF 2.0 и 2.2, такие как введение представлений без гражданства и продвижение GET, являются шагами в правильном направлении направление, может быть, даже признание того, что оригинальная модель была испорчена, но мы чувствуем, что это слишком поздно. Вместо того, чтобы заниматься сложностью JSF, мы рекомендуем командам использовать простые фреймворки и тесно сотрудничать с веб-технологиями, включая HTTP, HTML и CSS.

Я использую полосы и весна вместе. Полосы остается в стороне от вашего пути большую часть времени, но увеличивает весну красиво, когда вам это нужно я нахожу.

Я использую скорость и весна MVC. Кроме того, я размещаю свое приложение на движке приложений Googles, и у меня нет проблем.

вы также можете использовать Angular (client side framework) для вашего слоя представления в Spring MVC.

мои предложения не смотреть на view framework, как описано в большинстве из вышеперечисленных, которые не были написаны поверх spring MVC, так как вы окажетесь в таких проблемах, как обратные передачи, Что означает, что вы не сможете представить данные из этой технологии просмотра и получить ответ от sever. пример как проверка, редактировать представление данных, которое обновляется обратно с данными с сервера не будет работать .

Это потому, что Java-бобы в некоторых выше технологий просмотра не используют Spring жизненный цикл контейнера. Вы сможете использовать их только для чистого просмотра примера запроса без сохранения состояния. пример с JSF вы не сможете использовать обратную передачу с помощью JSF обратными передачами работать, если вы используете для JSF жизненного цикла и, если вы используете весна платформы JSF вид сельсин с весны в MVC, вы не сможете сделать обратную передачу, поэтому нужно заменить в JSF сервлет-контроллер вместо весны в MVC контроллер .

опять же, поскольку ваше полное требование к проекту не ясно, и если вы не хотите требования обратной передачи вы можете использовать некоторые из вышеперечисленных вариантов .

один пример технологии просмотра, который написан поверх OG spring mvc, - это zk framework на основе zk mvc, в котором вы можете расширить свои контроллеры spring mvc из zk GenericForwardComposer для обработки событий. Вы всегда можете использовать Spring для обработки жизненного цикла этих контроллеров с помощью Spring framework.

вы можете google, чтобы найти аналогичные другие продукты .

этот обзор основан на высоком уровне проектирования каркаса жизни ездить на велосипеде.

всего наилучшего !!!

Я думаю плитки может помочь вам.
Вы можете определить шаблоны и использовать JSTL внутри.

вы можете запустить Facelets ontop из Spring Webflow

а как же phpj?

Он может быть использован в качестве шаблонов просмотра или вы можете сделать ваш веб-сервер системы с нуля

Я сделал phpj, потому что мне не нравится обновлять свое приложение и загружать его с tomcat все время, поэтому с этим я могу использовать статические местоположения для своего веб-приложения, используя конфигурации, подобные apache

скорость Apache хорошая альтернатива страницам сервера Java.