Продолжительность
11 ч 3 мин 26 сек
Количество уроков
56 Видео
Дата добавления
09.02.2023
По окончании курса вы напишите собственное веб приложение, соблюдая уровневую архитектуру и используя шаблон проектирования MVC. Будете уверенно владеть веб сервером Apache Tomcat и хорошо разбираться в сетевом взаимодействии, как все устроено "под капотом".
Для успешного прохождения курса необходимо:
- Хорошее понимание Java Core
- Реляционные базы данных (в разработке представлены примеры на одной из самых современных и быстро развивающихся СУБД PostgreSQL)
- SQL
- Как работать с СУБД из приложений Java (JDBC)
Сам курс будет разбит неявно на 3 части:
- Теоретический материал по сетям
- Реализация сетей компьютеров через классы защиты Java
- Как работать с самым привлекательным веб-сервером Apache Tomcat
На этом мы подробно разберемся:
- Как устроено сетевое взаимодействие компьютеров
- Что такое модель OSI и что представляет каждый из 7 уровней,
- Что такое DNS и как он устроен
- Протоколы уровня передачи TCP и UDP, которые являются основными при работе с сетью
- Что такое веб-сервер, реализуем его с помощью пакета java net, а затем изучим самый распространенный веб-сервер на Java - Apache Tomcat
- Подробно разберем основной протокол приложений - HTTP
- Затронем темы различных форматов данных: XML, HTML, JSON
- Капнем в историю возникновения протокола HTTP и в чем отличие версии HTTP: 1.1 и 2
- Затронем вскользь тему неблокирующего ввода-вывода (пакет java nio)
- Япония, что из себя представляет JSP, которые являются базовыми в том же регионе, как устроены современные механизмы шаблонов.
вместо
date date not null,
надо
birthday date not null,
если чё, вот, команда: ALTER TABLE users RENAME COLUMN date TO birthday;
drop table users;
create table users (
id serial primary key,
name varchar(124) not null ,
date date not null,
email varchar(124) not null unique,
image varchar(124) not null,
password varchar(32) not null,
role varchar(32) not null,
gender varchar(16) not null
);
docker-compose.yml
-------------------------------BEGIN------------------------------
version: '3.9'
services:
db:
image: 'postgres:15.2-alpine'
restart: 'always'
environment:
POSTGRES_PASSWORD: 'root'
ports:
- "5432:5432"
-------------------------------END------------------------------
> docker-compose up -d
> docker ps -a
> docker exec -it psql -U postgres
CREATE TABLE airport
(
code CHAR(3) PRIMARY KEY ,
country VARCHAR(256) NOT NULL ,
city VARCHAR(128) NOT NULL
);
CREATE TABLE aircraft
(
id SERIAL PRIMARY KEY ,
model VARCHAR(128) NOT NULL
);
CREATE TABLE seat
(
aircraft_id INT REFERENCES aircraft (id),
seat_no VARCHAR(4) NOT NULL ,
PRIMARY KEY (aircraft_id, seat_no)
);
CREATE TABLE flight
(
id BIGSERIAL PRIMARY KEY ,
flight_no VARCHAR(16) NOT NULL ,
departure_date TIMESTAMP NOT NULL ,
departure_airport_code CHAR(3) REFERENCES airport(code) NOT NULL ,
arrival_date TIMESTAMP NOT NULL ,
arrival_airport_code CHAR(3) REFERENCES airport(code) NOT NULL ,
aircraft_id INT REFERENCES aircraft (id) NOT NULL ,
status VARCHAR(32) NOT NULL
);
CREATE TABLE ticket
(
id BIGSERIAL PRIMARY KEY ,
passenger_no VARCHAR(32) NOT NULL ,
passenger_name VARCHAR(128) NOT NULL ,
flight_id BIGINT REFERENCES flight (id) NOT NULL ,
seat_no VARCHAR(4) NOT NULL,
cost NUMERIC(8, 2) NOT NULL
-- UNIQUE (flight_id, seat_no)
);
CREATE UNIQUE INDEX unique_flight_id_seat_no_idx ON ticket (flight_id, seat_no);
-- flight_id + seat_no
insert into airport (code, country, city)
values ('MNK', 'Беларусь', 'Минск'),
('LDN', 'Англия', 'Лондон'),
('MSK', 'Россия', 'Москва'),
('BSL', 'Испания', 'Барселона');
insert into aircraft (model)
values ('Боинг 777-300'),
('Боинг 737-300'),
('Аэробус A320-200'),
('Суперджет-100');
insert into seat (aircraft_id, seat_no)
select id, s.column1
from aircraft
cross join (values ('A1'), ('A2'), ('B1'), ('B2'), ('C1'), ('C2'), ('D1'), ('D2') order by 1) s;
insert into flight (flight_no, departure_date, departure_airport_code, arrival_date, arrival_airport_code, aircraft_id,
status)
values
('MN3002', '2020-06-14T14:30', 'MNK', '2020-06-14T18:07', 'LDN', 1, 'ARRIVED'),
('MN3002', '2020-06-16T09:15', 'LDN', '2020-06-16T13:00', 'MNK', 1, 'ARRIVED'),
('BC2801', '2020-07-28T23:25', 'MNK', '2020-07-29T02:43', 'LDN', 2, 'ARRIVED'),
('BC2801', '2020-08-01T11:00', 'LDN', '2020-08-01T14:15', 'MNK', 2, 'DEPARTED'),
('TR3103', '2020-05-03T13:10', 'MSK', '2020-05-03T18:38', 'BSL', 3, 'ARRIVED'),
('TR3103', '2020-05-10T07:15', 'BSL', '2020-05-10T012:44', 'MSK', 3, 'CANCELLED'),
('CV9827', '2020-09-09T18:00', 'MNK', '2020-09-09T19:15', 'MSK', 4, 'SCHEDULED'),
('CV9827', '2020-09-19T08:55', 'MSK', '2020-09-19T10:05', 'MNK', 4, 'SCHEDULED'),
('QS8712', '2020-12-18T03:35', 'MNK', '2020-12-18T06:46', 'LDN', 2, 'ARRIVED');
insert into ticket (passenger_no, passenger_name, flight_id, seat_no, cost)
values ('112233', 'Иван Иванов', 1, 'A1', 200),
('23234A', 'Петр Петров', 1, 'B1', 180),
('SS988D', 'Светлана Светикова', 1, 'B2', 175),
('QYASDE', 'Андрей Андреев', 1, 'C2', 175),
('POQ234', 'Иван Кожемякин', 1, 'D1', 160),
('898123', 'Олег Рубцов', 1, 'A2', 198),
('555321', 'Екатерина Петренко', 2, 'A1', 250),
('QO23OO', 'Иван Розмаринов', 2, 'B2', 225),
('9883IO', 'Иван Кожемякин', 2, 'C1', 217),
('123UI2', 'Андрей Буйнов', 2, 'C2', 227),
('SS988D', 'Светлана Светикова', 2, 'D2', 277),
('EE2344', 'Дмитрий Трусцов', 3, 'А1', 300),
('AS23PP', 'Максим Комсомольцев', 3, 'А2', 285),
('322349', 'Эдуард Щеглов', 3, 'B1', 99),
('DL123S', 'Игорь Беркутов', 3, 'B2', 199),
('MVM111', 'Алексей Щербин', 3, 'C1', 299),
('ZZZ111', 'Денис Колобков', 3, 'C2', 230),
('234444', 'Иван Старовойтов', 3, 'D1', 180),
('LLLL12', 'Людмила Старовойтова', 3, 'D2', 224),
('RT34TR', 'Степан Дор', 4, 'A1', 129),
('999666', 'Анастасия Шепелева', 4, 'A2', 152),
('234444', 'Иван Старовойтов', 4, 'B1', 140),
('LLLL12', 'Людмила Старовойтова', 4, 'B2', 140),
('LLLL12', 'Роман Дронов', 4, 'D2', 109),
('112233', 'Иван Иванов', 5, 'С2', 170),
('NMNBV2', 'Лариса Тельникова', 5, 'С1', 185),
('DSA586', 'Лариса Привольная', 5, 'A1', 204),
('DSA583', 'Артур Мирный', 5, 'B1', 189),
('DSA581', 'Евгений Кудрявцев', 6, 'A1', 204),
('EE2344', 'Дмитрий Трусцов', 6, 'A2', 214),
('AS23PP', 'Максим Комсомольцев', 6, 'B2', 176),
('112233', 'Иван Иванов', 6, 'B1', 135),
('309623', 'Татьяна Крот', 6, 'С1', 155),
('319623', 'Юрий Дувинков', 6, 'D1', 125),
('322349', 'Эдуард Щеглов', 7, 'A1', 69),
('DIOPSL', 'Евгений Безфамильная', 7, 'A2', 58),
('DIOPS1', 'Константин Швец', 7, 'D1', 65),
('DIOPS2', 'Юлия Швец', 7, 'D2', 65),
('1IOPS2', 'Ник Говриленко', 7, 'C2', 73),
('999666', 'Анастасия Шепелева', 7, 'B1', 66),
('23234A', 'Петр Петров', 7, 'C1', 80),
('QYASDE', 'Андрей Андреев', 8, 'A1', 100),
('1QAZD2', 'Лариса Потемнкина', 8, 'A2', 89),
('5QAZD2', 'Карл Хмелев', 8, 'B2', 79),
('2QAZD2', 'Жанна Хмелева', 8, 'С2', 77),
('BMXND1', 'Светлана Хмурая', 8, 'В2', 94),
('BMXND2', 'Кирилл Сарычев', 8, 'D1', 81),
('SS988D', 'Светлана Светикова', 9, 'A2', 222),
('SS978D', 'Андрей Желудь', 9, 'A1', 198),
('SS968D', 'Дмитрий Воснецов', 9, 'B1', 243),
('SS958D', 'Максим Гребцов', 9, 'С1', 251),
('112233', 'Иван Иванов', 9, 'С2', 135),
('NMNBV2', 'Лариса Тельникова', 9, 'B2', 217),
('23234A', 'Петр Петров', 9, 'D1', 189),
('123951', 'Полина Зверева', 9, 'D2', 234);
id serial primary key,
name varchar(124) not null ,
date date not null,
email varchar(124) not null unique,
password varchar(32) not null,
role varchar(32) not null,
gender varchar(16) not null
);