Web приложение - My Resume

Категория: Java Enterprise Edition
- 22 урока
- Длительность: 22:42:10
- Исходный код
- Обзор результата
- UI макеты
- 6971 просмотр
Описание курса
В рамках данного курса будет написано Web приложение My Resume с использованием Java технологий: Spring Core, String MVC, Spring Data JPA, Hibernate, Spring Security, Sitemesh, Spring Data ElasticSearch, JSP, JSTL, Hibernate-Validators, Facebook API, Spring Data Mongo.
Пользовательский интерфейс построен с использованием HTML5, CSS3, Bootstrap, JQuery.
Для долговременного хранения данных будут использованы PostgresSQL и MongoDb. Таким образом проект будет изначально написан для работы с PostgresSQL, а затем портирован на MongoDb.
Курс состоит из 22 уроков. Каждый урок состоит из теоретического обзора технологии, примера ее использования в данном проекте и домашнего задания. В начале следующего урока поясняется каким образом нужно было выполнить домашнее задание и рассматривается новая тема.
На последних уроках выполняется полный обзор разработанного проекта и комментирование обязанностей каждого компонента в проекте. Таким образом учащийся имеет возможность рассмотреть эталонный код проекта и получить ответы на возможные вопросы, которые возникли у него при разработки приложения. Таким образом данный курс предоставляет Вам возможность самостоятельно разработать проект и сравнить его с эталонной реализацией в конце курса, чтобы не ограничивать Вас в реализации проекта эталонной реализацией в конце каждого урока. Такой подход позволяет максимально эффективно изучить выбранные технологии, но требует от учащегося хороших базовых знаний и опыта работы в JEE.
Работая над проектом Вы освоите не только разработку приложений на Java, но и как правильно составлять резюме разработчика: Одним выстрелом - двух зайцев!
Для получения дополнительной информации по теме данного курса, рекомендуем следующие источники информации:
- PostgreSQL документация
- Spring документация
- JPA спецификация
- Spring Data JPA документация
- Spring Data Mongo DB документация
- Spring Data ElasticSearch документация
- Spring Security документация
- Крис Шефер, Кларенс Хо, Роб Харроп, Spring 4 для профессионалов (Pro Spring) - М.:Вильямс, 2016 - 752 с. - ISBN 978-5-8459-1992-2
- Роберт Мартин, Чистый код: создание, анализ и рефакторинг - СПб.:Питер, 2010. - 464 с. - ISBN 978-5-49807-381-1
- Сергей Моренец, Разработка Java приложений - Книга 1
- Сергей Моренец, Разработка Java приложений - Книга 2
Курс ориентирован на Java Junior разработчиков, которые хотят прокачать свои skills до Java Junior+ или Java Middle.
В рамках данного курса Вы научитесь
- Проектировать и создавать реляционные базы данных;
- Использовать шаблон MVC для создания web системы любой сложности;
- Разбивать вашу будущую системы на отдельные модули с четким разграничением ответственности для каждого модуля и управлять зависимостями с помощью Spring IoC контейнера;
- Использовать возможности Spring MVC и Spring Data для быстрой разработки web приложений;
- Использовать Spring Data для построения абстрактных репозиториев с возможностью быстро изменить тип хранилища с наименьшими затратами;
- Использовать декларативное управление транзакциями и возможности аспектно-ориентированного программирования;
- Контролировать доступ к отдельным модулям Вашего приложения с помощью Spring Security;
- Писать чистый и понятный другому программисту код;
- Интегрировать социальные сервисы в Ваш проект;
- Защищать свое web приложение от общеизвестных атак и уязвимостей;
- Писать производительные приложения и быстро находить узкие места в вашем приложении;
- Загружать Ваш проект на хостинг с последующим предоставлением доступа Вашим клиентам;
- Использовать основные правила масштабирования Вашего приложения при необходимости увеличить число клиентов.
Для успешного прохождения курса необходимо
- Знание Java core: (Classes, IO, Collections, Exceptions, JDBC) (Для получения этих знаний рекомендуем курс Основы Java SE - HTTP сервер);
- Базовые знания SQL (select, insert, update, delete, основы транзакций) (Для получения этих знаний рекомендуем курс Основы SQL);
- Знание Java EE: Servlets, JSP, Filters, Listeners, JSTL, HTTP протокол, а также опыт написания web приложений на Java, используя MVC шаблон (Для получения этих знаний рекомендуем курс Web приложение - IShop);
- Знание HTML, CSS, JavaScript, Bootstrap, Основ верстки (Для получения этих знаний рекомендуем курс Макет интернет магазина - IShop);
- Понимание принципов декларативного управления транзакциями, внедрения зависимостей и объектно-реляционного отображения (Для получения этих знаний рекомендуем курс Рефакторинг Web приложения - IShop).
План курса
-
1Настройка окружения и обзор архитектуры будущего приложения
Длительность урока: 57:55
- Настройка окружения:
- FireFox - HTML браузер (https://www.mozilla.org/en-US/firefox/new/);
- Firebug - плагин для FireFox, который позволяет просматривать структуру страницы и параметров HTTP запросов (http://getfirebug.com/);
- JDK 1.7 и настройка JAVA_HOME (http://www.oracle.com/technetwork/java/javase/downloads/index.html);
- Tomcat 8.0 и запуск в debug режиме (https://tomcat.apache.org/);
- Postgresql 9.5.0 - сервер базы данных (http://www.postgresql.org/download/);
- PgAdmin - админпанель для работы с Postgresql;
- SQL Manager Postgres - SQL клиент для работы с сервером Postgresql (http://www.sqlmanager.net/en/products/postgresql/manager);
- Eclipse Mars - IDE для разработки на Java (http://www.eclipse.org/downloads);
- Git for windows - инструмент системы контроля версий Git for windows (https://git-scm.com/download/win).
- Постановка задачи - разработка web приложения по составлению резюме
- Обзор архитектуры - использование шаблона MVC для проекта и определение правил взаимодействия между компонентами
- Создание Maven проекта в Eclipse для данной системы, определение структуры проекта и загрузка кода на github
- Напоминание возможностей Servlet, Listener, Filter, JSP компонентов для данного проекта
- Запуск Tomcat в отладочном режиме и отладка web приложений
- Основные правила передачи управления между Servlet, Filter и JSP при использование MVC шаблона
- Настройка окружения:
-
2Основные возможности реляционных баз данных. SQL.
Длительность урока: 1:14:00
- Обзор все UI макетов, которые необходимы для разработки данного проекта
- Обзор основных объектов реляционной базы данных: таблицы, индексы, проверки, представления, материализованное представления, последовательности, функции, процедуры, триггеры, пользовательские типы данных, пакеты и схемы, пользователи и привилегии
- DDL, DML, SELECT, Transactions
- Пример проектирование базы данных для отдельного тестового проекта
-
3Создание HTML шаблона с помощью Bootstrap
Длительность урока: 1:02:06
- Проектирование базы данных для проекта My Resume, обзор основных таблиц и связей между ними (Выполнение домашнего задания прошлого урока)
- Создание генератора тестовых данных для проекта (Выполнение домашнего задания прошлого урока)
- Скачивание и настройка Bootstrap, JQuery и FontAwesome для проекта
- Обзор Bootstrap Grid System
- Создание странички отображение профиля с помощью bootstrap
-
4Шаблонизация и декомпозиция уровня представления
Длительность урока: 36:57
- Проблема дублирования и сложности кода представления и ее решение с помощью шаблонизации и декомпозиции
- Обзор возможностей SiteMesh3
- Пример декомпозиции страницы профиля пользователя с помощью тегов и jsp include
-
5Основы Spring Core: Spring IoC container
Длительность урока: 57:02
- Декомпозиция странички профиля для проекта (Выполнение домашнего задания прошлого урока)
- Архитектура Spring IoC
- Spring Configurations: XML, Annotation, Java
- Bean scopes
- Lifecycle callbacks
- Aware interfaces
- FactoryBean
- Spring Annotations
- BeanFactory vs ApplicationContext
- Spring Resources
- Пример конфигурации Spring для проекта
-
6Основы Spring MVC для веб приложения
Длительность урока: 1:21:53
- Основы Spring MVC
- DispatcherServlet и его конфигурирование в web.xml или WebApplicationInitializer
- Конфигурация основных компонентов Spring MVC
- @Controller и @RequestMapping
- View resolvers
- Handling exceptions
- Interceptors
- Spring MVC Resources
- Пример использования Spring MVC для проекта
- Демонстрация работы Spring MVC в проекте
-
7ORM, JPA, SpringData
Длительность урока: 1:53:02
- Основы Java ORM
- Стандарт JPA
- Требования к Entity
- Persistent Fields vs Persistent Properties
- Простые и составные ключи
- Обзор основных аннотаций JPA
- Inheritance Mapping Strategies
- Отношения в Entities и загрузка дочерних объектов
- JPA архитектура
- Основные методы EntityManager
- Entity Lifecycle Management
- JPQL & Query интерфейс
- Основы Spring Data
- Примеры создания динамических репозиториев с помощью Spring Data JPA
- Spring Data Magic and Supported keywords inside method names
- Пример использования Spring Data + JPA Hibernate в проекте
- Демонстрация работы Spring Data + JPA Hibernate в проекте
- Решение проблемы LazyInitializationException
-
8Основы обработки HTML форм с помощью Spring
Длительность урока: 46:45
- Создание всех классов сущностей для проекта(Выполнение домашнего задания прошлого урока)
- Основы обработки HTML форм. Использование @ModelAttribute
- Обработка multipart форм с помощью Spring MVC
- Отображение html формы на JSP
- Пример обработки формы с коллекцией Skill для проекта
- Демонстрация работы обработки формы
-
9Валидация данных в Java
Длительность урока: 23:57
- Основы валидации данных. вводимых пользователем
- javax.validation.constraints, org.hibernate.validator.constraints и пользовательские аннотации для валидации
- Добавление аннотаций в формы
- Активирование валидации для проекта и добавление message.properties
- Пример создания пользовательской аннотации и обработчика данной аннотации
- Изменение методов контроллеров для обработки результатов валидации
- Использование alert компонента для отображения ошибок на пользовательском интерфейсе
- Правила поиска ключа для интернационализации в Spring MVC
- Демонстрация работы валидации для проекта
-
10Сервисная архитектура приложения на базе Spring IoC
Длительность урока: 40:47
- Повышение модульности кода, выделение алгоритма работы системы в отдельные бизнес сервисы
- Группировка бизнес функций в бизнес сервисы
- Декларативное управление транзакциями с помощью @Transactional
- Настройка поддержки декларативного управления транзакциями в Spring Config
- Создание класса сервиса, выполняемого по расписанию
- Объяснение алгоритма работы динамических прокси, поддерживающих декларативное управление транзакциями
-
11Основы ajax загрузки на примере Load more...
Длительность урока: 22:31
- Основы AJAX
- Реализация контроллера для обработки AJAX запросов
- Реализация отдельного шаблона SiteMesh для AJAX ответов
- Изменения в ErrorHandler для AJAX ошибок
- Пример использования Spring Data Web Support для реализации постраничного отображения данных
- Использование JQuery ajax функции для выполнения AJAX запросов
- Формирование и считывание дополнительных параметров для js функций с помощью data-* атрибутов
- Демонстрация работы AJAX запросов
- Демонстрация обработки ошибок при AJAX запросах
-
12Полнотекстовый поиск Elastic Search
Длительность урока: 43:45
- Основы полнотекстового поиска для web приложения
- Возможности ElasticSearch
- Использование Spring Data для взаимодействия с ElasticSearch
- Spring Config для конфигурирования ElasticSearch
- Моделирования данных для ElasticSearch
- Создание динамических репозиториев для взаимодействия с ElasticSearch
- Использование виртуальной машины Tomcat для запуска ElasticSearch сервиса
- Пример использования ElasticSearch в web проекте
- Правила моделирования объектов сущностей для My Resume проекта
- Начальное индексирование всех данных из базы данных
- Загрузка Lazy коллекций при индексировании
- Использование TransactionSynchronizationManager для выполнения кода после успешного commit
- Демонстрация работы поискового движка
-
13Защита приложения с помощью Spring Security
Длительность урока: 1:03:54
- Архитектура Spring Security. Spring Security фильтры
- Конфигурация Spring Security в проекте
- Создание модели хранения текущего пользователя
- Реализация UserDetailsService
- SecurityUtil для программного доступа к Spring Security
- Контроллер и JSP для логина в систему
- Основы Method Security
- Основы Remember-Me Authentication
- Основы Session Management
- Expression-Based Access Control
- Spring Security tags
- Spring Data Integration
- Демонстрация работы SpringSecurity
-
14Отправка Email из приложения
Длительность урока: 23:36
- Архитектура Email системы. Протокол SMTP
- Отправка email из java приложений
- Основы email шаблонизации
- Использование Spring xml конфигурационного файла для считывания настроек email шаблонов
- Асинхронная отправка email писем с web приложения с помощью ExecuterService
- Spring Config для Email
- Пример использования Spring FactoryBean для создания ExecuterService бина
- Использование Freemaker как обработчика email шаблонов
-
15Интеграция с социальными сетями. Facebook API
Длительность урока: 19:15
- Основы интеграция web приложения с социальными сервисами
- Диаграмма взаимодействия между web приложением и социальным сервисом
- Создание и конфигурирования Facebook приложения
- Использование Restfb библиотеки
- Создание Facebook контроллера
- Создание SocialService и его реализация для Facebook
- Создание UI для интеграции с Facebook
- Демонстрация работы Login via Facebook функции
-
16Безопасность web приложений
Длительность урока: 56:29
- XSS атаки
- SQL инъекции
- Переполнение логов
- Закрытие ресурсов
- DDOS атаки
- Контроль доступа к ресурсам
- Валидация данных
- Межсайтовая подделка запроса
- Использование компонентов с известными уязвимостями
- Нестандартные порты и пароли
- Принцип скрытия информации об ошибках
- Хорошие пароли
- Captcha
-
17Производительность web Приложений
Длительность урока: 59:23
- Основные векторы улучшений производительности
- Правильный скелет HTML странички
- Сжатие и объединение JS & CSS
- Использование архивирования текстовых данных при передачи
- Обработка картинок
- Кэширование картинок, CSS, JS
- DB Pool
- Thread Pool
- JVM options
- SQL производительность
- Логирование SQL запросов Hibernate
- Утилита Explain
- Денормализация таблиц
- Кэширование на сервере
- Производительное логирование
-
18Хостинг приложений. Загрузка приложения на AWS EC2
Длительность урока: 1:10:40
- Основные хостинги предоставляющие Java хостинг
- Создание AWS EC2 instance
- Настройка AWS фаервола
- Установка программных компонентов на Ubuntu Server
- Загрузка дампа базы данных на AWS EC2
- Сборка. конфигурирование и загрузка ROOT.war на AWS EC2
- Демонстрация работы загруженного приложения на удаленном сервере
-
19Масштабирование приложений. NoSQL. MongoDb
Длительность урока: 1:03:43
- Вертикальное масштабирование
- Простая архитектура web приложения без горизонтального масштабирования
- Масштабирование JEE server with application
- Масштабирование сервера кэширования данных
- Использование очередей задач для масштабирования бизнес логики
- Балансировка DNS
- Масштабирование файловых серверов
- Репликация баз данных
- Вертикальный шардинг баз данных
- Горизонтальный шардинг баз данных
- NoSQL решения
- Теорема CAP
- Горизонтальное масштабирование MongoDb
-
20Обзор архитектуры приложения на примере реализации JPA
Длительность урока: 3:06:40
- Полный обзор первой версии проекта My Resume с детальным пояснением особенно значимых компонентов и модулей
- Векторы оптимизации логики при использовании реляционной базы данных
- Проверка приложения на устойчивость к известным уязвимостям и атакам
- Проверка приложения на производительность
- Пример логирования всех запросов генерируемы Hibernate, анализ плана выполнения запросов и кэширования объектов на стороне сервера
- Сравнение схемы работы приложения, спроектированной в начале курса с результирующим кодом, который реализует данную схему
-
21Обзор архитектуры приложения на примере реализации MongoDB
Длительность урока: 1:02:29
- Обзор базовых операций при работе с MongoDB
- Создание тестовой базы данных
- Изменения в проекте, необходимые для миграции с Postgres на MonoDb
- Обзор преимуществ Spring Data абстракции при миграции на новый источник данных
-
22Чистый код в проекте My Resume
Длительность урока: 1:35:21
- Важность чистого кода
- Составные чистого кода на примере использования в проекте My Resume
- Дополнительные и развернутые источники чистого кода в Java