Точная разница и соотношение между JSTL и языком выражений

После прочтения Q & A Как избежать кода Java в JSP файлах? Я прекратил кодирование с помощью сценариев.

Итак, начал читать JSTL и получил сомнение в том, что я обнаружил, что JSTL имеет отношение с EL.

Но я не получаю точной связи между ними.

Здесь я получил код здесь

 <c:set var="test" value="JSTL Core Tags"></c:set>
 <c:out value="${test}"></c:out>

Я знаю, что <c:set - это тег JSP, а ${test} - язык выражения.

Мои смущения

  • Не работает ли только с JSTL? Всегда ли нужна поддержка EL? Если не всегда необходимо, как в приведенном выше случае?

  • Как просто использовать язык выражения без тегов JSTL?

Ответ 1

EL, первоначально, был разработан для использования внутри атрибутов тегов JSTL и любых других пользовательских тегов, которые вы, возможно, захотите использовать или написать сами.

Более поздняя версия спецификации JSP позволила использовать EL непосредственно внутри JSP, но это не значит, что JSTL больше не полезен. Единственное, что вы можете сделать с EL непосредственно в JSP, это написать некоторое значение для ответа, например,

${user.id}

который будет писать идентификатор пользователя bean. Если вам нужны тесты, циклы, экранирование HTML, URL-адреса, дата форматирования чисел и т.д., Вам все равно нужно использовать JSTL.