junior
Какая разница между c:set и jsp:useBean
Оба тега создают объекты и помещают их в заданную область видимости, но <c:set> более гибкий: он может устанавливать произвольные значения, а <jsp:useBean> только создаёт экземпляр конкретного Java-класса.
| Критерий | <c:set> |
<jsp:useBean> |
|---|---|---|
| Создание объекта | Любое значение (строка, выражение, EL) | Только экземпляр Java-класса |
| Установка значения | Может извлечь из параметров, сессии, EL | Создаёт пустой объект |
| Установка свойств | Через вложенный <c:set> |
Через <jsp:setProperty> |
| Гибкость | Высокая — работает с любыми типами | Ограниченная — только JavaBeans |
Пример
<!-- c:set — установка произвольного значения -->
<c:set var="userName" value="${param.name}" scope="request" />
<!-- jsp:useBean — создание экземпляра класса -->
<jsp:useBean id="user" class="com.example.User" scope="session" />
<jsp:setProperty name="user" property="name" value="John" />
<c:set> из JSTL является предпочтительным подходом, так как он более лаконичен и поддерживает EL-выражения.
На собеседовании: ключевое различие —
<c:set>работает со значениями,<jsp:useBean>— с классами. На практике<c:set>используется чаще.