1. Що таке JavaBeans

Наприкінці 90-х мову Java почали активно використовувати для великих серверних додатків, де кількість класів вимірюється десятками та сотнями тисяч. Тоді й виникла ідея стандартизувати вид Java-об'єктів.

Повністю мову Java чіпати не стали, щоб не позбавляти її гнучкості: зворотної сумісності та іншого. Тоді розробили низку критеріїв для Java-об'єктів нового покоління та назвали такі об'єкти Java Beans. Java названа на честь популярної марки кави, тому Java Beans дослівно перекладається, як «кавові боби».

Найважливіші критерії були такі:

  • Доступ до внутрішніх полів класу йде через метод getProperty().
  • Запис даних у поля класу йде через метод setProperty(value).
  • У класу має бути публічний конструктор без параметрів.
  • Клас повинен бути таким, що серіалізується.
  • Клас повинен мати перевизначені методи equals(), hashCode() та toString().

Такий підхід дозволив зробити програми менш зв'язаними. Завжди зрозуміло:

  • як створити об'єкт – є публічний конструктор за замовчуванням;
  • як отримати/вказати значення властивості;
  • як передати/зберегти об'єкт (використовуємо серіалізацію);
  • як порівнювати об'єкти (використовуємо equals() та hashCode());
  • як вивести інформацію про об'єкт у балку (використовуємо toString).

Нині це фактично стандарт галузі, а колись був новим віянням. Здається, що вже всі так пишуть, хоча якщо згадати HttpClient та його Builders, видно, що новий стандарт комусь не підходить.

Такі об'єкти набули поширення там, де їхнє основне смислове навантаження — це зберігання даних. Наприклад, у графічних інтерфейсах, базах даних та JSP-сторінках.

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>