Платформа J 2 EE Сервис: Java Naming Directory (JNDI) – универсальный сервис хранения объектов в иерархической структуре имен (аналогично файловой системе) Ресурс: Data. Source - объект, позволяющий приложению получить доступ к соединению к БД
Структура J 2 EE Web-приложения
Настройка Data. Source в Apache Tomcat Настройка Data. Source: Файл /META-INF/context. xml xml version="1. 0" encoding="UTF-8" ? >
J 2 EE: Сервлеты Пример: public class My. Servlet extends javax. servlet. http. Http. Servlet { protected void service(Http. Servlet. Request request, Http. Servlet. Response response) throws Servlet. Exception, IOException {} public void destroy() { this. log("Servlet destroyed"); } public void init(Servlet. Config cfg) throws Servlet. Exception { this. log("Servlet inited"); } }
Основные классы Servlet API (javax. servlet. http. *) • Http. Servlet. Request – класс, экземпляры кот. представляют запрос от браузера § String get. Context. Path() – возвращает путь к контексту приложения § String get. Servlet. Path() – URL вызванного сервлета (JSP) § Http. Session get. Session() – Сессия пользователя § Object get. Attribute() / void set. Attribute(String name, Object value) – Хранение пользовательских атрибутов, связанных с запросом § String get. Parameter(String value) – Параметр запроса (и для GET и для POST) § void set. Character. Encoding(String enc) – Кодировка значений параметров запроса (windows-1251, UTF-8) • Http. Servlet. Response – класс, экземпляры кот. представляют ответ браузеру § void set. Content. Type(String content. Type) – MIME-тип ответа браузеру § java. io. Print. Writer get. Writer() – поток вывода для ответа браузеру § void send. Redirect(String location) – перенаправление на другую страницу • Http. Session – класс, экземпляры кот. хранят состояние сессии клиента § Object get. Attribute() / void set. Attribute(String key, Object value) – Атрибуты сессии (сохраняются между запросами одного клиента) Http. Servlet. Context – класс, экземпляры кот. представляют все web-приложение § Object get. Attribute() / void set. Attribute(String key, Object value) – Атрибуты контекста (общие для всех пользователей и запросов к web-приложению) •
J 2 EE: Java Server Pages Жизненный цикл 1. Жизненный цикл класса страницы 2. Жизненный цикл объекта страницы Элемент JSP Представление в JSP-файле Преобразуется в javaкласс как Импорт пакета <%@ page import="java. util. *" %> import java. util. *; Скриптлет: <% List items=new Array. List(); // любой java-код %> jsp_service() { … List items=new Array. List(); //любой java-код … } Вывод на страницу <%= new Date() %> out. write(new Date());
J 2 EE: Java Server Pages (JSP) <%@ page language="java" content. Type="text/html; charset=UTF-8" page. Encoding="UTF-8" %> <%@ page import="java. util. *" %> <%! // Объявляется поле в классе страницы int my_integer_field = 777; // Объявляется метод в классе страницы private String make_greeting(String name) { return "Hello, "+name + "!"; } %>
Model View Controller (MVC) Model Модель отображаемых данных 1. Получает или сохраняет модель в БД 3. Накладывает модель на шаблон представления View Шаблон представления данных 2. Определяет view и передает управление Controller Контроллер запроса пользователя
Model View Controller в Web-приложении Model Модель отображаемых данных 6. Накладывает модель на шаблон, получая HTML-страницу Модель отображаемых данных - Java beans классы -классы с get/set методами) View Шаблон. View представления данных 4. Заполняет модель данными Сервисы приложения - Java Server pages, - XSLT или - Velocity - … Контроллер запроса Контроллеры конкретных пользователя запросов 3. Получает данные из БД Front Controller 1. HTTP-запрос 5. Выбирает view и передает ему модель и управление Controller - Java классы с логикой приложения Services Шаблоны представления данных Диспетчер запросов от пользователей - Java классы приложения 2. Ищет контроллер и передает управление - Dispatcher. Servlet (всегда один)
Архитектура слоев приложения UI Layer Слой интерфейса пользователя отвечает за взаимодействие с пользователем Controllers Views Domain Model Объектная модель данных приложения X Service Layer X Слой сервисов приложения отвечает за выполнение бизнеслогики приложения Services Data Access Layer Отвечает за работу приложения с БД Data Access Objects (DAOs) Domain entities