Альтернативи JSP для рівня перегляду Spring MVC


77

Я прагну створити нову програму з нуля і, ймовірно, використовуватиму Spring MVC та, можливо, Spring Web Flow. Проекти, створені Spring Roo, використовують Spring MVC та додатково Web Flow. Які хороші альтернативи для технології перегляду, або JSP з таглібами Spring та JSTL та jQuery - це шлях?


14
Для тих, хто цікавиться, врешті-решт я пішов із JSP, і це вдалося дуже добре. Завдяки багаторазовому використанню файлів тегів jsp та приємних таглібів, доступних навесні та jstl, це не жахливий JSP, який я пам’ятаю з 2004 року з безліччю скриплетів та всього подібного.
digitaljoel

Будь ласка, запропонуйте альтернативу.
praveenpds

1
Ось відповідний розділ в офіційній документації Spring MVC: View Technologies .
informatik01

Відповіді:


50

У стандартному API Java EE єдиною альтернативою JSP є Facelets . На сьогоднішній день (2010) JSF - це єдиний фреймворк MVC, який спочатку підтримує Facelets.

Spring MVC підтримує нестандартно лише JSP, але він має настроюваний перетворювач перегляду, який дозволяє використовувати Facelets у будь-якому випадку. Інші кандидати - це сторонні шаблони, такі як Velocity , Freemarker та Thymeleaf, які можна налаштувати як технологію перегляду для Spring MVC. Весняна документація містить приклади інтеграції з Velocity та Freemarker.


"На сьогоднішній день (2010 р.) JSF - це єдиний фреймворк MVC, який спочатку підтримує Facelets". Ви мали на увазі "На сьогоднішній день (2010 р.) Facelets - це єдина технологія перегляду, яка спочатку підтримує структуру JSF MVC."? Хіба Facelets (що є технологією перегляду) не повинен підтримувати структуру MVC, як JSF? (Вибачте, якщо те, що я кажу, не має сенсу, я дуже новачок у JSF).
Utku

Фасетки входять до самого JSF з JSF 2.0. Тому вам не потрібно встановлювати його окремо. Самі Facelets можна використовувати з будь-яким іншим фреймворком MVC, таким як Spring MVC, але вам доведеться встановити та налаштувати його вручну.
BalusC

53

Нещодавно я виявив Чебрець .

Це виглядає як повна заміна JSP та має інтеграцію з Spring MVC. Шаблонний підхід більше схожий на HTML і може бути більш смачним для ваших дизайнерів інтерфейсу. Вони мають невеликий запис, який порівнює два рішення поруч.


3
Чебрець сам по собі чудовий, але разом з макетом діалект макет діалект мені це подобається!
Філіп Спірідонов

Чому я повинен використовувати чебрець під час фасеток? Крім того, підхід до шаблону facelet виглядає як html і багато іншого. Чому ми повинні його використовувати? Що робить це гарною річчю згідно з фасетками? для мене "Нічого". може бути, thymeleaf більше, ніж jsp. Отже, Java ee найновіші розроблені "граніти" для мови шаблону. І тому JSP - це стара технологія. Чому б ви порівняли з ним? це стара технологія? Вибачте, моя погана англійська.
erginduran

17

Нещодавно я почав використовувати звичайний HTML та jQuery для презентації з Spring MVC, лише створюючи представлення JSON.

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


Чи може сформований спокійний API обробляти пагінацію?
Yazan Jaber

ваш спокійний api може робити все, що вам заманеться. Для пагінації просто додайте початок і кінець або зміщення та розмір сторінки або все, що вам потрібно, щоб отримати відповідні результати.
digitaljoel

Привіт, я знаю, що це пізно, але лише підказка, Thymeleaf намагається вирішити саме ту проблему, яку ви згадали у своїй відповіді (взаємодія розробника та дизайнера). Тоді, мабуть, варто подивитися.
acdcjunior

дякую @acdcjunior. Я ходив на презентацію про Thymeleaf на SpringOne, і вона виглядала досить цікавою та природною, поки ведучий не сказав у своїх тестах Thymeleaf у 8 разів - у 10 разів повільніше, ніж JSP.
digitaljoel

Так, справді це повільніше. Перевірте цю тему: forum.thymeleaf.org/Performance-issue-td3722763.html . Для мене це було причиною того, що я не занурився наосліп (тому що я зазвичай розробляю його для інтернет-порталів), але для додатків "Інтранет", тих, де JSF буде прийнятним, я вважаю, що чебрець теж буде. Сподіваємось, однак, їх ефективність покращиться в майбутньому. Ура!
acdcjunior

16

Ви можете мати скільки завгодно технологій перегляду на Spring MVC. У мене є засоби вирішення перегляду FreeMarker та JSP. Коли я стикаюся з поданням, яке є занадто складним у FreeMarker (або просто більш зручним у JSP), я створюю представлення JSP. Наприклад, Spring з JSTL робить чудові форми для роботи. Для цього я використовую представлення 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>



8

Хоча це давнє запитання, я думав, що запропоную нову альтернативу - Scalate .

Scalate - це потужність у варіантах шаблонування. Єдина ймовірність полягає в тому, що Scalate вимагає великої кількості залежностей (хоча для цього потрібна Scala, для цього не потрібно писати в Scala).

Мій поточний фаворит - це Handlebars.java, який має інтеграцію Spring.


Цікаво, що в ньому немає жодної сумісності з Spring. Ви успішно інтегрували його з Spring MVC?
digitaljoel

stackoverflow.com/questions/5913373/scala-spring-and-scalate і github.com/scalate/scalate/tree/master/scalate-spring-mvc . Я зробив щось подібне до першого. Весну досить легко інтегрувати з іншими речами.
Адам Гент


5

(Моя попередня відповідь тут погано датувалася.) Freemarker принаймні такий же хороший, як Velocity. Але Thymeleaf виглядає ще більш привабливим, разом з діалектом макета це може зробити рамки шаблонів, таких як Sitemesh та плитки, непотрібними. Щодо JSF, то зауваження Thoughtworks видаються слушними :

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


Чому це найкраща альтернатива? Помилка перевірки швидкості досить погана. То чому це краще?
Адам Гент,

@Adam: це набагато простіше і не дозволяє використовувати скриплети, я вважаю це покращенням порівняно з JSP. Я пам’ятаю, писати тести для своїх шаблонів швидкості теж було досить просто.
Nathan Hughes,

3

Я використовую смужки та весну разом. Смужки більшість часу вам не заважають, але я знаходжу приємно збільшує весну, коли вам це потрібно.



3

Ви також можете використовувати Angular (фреймворк на стороні клієнта) для шару View у Spring MVC.


Чи можете ви це зробити на стороні сервера?
protoEvangelion

Якщо я вас правильно розумію, ви хотіли б запитати, чи робить Angular серверне редерінг. Починаючи з Angular 2.x, він забезпечує цю функціональність. Ви можете подивитися це посилання: Візуалізація на стороні сервера
ddsultan

Вибачте, я повинен був бути більш конкретним. Я мав на увазі, чи є спосіб на стороні сервера відтворити програму Angular в Java без сервера nodejs?
protoEvangelion

1
Існує один проект спільноти, який ви можете перевірити на наявність Java: Angular UniversalJ . Я думаю, що він використовує Node у фоновому режимі.
ddsultan

2

Я пропоную не розглядати структуру подання, як описано в більшості вище, яка не була написана поверх весняного MVC, оскільки ви потрапите в такі проблеми, як зворотні зворотні передачі, що означає, що ви не зможете подавати дані з цієї технології перегляду і отримати відповідь від sever. Наприклад, як перевірка, редагування подання даних, яке оновлюється з даними із сервера НЕ ПРАЦЮЄ.

Це пояснюється тим, що java-боби в деяких вищезгаданих технологіях подання не використовують життєвий цикл контейнера Spring. Ви зможете використовувати їх лише для чистого прикладу запиту без громадянства. Наприклад, з JSF ви не зможете використовувати постбеки, оскільки jsf постбеки працюють лише у тому випадку, якщо ви використовуєте життєвий цикл jsf, а якщо ви використовуєте перетворювач перегляду JSF Spring Spring з Spring mvc, ви не зможете робити зворотну передачу, тому вам потрібно замінити jsf сервлетний контролер замість пружинного контролера mvc.

Знову ж таки, оскільки ваші повні вимоги до проекту незрозумілі, і якщо ви не хочете вимагати зворотного зворотного зв'язку, ви можете скористатися деяким із зазначених вище варіантів.

Одним з прикладів технології перегляду, яка написана зверху og spring mvc, є zk framework на основі zk mvc, в якому ви можете розширити свої контролери mvc spring з ZK GenericForwardComposer для обробки подій. Ви завжди можете використовувати Spring для обробки життєвого циклу цих контролерів за допомогою Spring framework.

ви можете загуглити в Google, щоб знайти подібні інші продукти.

Цей огляд базується на високому рівні проектування життєвого циклу фреймворку.

Всього найкращого !!!


2

Думаю, Плитка може вам допомогти.
Ви можете визначити шаблони та використовувати JSTL всередині.



1

А як щодо phpj ?

Його можна використовувати як шаблони подання, а можна створити систему веб-сервера з нуля

Я зробив phpj, тому що мені не подобається постійно оновлювати свою програму та завантажувати її у tomcat, тому за допомогою цього я можу використовувати статичні розташування для мого веб-додатку, використовуючи конфігурації, подібні apache


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.