2008-10-20 3 views
4

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

Действительно ли это на практике при создании страниц jsp? Каковы достоинства и недостатки такого подхода ?

ответ

10

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

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

Это является статическим, не ${dynamic} текст.

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

  1. Вы используете старую сервлета спецификации, и нужно их выводить динамический текст в некотором роде

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

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

3

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

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

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

+1

Просто имейте в виду, что EL не избегает специальных символов HTML. Если EL выводит данные, предоставленные пользователем, это оставляет приложение открытым для неприятных уязвимостей безопасности, таких как межсайтовый скриптинг. – laz 2008-10-20 20:32:37

 Смежные вопросы

  • Нет связанных вопросов^_^