JSP - Что не так с скриптлетами и что вместо этого использовать [дубликаты]

На этот вопрос уже есть ответ здесь:

Как избежать Java-кода в файлах JSP? 30 ответов

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

    <%! String str = "Hello World" %>
    <%= str.length() %>
    <% str=str.substring(0,5) %>

Но я читал во многих местах (на этом сайте и в других местах), что я не должен использовать скриптлеты. Это один такой вопрос:Затмение с использованием классов в JSP

Мои вопросы:

Что не так с скриптлетами?Что я использую вместо этого?

Заранее благодарю за любую помощь!

РЕДАКТИРОВАТЬ:

Я не использую сервлеты, но вставляю свой код JSP на страницу HTML. Дизайнеры пользовательского интерфейса без знания Java могут легко изменить мою страницу. В основном я использую JSP в качестве внешнего интерфейса для отображения из базы данных и внесения в нее обновлений, например, когда пользователь делает заказ.

 Matt13 июл. 2016 г., 01:26
JSP можно считать устаревшим. Если у вас есть выбор, выберите легковесные решения, которые не нужно компилировать и которые лучше разделят логику и макет.

Ответы на вопрос(3)

чтобы смешивать код с логикой представления. Вот почему JSP не является идеальным решением.

Вместо этого вы должны использовать шаблоны, такие как Velocity / Freemarker, которые вообще не позволяют смешивать код Java.

Дополнительным преимуществом этого является то, что разработчики, не являющиеся экспертами Java UI, могут вносить свой вклад в UI, не изучая Java.

 vikarjramun13 июл. 2016 г., 03:05
@ Мистер Я понимаю это. Просто с Thymeleaf (его предложение) мне не нужен JSF.
 vikarjramun13 июл. 2016 г., 02:59
@MrD На самом деле, это именно то, что я искал. Тем не менее, я получил несколько хороших советов от ответов Даффимо и Амитмы. Я думаю, что ответ Даффимо помог лучше всего, и я приму его.
 0x6C3813 июл. 2016 г., 02:32
@vikarjramun просто используйте JSF
 amitmah13 июл. 2016 г., 03:30
Когда вы упоминаете, что вам нужен код подключения к базе данных внутри JSP, похоже, вы не поняли разделение логики отображения и кода. База данных может измениться, и вы в конечном итоге будете менять JSP.
 0x6C3813 июл. 2016 г., 03:03
@vikarjramun его ответ не противоречит моему, jsf может работать поверх html5, js, bootstrap и т. д.
 0x6C3813 июл. 2016 г., 03:08
@vikarjramun в этом случае я рекомендую вам взглянуть наигровые рамки.
 vikarjramun13 июл. 2016 г., 02:21
Пара вещей: мой JSP-код легко понять не-Java-дизайнерам - это в основном HTML со значениями; Мне нужен код Java только для подключения к базе данных и чтения / записи объектов объектов. Как еще я могу добиться этого, если не через динамические серверные языки, такие как JSP?

Несмотря на то, что использовать код Java с ним довольно просто, Scriplets трудно читать, и это заставляет код выглядеть немного загроможденным imo.Как и duffymo, и большинство людей порекомендовали бы, использование JSTL является гораздо лучшей альтернативой Scriplets, когда дело доходит до JSP.

Было время, когда я просто использовал Scriplets для использования некоторого Java-кода в JSP, но изучение JSTL было довольно удобным. Это облегчает чтение кода, поскольку хорошо сочетается с тегами HTML.

 vikarjramun13 июл. 2016 г., 03:36
Я хотел бы выбрать два ответа прямо сейчас
 Noir Antares13 июл. 2016 г., 03:38
Это нормально, Даффимо на самом деле поставил несколько хороших альтернатив JSP. Если вы хотите сохранить чистоту HTML-кода в JSP, возьмите на вооружение CSS, jQuery и JS.
 rupinderjeet13 июл. 2016 г., 14:16
+15 очков для пользователя с репутацией «227k» не имеет большого значения. +15 баллов для пользователя с репутацией «1» очень много значит и поощряет их. По крайней мере, поддержите этот ответ, если он помог.
Решение Вопроса

Винтажная технология 1998 года, которая должна исчезнуть; неудачный ответ на ASP Microsoft.уродливыйТрудно читатьТрудно поддерживатьНе рекомендуется повторное использование и инкапсуляцияПоощряйте сложную логику на страницах

Что использовать вместо этого?

Мир пошел в сторону HTML5, CSS3, JavaScript, jQuery, Bootstrap и веб-технологий, взаимодействующих с веб-сервисами REST. Это хорошее направление.Если вам нужно придерживаться JSP, начните со стандартной библиотеки шаблонов JSP. Пусть ваши HTML-страницы будут выглядеть как HTML - разработчикам пользовательского интерфейса будет проще их поддерживать.Попробуйте более современное шаблонное решение, такое как Thymeleaf, чтобы сгенерировать HTML-код со стороны сервера.
 duffymo14 июл. 2016 г., 18:39
Грозный? Это не соответствует «Я согласен с тем, что вы говорите». Есть две части: (1) Что не так с скриптлетами, и (2) Что еще мне использовать? Вы не читали пункт № 3 во втором списке?
 Christopher Schultz14 июл. 2016 г., 16:02
Я согласен с тем, что вы говорите, но это ужасный ответ. «HTML5» не является ответом на вопрос «как создать динамически генерируемые веб-страницы на сервере?» Ответ - что-то вроде "JSTL или Thymeleaf". Может быть, в следующий раз. Кроме того, частью вопроса было «почему бы не использовать скриптлеты», на который вы не обращались.

Ваш ответ на вопрос