Відмінності Java EE від Java SE
- Java EE - для промислової розробки.
- Додаткові класи.
- Підтримка промислових стандартів.
- Запуск на сервері додатків.
Багаторівневі додатки
- Клієнт (браузер, окремі додатки)
- Сервер (кешування, веб-сервери, балансувальники навантаження) - зв'язок клієнта і даних
- СУБД (Усі дані з БД)
Архітектура J2EE
До складу J2EE входять
- EJB - Java Beans рівня підприємств
- містить бізнес-логіку
- підтримка персистності
- транзакцій і захисту
- Сервлети, JSP, JSF - веб-сторінки обробки запитів
- JMS - обмін повідомленнями з іншими системами
- JNDI - доступ до служаб каталогів імен
- JAXP - робота з XML-документами
- Java Mail - робота з поштою
HTTP
- Протокол - набір правил і процедур для здійснення зв'язку між
комп'ютерами. Приклад етика спілкування людей.
- HyperText Transfer Protocol - протокол передачі гіпертексту.
- На основі протоколу TCP/IP - мережа для передачі даних.
- Технологія "клієнт-сервер".
- Взаємодія з веб-додатком - найчастіше через HTTP
URL, посилання
- Uniform Resourse Locator - вказівка на місця розташування ресурсів у мережі
- Запит сторінки по HTTP відбувається за конкретним URL
- У будь-якого сайту або веб сторінки в мережі існує свій URL
- Посилання - адреса ресурсу для переходу. Приклад http://google.com
Специфікація JCP, JSR, W3C
- JSR (Java Specification Request) Запит на специфікацію Java - документи (специфікації) з
доповненнями до платформи Java.
- JCP (Java Community Process) - організація або об'єднання групи людей щодо узгодження та
затвердження всіх JSR.
- W3C (World Wide Web Consortium) - організація з розробки офіційних специфікацій для
всесвітньої мережі Інтернет: HTTP, HTML, CSS, XML.
Що таке HTML
- Мова для створення веб-сторінок - HyperText Markup Language - мова розмітки гіпертексту.
- Усі браузери підтримують HTML.
- Браузер перетворює код HTML на вебсторінку.
- Має різні версії.
- В основі html лежать теги.
- Не дозволяє вставляти Java код, щоб зробити сторінку інтерактивною.
- Кодування документів.
Основні теги HTML
- HTML - позначення меж документа.
- HEAD - для зберігання службових даних (кодування, назва тощо).
- TITLE - заголовок документа.
- BODY - тіло документа, основна частина (текст, зображення тощо).
CSS
- Cascading Style Sheets - каскадні таблиці стилів.
- Містить опис зовнішнього вигляду документа.
- Розділення змісту сторінки від відображення.
- Відображення різних стилів залежно від браузера та пристрою клієнта.
- Підтримка анімації, заокруглень, різних "прикрас".
- Можливість застосування одного стилю до різних документів.
- До одного документа можна підключати безліч стилів.
- Має різні версії.
Способи підключення CSS
- Усередині елемента HTML (небажано використовувати)
- Усередині елемента <head> (якщо стилів небагато)
- У зовнішньому файлі CSS (найкращий варіант)
Типи серверів
- Сервер додатка з частковою підтримкою J2EE (веб контейнер), найчастіше - підтримка
специфікацій, пов'язаних із веб програмуванням (Сервлети, JSP, JSF):
- Apache Tomcat
- Jetty
- Сервер із повною підтримкою J2EE:
- GlassFish (як веб-контейнер доопрацьований Tomcat)
- JBoss (як веб-контейнер - Tomcat)
- WebSphere Application Server
- WebLogic Server
Сервлети
- Сервлет - клас Java для отримання запиту (request) і формування відповіді клієнту (response).
- Одне з перших рішень Java для створення веб-додатків.
- На основі технології сервлета будуються майже всі наступні Java технології для веб.
Переваги сервлетів
- Усю логіку роботи із сервером (приймання запиту та надсилання результату) бере на себе Java
- Програмісту потрібно лише реалізувати обробку запиту
- Кросплатформеність (як і будь-який Java додаток)
Недоліки сервлетів
- Важкий супровід.
- При великих проєктах - плутанина в коді.
- Обмежені можливості, незручно створювати дизайн.
Життєвий цикл сервлета
- Надсилання запиту клієнтам (за URL).
- Визначення сервлета відповідального за обробку цього запиту (через файл налаштувань web.xml).
- Створення екземпляра потрібного сервлета.
- Обробка одного або декількох запитів, передача потрібним методам.
- Знищення екземпляра сервлета.
- Сервлет ініціалізується 1 раз і компілюється в Java файл - кожне наступне звернення відбувається до вже скомпільованого файлу.
- Якщо сервлет зміниться - файл компілюється заново.
Методи HTTP запиту
- GET (метод сервлета doGet) - відправлення та отримання даних від сервера, дані передаються в URL
рядку. Надсилання невеликих текстових даних як параметрів, обмеження на довжину рядка
URL, немає безпеки.
- POST (метод сервлета doPost) - надсилання та отримання даних із сервера, які передаються
всередині body. Надсилання даних будь-якого обсягу, немає обмежень на довжину
Багатопоточність у сервлетах
- За замовчуванням веб контейнер створює для кожного запиту окремий потік (пул потоків, які
виконуються паралельно).
- 1 запит - 1 потік.
- Кожен створений потік звертається до одного і того ж екземпляра сервлета - в цьому і є
небезпека.
- Статичні змінні та змінні класу - непотокобезпечні.
- Потокобезпечні тільки змінні всередині методів doGet і doPost