Каковы альтернативы JSTL? - PullRequest
16 голосов
/ 04 декабря 2008

Есть ли альтернативы JSTL? Одна компания, в которой я работал 3 года назад, использовала библиотеки JSTL и пользовательские теги для отделения представления от логики. Фронтальные разработчики использовали EL для создания сложной логики представления, генерации макетов на страницах JSP, и это сработало замечательно. Возможно, появились новые технологии. Что-нибудь лучше в эти дни?

Ответы [ 6 ]

18 голосов
/ 04 декабря 2008

JSTL и EL - это две разные концепции.

JSTL - это всего лишь одна библиотека тегов. Большинство фреймворков предоставляют свой собственный taglib, который примерно дублирует функциональность JSTL. Я говорю примерно, потому что они часто неправильно используют или игнорируют ключевые принципы JSP и Servlet API.

Сила JSTL заключается в том, что он был разработан авторами JSP с глубоким пониманием JSP и сервлетов. Сторонние теги часто создаются каким-то парнем, который не хотел RTFM и решил «начать с нуля» и придумать «что-то попроще». Однако JSTL не собирался делать все. Его можно очень успешно использовать в сочетании с другими тегами, включая ваши собственные пользовательские теги.

Язык выражений является фундаментальным для JSP. Он интерпретируется контейнером и может использоваться во многих контекстах. Он также в значительной степени свободен от побочных эффектов и имеет простой, легко понятный синтаксис, который не позволяет большому количеству логики попадать на уровень представления. Будучи частью спецификации Java EE, он также пользуется широкой поддержкой инструментов. Например, многие IDE могут реорганизовать зависимое выражение EL при переименовании свойства.

Struts2 представил OGNL для более широкой аудитории. OGNL - это возврат к злым дням сценариев. Он более мощный, и поэтому разработчики с радостью используют его для вызова произвольных методов на уровне представления и других злодеяний. Злоумышленники тоже с удовольствием этим пользуются; это общий источник уязвимостей в приложениях на основе Struts2.

Я был знаком с OGNL по многолетнему опыту работы с WebWork, и мое самое большое разочарование в Struts2 заключалось в том, что я не смог избавиться от этого мусора. Даже основатель WebWork, Патрик Лайтбоди, признает, что усыновление было ошибкой. * К счастью, его можно использовать только в ограниченных контекстах, таких как теги с поддержкой OGNL (и в некоторых других удивительных местах), в отличие от EL, который поддерживается самим контейнером и может использоваться в любом месте страницы.

Если вы хотите уйти от JSP, но у вас нет такого подхода на основе компонентов, как JSF, вы можете проверить проект Теренса Парра StringTemplate . Основное внимание здесь уделяется избавлению от побочных эффектов, что значительно повышает безопасность и масштабируемость.

* QFT: После успешной атаки на сайт разработчика Apple на базе Struts2 Патрик Лайтбоди сказал: «К сожалению, я чувствую некоторую ответственность за эту довольно серьезную дыру в безопасности. Было несколько таких, и все они внедрены в тот факт, что почти 9 лет назад я принял (плохое) решение использовать OGNL в качестве языка выражений WebWork. Я сделал это потому, что он был «мощным», но открывал все виды дополнительных хитростей связывания, которые я никогда не намеревался. "

6 голосов
/ 04 декабря 2008

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

3 голосов
/ 05 декабря 2008

JSTL рекомендует вам использовать логику в вашем интерфейсе. Вместо этого попробуйте Apache Wicket, где логика выполняется в Java.

3 голосов
/ 04 декабря 2008

JSTL - это библиотека тегов, содержащая логические функции, которые можно использовать внутри страницы JSP. Существуют и другие подобные библиотеки, но, скорее всего, вы захотите взглянуть на пересмотренные подходы ко всему решению jsp / jstl.

В частности, я бы порекомендовал посмотреть на:

Apache Wicket

JSF с лицевыми гранями

Google Web Toolkit (GWT)

1 голос
/ 04 декабря 2008

Если вы ищете более простой способ разработки приложения с использованием MVC, я настоятельно рекомендую взглянуть на Spring Framework . Spring имеет собственную библиотеку тегов, которая предоставляет большую часть того, что вам нужно в JSP. Я имел большой успех, используя Spring webflow вместе с тегом lib форм Spring. Мне нравится разделять приложение на постоянный уровень (используя поддержку ORM для Hibernate в Spring), сервисный уровень (бизнес-логика) и уровень представления. Уровень представления включает веб-потоки, JSP и POJO для проверок и действий. Я также использовал DWR в слое представления для вызовов AJAX.

0 голосов
/ 04 декабря 2008

Я не скажу, что они являются заменой или альтернативой, но я думаю, Java-Server-Faces делает шаг вперед в отделении презентации от логики ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...