Действительно ли лучше использовать тег jstl out?

Я помню, как работал над проектом с группой разработчиков, и им всегда хотелось статичных html должен быть внутри тега out (<c:out value = "words" />). Я не помню почему это было так.

Это действительно лучшая практика при создании страниц jsp? Какие преимущества / недостатки такого подхода?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
4
0
2 421
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Если вы просто печатаете обычный текст, лучше сделать это в HTML. Преимущество тега c:out заключается в том, что вы можете оценивать выражения внутри тега.

<c:out value = "Hello ${user.firstName} ${user.lastName}"/>

Это преимущество исчезает в Servlet Spec 2.3+, когда контейнер может напрямую предоставлять поддержку EL. Таким образом, c: out не следует использовать только для вывода EL в контейнере Servlet Spec 2.3+, когда Hello $ {user.firstName} $ {user.lastName} более читабельно без c: out вокруг него.

MetroidFan2002 20.10.2008 23:55

Просто имейте в виду, что EL не экранирует специальные символы HTML. Если EL выводит данные, предоставленные пользователем, это оставляет приложение открытым для серьезных уязвимостей безопасности, таких как межсайтовый скриптинг.

laz 21.10.2008 00:32
Ответ принят как подходящий

Ужасная идея для статического текста. Тогда у вас не будет препятствий относительно того, что статично, а что динамически генерируется.

Кроме того, в Servlet Spec 2.3+ вы можете смешивать динамический текст со статическим текстом как:

Это статический текст, а не текст ${dynamic}.

По моему опыту, единственные причины использовать теги c:out:

  1. Вы используете более старую спецификацию сервлетов и нуждаетесь в них для вывода ДИНАМИЧЕСКОГО текста каким-либо образом.

  2. Вы хотите избежать вывода HTML, чтобы избежать использования <> и т. д., Заменив амперсанды их управляющими кодами и т. д.

В противном случае использование статического текста сбивает с толку программиста или сопровождающего ... куда я положил этот EL? Это было в теге c:out ... но так же было пятьдесят других строк статического текста!

Я думаю, что сегодня основной причиной использования c: out является экранирование.

Peter Štibraný 06.05.2009 00:38

Пока вы не используете старую спецификацию сервлета (что некоторые люди все еще вынуждены делать, к сожалению, к счастью, я не один из этих бедняг), я согласен с вами - экранирование XML - это прекрасно.

MetroidFan2002 06.05.2009 06:10

Другие вопросы по теме