6.1 Что такое JavaBeans
Уже в конце 90-х язык Java начал активно использоваться для больших серверных приложений, где количество классов измеряется десятками и сотнями тысяч. Тогда и появилась идея стандартизировать вид Java-объектов.
Весь язык Java трогать не стали, чтобы не лишать его гибкости. Ну, обратная совместимость и все такое. Тогда разработали ряд критериев для Java-объектов нового поколения и назвали такие объекты Java Beans. Java названа в честь популярной марки кофе, так что Java Beans дословно переводится, как «кофе бобы».
Самые важные критерии были такие:
- Доступ к внутренним полям класса идет через метод
getProperty()
. - Запись данных в поля класса идет через метод
setProperty(value)
. - У класса должен быть публичный конструктор без параметров.
- Класс должен быть сериализуемым.
- Класс должен иметь переопределенные методы
equals()
,hashCode()
иtoString()
.
Такой подход позволил сделать приложения менее связными. Всегда понятно:
- как создать объект – есть публичный конструктор по умолчанию;
- как получить/установить значение свойства;
- как передать/сохранить объект (используем сериализацию);
- как сравнивать объекты (используем equals() и hashCode());
- как вывести информацию об объекте в лог (используем toString).
Сейчас это фактически стандарт отрасли, а когда-то был новым веянием. Кажется, что уже все так пишут, хотя если вспомнить HttpClient и его Builders, то видно, что новый стандарт кому-то сильно жмет.
Такие объекты получили широкое распространение там, где их основная смысловая нагрузка, — это хранение данных. Например, в графических интерфейсах, базах данных и JSP-страницах.
6.2 JSP и JavaBeans
Одной из причин появления JSP было то, что работу над ним можно было отдать фронтендщикам. А что? У тебя есть человек, который разбирается в HTML, пусть он JSP и пишет. Java-программисты пишут свою часть, фронтендщики свою – все отлично.
И все было неплохо до тех пор, пока фронтендщикам не пришлось разбираться в написанном Java-коде, встроенном в JSP. Или, что еще хуже, писать такой код самим.
Java-программисты тоже от такого были не в восторге. Ну скажите на милость, какие из верстальщиков бэкенд-разработчики? Да они же кроме скриптов ничего писать не могут. Да и вся парадигма программирования утверждает, что смешивать разные языки в одном файле – дурной тон.
Тогда и появилась идея, что мол дать фронтендщикам возможность работать с Java-объектами, как с HTML-кодом. Каждый HTML-тег – это тоже некий объект со своими полями, почему бы по похожему принципу не построить работу с Java-объектами?
Сказано-сделано. Добавили специальные теги и понеслось.
Создание объекта:
<jsp:useBean id="имя" class="тип-объекта" scope="session"/>
Эта команда создавала объект с типом тип-объекта
и клала его в сессию
под именем имя
.
Объекты можно было хранить в одном из четырех хранилищ: application (глобальное), session, request и page. Также можно было установить свойство таких объектов:
<jsp:setProperty name="имя" property="propName" value="string constant"/>
Получить свойство таких объектов можно было так:
<jsp:getProperty name="имя" property="propName"/>
Пример использования тегов:
<body>
<center>
<h2>Using JavaBeans in JSP</h2>
<jsp:useBean id = "test" class = "com.example.TestBean" />
<jsp:setProperty name = "test" property = "message" value = "Hello JSP..." />
<p> Что-то делаем важное</p>
<jsp:getProperty name = "test" property = "message" />
</center>
</body>
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ