ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java

ПишСм Java Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° соврСмСнном стСкС. Π‘ нуля Π΄ΠΎ микросСрвисной Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹. Π§Π°ΡΡ‚ΡŒ 1

ΠΠ²Ρ‚ΠΎΡ€ΠΈΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ

ПишСм Java Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° соврСмСнном стСкС. Π‘ нуля Π΄ΠΎ микросСрвисной Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹. Π§Π°ΡΡ‚ΡŒ 1

На сСгодняшний дСнь Π² ΠΌΠΈΡ€Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° Java сущСствуСт ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½ΠΎΠ²ΠΈΡ‡ΠΊΡƒ ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΏΡƒΡ‚Π°Ρ‚ΡŒΡΡ. Π’ этом руководствС я ΠΏΠΎΡΡ‚Π°Ρ€Π°ΡŽΡΡŒ простым языком ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ всС шаги, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ ΠΏΡƒΡ‚ΠΈ ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. ΠΠ°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ Π±ΡƒΠ΄Π΅ΠΌ с самого простого ΠΈ постСпСнно Π½Π°Ρ€Π°Ρ‰ΠΈΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

Spring Boot

Spring Boot β€” ΠΎΠ΄ΠΈΠ½ ΠΈΠ· самых популярных ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² для построСния Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Java. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π² срСдС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Gradle Project. Для облСгчСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ сайтом https://start.spring.io, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ build.gradle.

Для Π½Π°Ρ‡Π°Π»Π° Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ зависимости:

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ build.gradle Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅Π΅:

Π’ΠΎΡ‚ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈ Π² самой IntelliJ Idea: File β†’ New β†’ Project β†’ Spring Initializr.

ОпишСм самый простой ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚:

4–5 дСкабря, Онлайн, Π‘Π΅cΠΏΠ»Π°Ρ‚Π½ΠΎ

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ пСрСйдя ΠΏΠΎ адрСсу http://localhost:8080/hello?name=World ΠΈΠ»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ консольной ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ curl:

Наш сСрвис запускаСтся ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΏΠΎΡ€Π° ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΡˆΠ°Π³Ρƒ.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ трСбуСтся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΈΠΉ сСрвис для ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° ΠΏΠΎ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠ΅ ΠΊΠ½ΠΈΠ³. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ rest-сСрвис, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ описаниС ΠΊΠ½ΠΈΠ³ΠΈ. Π₯Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄Π΅ΠΌ Π² Π‘Π” Postgres.

Docker

Для хранСния Π΄Π°Π½Π½Ρ‹Ρ… Π½Π°ΠΌ потрСбуСтся Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€ΠΎΡ‰Π΅ всСго Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ инстанс Π‘Π” с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Docker. Docker позволяСт Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ срСдС выполнСния β€” ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ всСми ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ систСмами.

Π’Ρ‹ΠΊΠ°Ρ‡ΠΈΠ²Π°Π΅ΠΌ ΠΎΠ±Ρ€Π°Π· Π‘Π” ΠΈ запускаСм ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€:

Lombok

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ data-класс Β«ΠΊΠ½ΠΈΠ³Π°Β». Он Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ нСсколько ΠΏΠΎΠ»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ getters, конструктор ΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ нСизмСняСмой (immutable). Π‘Ρ€Π΅Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ позволяСт автоматичСски Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ конструктор ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ доступа ΠΊ полям, Π½ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ количСство ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Lombok.

ПослС сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ выглядит класс послС компиляции. Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ стандартной ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΎΠΉ, входящСй Π² состав JDK:

Lombok ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° классов ΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² соврСмСнной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅.

Spring Data JPA

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π‘Π” Π½Π°ΠΌ потрСбуСтся Spring Data JPA, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΡƒΠΆΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π² зависимости ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π”Π°Π»ΡŒΡˆΠ΅ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ классы Entity ΠΈ Repository. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ соотвСтствуСт Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π² Π‘Π”, Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ сохранСния записСй Π² эту Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ.

Класс Repository Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ совсСм просто β€” достаточно ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ интСрфСйс ΠΈ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ CrudRepository:

Никакой Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π΅ трСбуСтся. Spring всё сдСлаСт Π·Π° нас. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΌΡ‹ сразу ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ CRUD β€” create, read, update, delete. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Ρ€Π°Ρ‰ΠΈΠ²Π°Ρ‚ΡŒ β€” Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅ ΠΌΡ‹ это ΡƒΠ²ΠΈΠ΄ΠΈΠΌ. ΠœΡ‹ описали DAO-слой.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ Π½Π΅ΠΊΠΈΠΉ сСрвис, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ интСрфСйс:

Π­Ρ‚ΠΎ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ сСрвисный слой. Π Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ этот интСрфСйс:

ΠŸΡ€ΠΈ создании ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса Spring ΠΎΠΏΡΡ‚ΡŒ всё Π²ΠΎΠ·ΡŒΠΌΡ‘Ρ‚ Π½Π° сСбя β€” сам создаст ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ BookRepository ΠΈ пСрСдаст Π΅Π³ΠΎ Π² конструктор. ИмСя ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ рСпозитория ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Π‘Π”:

MapStruct

Бмотря Π½Π° ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ класс Book Π½Π΅ Π½ΡƒΠΆΠ΅Π½, ΠΈ достаточно Ρ‚ΠΎΠ»ΡŒΠΊΠΎ BookEntity, Π½ΠΎ это Π½Π΅ Ρ‚Π°ΠΊ. Book β€” это класс сСрвисного слоя, Π° BookEntity β€” DAO. Π’ нашСм простом случаС ΠΎΠ½ΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‚ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°, Π½ΠΎ Π±Ρ‹Π²Π°ΡŽΡ‚ ΠΈ Π±ΠΎΠ»Π΅Π΅ слоТныС случаи, ΠΊΠΎΠ³Π΄Π° сСрвисный слой ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ с нСсколькими Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ ΠΈ соотвСтствСнно DAO-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ.

Если ΠΏΡ€ΠΈΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒΡΡ, Ρ‚ΠΎ ΠΈ Ρ‚ΡƒΡ‚ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· BookEntity Π² Book ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ сСбС Тизнь ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ, Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ MapStruct. Π­Ρ‚ΠΎ mapper, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π° нас Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ. Для этого Π΄ΠΎΠ±Π°Π²ΠΈΠΌ зависимости Π² build.gradle:

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ mapper, для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ интСрфСйс, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ опишСм ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ ΠΈΠ· BookEntity Π² Book ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ:

ПослС сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ build/generated/sources/annotationProcessor появится сгСнСрированный исходный ΠΊΠΎΠ΄ mapper, ΠΈΠ·Π±Π°Π²ΠΈΠ² нас ΠΎΡ‚ нСобходимости ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹Π΅ дСсятки строк ΠΊΠΎΠ΄Π°:

Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ мэппСром ΠΈ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡˆΠ΅ΠΌ DefaultBookService. Для этого Π½Π°ΠΌ достаточно Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ final-ΠΏΠΎΠ»Π΅ BookMapper, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Lombok автоматичСски подставит Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ конструктора, Π° spring сам инстанциируСт ΠΈ пСрСдаст ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ Π² Π½Π΅Π³ΠΎ:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ опишСм ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ http-запросы ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ сСрвису. Для добавлСния ΠΊΠ½ΠΈΠ³ΠΈ Π½Π°ΠΌ потрСбуСтся ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ класс запроса. Π­Ρ‚ΠΎ data transfer object, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ относится ΠΊ своСму слою DTO.

Нам Ρ‚Π°ΠΊΠΆΠ΅ потрСбуСтся ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ AddBookRequest Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Book. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ для этого BookToDtoMapper:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ объявим ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€, Π½Π° эндпоинты ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ запросы Π½Π° созданиС ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠ½ΠΈΠ³, Π΄ΠΎΠ±Π°Π²ΠΈΠ² зависимости BookService ΠΈ BookToDtoMapper. ΠŸΡ€ΠΈ нСобходимости Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ AddBookRequest ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Response-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² мэппСр, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Book Π² GetBookResponse. ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ 3 ΠΌΠ΅Ρ‚ΠΎΠ΄Π°: ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ POST ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠ½ΠΈΠ³Ρƒ, ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ GET ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ список всСх ΠΊΠ½ΠΈΠ³ ΠΈ ΠΊΠ½ΠΈΠ³Ρƒ ΠΏΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π² качСствС PathVariable.

Настройка spring.jpa.hibernate.ddl-auto=update ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ hibernate Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ схСму ΠΊΠΎΠ³Π΄Π° это Π½ΡƒΠΆΠ½ΠΎ. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ‹ Π½Π΅ создавали Π½ΠΈΠΊΠ°ΠΊΠΈΡ… схСм, Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ сдСлаСт это автоматичСски. Π’ процСссС ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ схСмы Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… постоянно ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ, ΠΈ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ инструмСнты для вСрсионирования ΠΈ примСнСния этих ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Liquibase.

Запустим нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ запросы Π½Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ½ΠΈΠ³:

Запустим ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π‘Π” ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ sql-запрос:

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠΌ список всСх ΠΊΠ½ΠΈΠ³:

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΊΠ½ΠΈΠ³Ρƒ Ρ‡Π΅Ρ€Π΅Π· запрос ΠΊ api нашСго сСрвиса, ΡƒΠΊΠ°Π·Π°Π² ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΊΠ½ΠΈΠ³ΠΈ:

Π’ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ± ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ findAll β€” Π½Π°ΠΉΡ‚ΠΈ всС записи, ByAuthor β€” ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ обрамляСтся %. ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ β€˜Bloch’) Π±ΡƒΠ΄Π΅Ρ‚ сгСнСрирован ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ запрос:

Π”Π°Π»Π΅Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² BookService ΠΈ DefaultBookService:

А Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ получСния списка ΠΊΠ½ΠΈΠ³ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ get-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° author ΠΌΡ‹ искали ΠΏΠΎ Π°Π²Ρ‚ΠΎΡ€Ρƒ, Π° Ссли ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π½Π΅ пСрСдётся, Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ старая Π»ΠΎΠ³ΠΈΠΊΠ° ΠΈ выводится список всСх ΠΊΠ½ΠΈΠ³:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ поиск:

Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ написали Π²Π΅Π±-сСрвис ΠΈ познакомились с ΠΎΡ‡Π΅Π½ΡŒ распространСнными Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ части ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Ρ‚ΡŒ нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π² Π½Π΅Π³ΠΎ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡŽ, Π° Ρ‚Π°ΠΊΠΆΠ΅ напишСм ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ микросСрвис, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ доступа.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π’Π΅Π±-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π½Π° Java Π·Π° 30 ΠΌΠΈΠ½ΡƒΡ‚

ΠžΠΏΡ‹Ρ‚Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ дальшС, Ρ‚Π°ΠΊ-ΠΊΠ°ΠΊ эта ΡΡ‚Π°Ρ‚ΡŒΡ рассчитана скорСС Π½Π° Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ², Π½ΠΎ всё-ΠΆΠ΅ я Π±Ρ‹Π» Π±Ρ‹ ΠΎΡ‡Π΅Π½ΡŒ Ρ€Π°Π΄, Ссли Π±Ρ‹ ΠΊΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ оставил ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ ΠΊΡ€ΠΈΡ‚ΠΈΠΊΡƒ Π² ΠΌΠΎΠΉ адрСс ΠΈΠ»ΠΈ ΡƒΠΊΠ°Π·Π°Π» Π½Π° ошибки.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я Π±Ρ‹ Ρ…ΠΎΡ‚Π΅Π» Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ усилиями ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ свою Π²Π΅Π±-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ уровня.

Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ я расскаТу, ΠΊΠ°ΠΊ практичСски с нуля ΠΌΠΎΠΆΠ½ΠΎ, Π΄Π°ΠΆΠ΅ Π½Π΅ владСя ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΌ стСком Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ ΠΎΠ±Π»Π°ΠΊΠ΅ свой собствСнный ΡƒΡŽΡ‚Π½Π΅Π½ΡŒΠΊΠΈΠΉ рСсурс. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ваш Π»ΠΈΡ‡Π½Ρ‹ΠΉ Π±Π»ΠΎΠ³, ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ интСрСсный сСрвис ΠΈΠ»ΠΈ просто рСсурс ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ Π΄Π°Π²Π½ΠΎ ΠΌΠ΅Ρ‡Ρ‚Π°Π΅Ρ‚Π΅. Π§Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ приятнСС, Ρ‡Π΅ΠΌ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³Ρƒ ссылку Π½Π° свой собствСнный рСсурс ΠΈ вмСстС ΠΎΠ±ΡΡƒΠ΄ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ интСрСсныС ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈΠ»ΠΈ просто ΠΏΠΎΡΠΌΠ΅ΡΡ‚ΡŒΡΡ.

Для ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚Π΅Π»Π΅ΠΉ ΠΈΠ»ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… бизнСсмСнов, ΠΈΠ»ΠΈ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π΅Π² ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΎΠΊ Π±ΡƒΠ΄Π΅Ρ‚ интСрСсно ΡƒΠ·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΠΌ Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΈΡ… бизнСса совсСм Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ большиС дСньги Π½Π° Β«ΠΊΡ€ΡƒΡ‚ΠΎΠΉΒ» сайт, Π° достаточно Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ ΠΈ СдинствСнноС Π·Π° Ρ‡Ρ‚ΠΎ Π·Π°ΠΏΠ»Π°Ρ‚ΠΈΡ‚ΡŒ β€” это Π·Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Π·ΡΡ‚ΡŒ Π² Π°Ρ€Π΅Π½Π΄Ρƒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ сСрвСр.

Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ я ΠΏΠΎΠΊΠ°ΠΆΡƒ, ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ сайт, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Π­Ρ‚ΠΎ скорСС ΡΡ‚Π°Ρ‚ΡŒΡ, посвящСнная ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎΠ±Ρ‰ΡƒΡŽ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ ΠΈ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠ΅ извСстныС рСсурсы, ΠΊΠ°ΠΊ Google, Facebook, Π’ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅.

Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ всС ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-сСрвисы ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ, ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π΅Ρ‚Π°Π»ΠΈ ΠΈ рСализация ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Π²Π΅Ρ‰Π΅ΠΉ, Π½ΠΎ ΡΡƒΡ‚ΡŒ остаётся Π΅Π΄ΠΈΠ½ΠΎΠΉ.

Для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ заинтСрСсовался:

ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ°

Установка Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ:

ΠŸΠΈΡΠ°Ρ‚ΡŒ наш сСрвис ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π½Π° Java, ΠΊΠ°ΠΊ самом распространённом языкС для Π²Π΅Π±-сСрвисов.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π½Π° вашСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ установлСна послСдняя вСрсия Java, сСйчас это 8 вСрсия. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ это ΠΌΠΎΠΆΠ½ΠΎ здСсь ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Java. Π’ 97% случаях Ρ‚Π°ΠΊ ΠΎΠ½ΠΎ ΠΈ Π΅ΡΡ‚ΡŒ, Π½ΠΎ Ссли это Π½Π΅ Ρ‚Π°ΠΊ, Ρ‚ΠΎ слСдуя инструкциями Π½Π° этом сайтС Π²Ρ‹ Π±Π΅Π· Ρ‚Ρ€ΡƒΠ΄Π° исправитС это, установив ΠΈ настроив ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅.

Если ΠΆΠ΅ всё-Ρ‚Π°ΠΊΠΈ это Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ, сразу договоримся с Π²Π°ΠΌΠΈ Ρ‚Π°ΠΊ, ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π½Π° этих сайтах:

Π’ΠΎΠΎΠ±Ρ‰Π΅, ΠΎΡ‚ΠΊΡ€ΠΎΡŽ Π²Π°ΠΌ сСкрСт, Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° Ρƒ вас всё Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ с 1 Ρ€Π°Π·Π° β€” это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Π­Ρ‚ΠΎ нСоспоримый Ρ„Π°ΠΊΡ‚. ΠšΡƒΡ‡Π° ошибок, Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ вСрсий, отсутствиС Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ классов ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π΅ β€” это Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ явлСниС.

Π’Π°Ρˆ ΠΏΠΎΠΊΠΎΡ€Π½Ρ‹ΠΉ слуга сам просидСл 3 Π½Π΅Π΄Π΅Π»ΠΈ с ошибкой, ΠΎΠ±Π»Π°Π·ΠΈΠ² Ρ‚Π°ΠΊΠΈΠ΅ Π·Π°ΠΊΠΎΡƒΠ»ΠΊΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°, Ρ‡Ρ‚ΠΎ Π½Π° ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ врСмя потСрял связь с Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈ ΠΏΡ€ΠΎΠ»Π΅ΠΆΠ°Π» нСсколько мСсяцСв Π² психиатричСской Π±ΠΎΠ»ΡŒΠ½ΠΈΡ†Π΅, Π½ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΎΠ± этом… Π­Ρ‚ΠΎ история для ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ.

Π˜Ρ‚Π°ΠΊ, Java стоит β€” всё Ρ…ΠΎΡ€ΠΎΡˆΠΎ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ инструмСнт. Π”Π°, Π½Π°ΠΌ Π½ΡƒΠΆΠ½Π° идСя. ΠšΠ°Ρ‡Π°Π΅ΠΌ ΠΈ ставим ΠΎΡ‚ΡΡŽΠ΄Π° JetBrains.

Волько ΡƒΡ‡Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Ultimate β€” вСрсия. ΠŸΡ€ΠΎΡΡ‚Π°Ρ вСрсия Π½Π΅ позволяСт Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π²Π΅Π±-прилоТСния. Π’Π°ΠΌ Π΅ΡΡ‚ΡŒ бСсплатный ΠΏΡ€ΠΎΠ±Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ Π½Π° 30 Π΄Π½Π΅ΠΉ, Π΄ΡƒΠΌΠ°ΡŽ с этим Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.

Π˜Ρ‚Π°ΠΊ, срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΅ΡΡ‚ΡŒ, Java Π΅ΡΡ‚ΡŒ.

Начнём

Π’ своё врСмя я ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡ‚Π°Π» ΠΊΡƒΡ‡Ρƒ статСй ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ, ΠΈ Ρ€Π΅ΡˆΠΈΠ», Ρ‡Ρ‚ΠΎ Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я ΠΈΡΠΊΠ»ΡŽΡ‡Ρƒ ΠΏΠΎ максимуму ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ ΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΡƒΡŽ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚Π²Π»Π΅ΠΊΠ°Π΅Ρ‚, Ρƒ мСня ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ другая вСрсия, Π΄Ρ€ΡƒΠ³ΠΎΠΉ порядок ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π΅.

Часто Π²ΠΈΠΆΡƒ вопросы ΠΎΡ‚ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ² ΠΏΡ€ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ интСрСсныС Π²Π΅Ρ‰ΠΈ, ΠΊΠ°ΠΊ Spring ΠΈ Hibernate (https://spring.io/, hibernate.org). Π’ 96% случаях Π²Π°ΠΌ это ΠΏΠΎΠΊΠ° Ρ‡Ρ‚ΠΎ Π½Π΅ Π½Π°Π΄ΠΎ, ΠΈ Π±Π΅Π· Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ скилла Β«solve problemΒ» Π²Ρ‹ увязнитС Ρ‚Π°ΠΌ ΠΎΡ‡Π΅Π½ΡŒ Π½Π°Π΄ΠΎΠ»Π³ΠΎ ΠΈ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒΡΡ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ тяТСло.

Π’Π°ΡˆΠ° альма-ΠΌΠ°Ρ‚Π΅Ρ€ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΏΠΎΡ€Π°Ρ… β€” это 2 Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ:

Β«Application serverΒ». Π§Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅? А Π²ΠΎΡ‚, Ρ‡Ρ‚ΠΎ Application server.

ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡ Π²Π΅Π±-рСсурсов

Π‘ΡƒΡ‚ΡŒ такая, сСрвСр. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвСр? Π­Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Β«Π·Π°Ρ†ΠΈΠΊΠ»Π΅Π½Π½ΠΎΒ» ΠΊΡ€ΡƒΡ‚ΠΈΡ‚ΡŒΡΡ Π² систСмС ΠΈ ΡΠ»ΡƒΡˆΠ°Π΅Ρ‚ ΠΏΠΎΡ€Ρ‚Ρ‹. Π­Ρ‚ΠΎ Ρ‚Π΅ΠΌΠ° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€Π°. Но Π² ΠΎΠ±Ρ‰Π΅ΠΌ, рассмотрим 2 Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ сСрвСр ΡƒΠΌΠ΅Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ, ΠΎΠ½ ΡƒΠΌΠ΅Π΅Ρ‚ ΠΎΡ‚Π΄Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ (GET) β€” просто Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ число, страницу, ΠΈΠ»ΠΈ Π΅Ρ‰Ρ‘ Π±ΠΎΠ³ Π·Π½Π°Π΅Ρ‚ Ρ‡Ρ‚ΠΎ. Но, Π΅ΡΡ‚ΡŒ Π΅Ρ‰Ρ‘ ΠΈ POST β€” ΠΎΠ½ Ρ‚ΠΎΠΆΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅, Π½ΠΎ ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈΡ… ΠΏΠ΅Ρ€Π΅Π΄ этим.

Если Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ понятно, Ρ‡ΠΈΡ‚Π°Π΅ΠΌ Ρ‚ΡƒΡ‚ ru.wikipedia.org/wiki/REST.

Π‘Ρ‚Π°Ρ‚ΡŒΡ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ слишком сильно расти. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π±ΡƒΠ΄Ρƒ ΡΡ‚Π°Ρ€Π°Ρ‚ΡŒΡΡ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΊΡ€Π°Ρ‚ΠΊΠΎ.

Π˜Π΄Ρ‘ΠΌ Π² ΠΌΠΎΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ систСма контроля вСрсий, поэтому ΠΈΠ΄Ρ‘ΠΌ ΠΏΡƒΡ‚Ρ‘ΠΌ Π΄ΠΈΠ»Π΅Ρ‚Π°Π½Ρ‚Π°, Ρ‚Π°ΠΌ Π΅ΡΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΠ° (Β«Download ZIPΒ» β€” ΠΊΠ°Ρ‡Π°Π΅ΠΌ ΠΈ Ρ€Π°Π·Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€ΡƒΠ΅ΠΌ).

Π’ ΠΎΠΊΠ½Π΅ привСтствия ΠΈΠ΄Π΅ΠΈ Π΅ΡΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΠ° Β«import projectΒ» β€” ΠΆΠΌΡ‘ΠΌ. Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ скачанный ΠΈ Ρ€Π°Π·Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

Π–ΠΌΡ‘ΠΌ Π΄Π°Π»Π΅Π΅, Π΄Π°Π»Π΅Π΅ ΠΈ Π΄Π°Π»Π΅Π΅, ΠΏΠΎΠΊΠ° Π½Π΅ откроСтся ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

ΠŸΠ΅Ρ€Π²Ρ‹Π΅ слоТности

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚, Π½ΠΎ Π²Ρ‹ Π½Π΅ запуститС сСрвСр ΠΈ Π½Π΅ смоТСтС ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ сайт. ΠŸΠΎΡ‡Π΅ΠΌΡƒ? ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ, идСя Π½Π΅ Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΅ΠΉ Π΄Π΅Π»Π°Ρ‚ΡŒ, ΠΎΠ½Π° ΡƒΠΌΠ½Π°, Π½ΠΎ Π½Π΅ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ.

ОбъяснСниС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, заняло Π±Ρ‹ ΠΏΠ°Ρ€Ρƒ страниц ΠΈ ΠΎΠΊΠ°Π·Π°Π»ΠΎ Π±Ρ‹ Π²Π°ΠΌ «мСдвСТью» услугу. ΠŸΠ΅Ρ€Π²Ρ‹Π΅ слоТности β€” ΠΏΠ΅Ρ€Π²Ρ‹Π΅ трудности. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ вашим Β«Π±ΠΎΠ΅Π²Ρ‹ΠΌ ΠΊΡ€Π΅Ρ‰Π΅Π½ΠΈΠ΅ΠΌΒ». ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ β€” Π½Π΅ ΠΏΠΈΡ€ΠΎΠΆΠΊΠΈ ΠΏΠ΅Ρ‡ΡŒ. Бсылки свСрху Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚. ΠŸΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ 1-2 часа Π½Π° это β€” это Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ. Π― знаю Ρ…ΠΎΡ€ΠΎΡˆΠΈΡ… ΠΈ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Ρ… программистов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сидСли нСсколько Π΄Π½Π΅ΠΉ, Π½ΠΎ Ρ‚Π°ΠΊ ΠΈ Π½Π΅ сумСли ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ сСрвСр. Π­Ρ‚ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈΠΌ чСсти β€” Π½ΠΎ Ρ„Π°ΠΊΡ‚ β€” Π΅ΡΡ‚ΡŒ Ρ„Π°ΠΊΡ‚. Π’ΠΏΠ΅Ρ€Π΅Π΄. ЗапуститС β€” Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΠΉΡ‚Π΅ΡΡŒ ΠΊ Ρ‡Ρ‚Π΅Π½ΠΈΡŽ.

НС Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ ΠΈΠ΄Π΅Π΅, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ tomcat (ΠΊΠ°ΠΊ? ссылки Π²Π²Π΅Ρ€Ρ…Ρƒ, ΠΏΠΎ Π½ΠΈΠΌ Π΅ΡΡ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚).

Π›ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ тСстированиС сСрвиса

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Ρƒ вас Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π²ΠΎΡ‚ это:

ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java

Но Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° β€” Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚! Ну Ρ‡Ρ‚ΠΎ ΠΆΠ΅, этого слСдовало ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ. Π£ нас Π½Π΅ создана Ρ‚Π°Π±Π»ΠΈΡ†Π° Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… SQLite

ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ с 0 Π½Π΅ просто. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ± этом Π½Π° спСциализированных рСсурсах.

ΠœΠΎΠ³Ρƒ ΠΏΠΎΡΠΎΠ²Π΅Ρ‚ΠΎΠ²Π°Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ сСрвис: www.codecademy.com (Ρ‚Π°ΠΌ Π΅ΡΡ‚ΡŒ Java, SQL, Git, JavaScript ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ супСр ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ), поэтому милости ΠΏΡ€ΠΎΡˆΡƒ.

Π’ ΠΈΡ‚ΠΎΠ³Π΅, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½Π°ΡˆΡƒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, Π΄Π΅Π»Π°Π΅ΠΌ это Ρ‚Π°ΠΊ:

Π’Π°Π±Π»ΠΈΡ†Π° создана. МоТно ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ наша систСма. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΏΠ°Ρ€Ρƒ ΠΈΠΌΡ‘Π½ ΠΈ посмотритС, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π²Π°ΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Ρ‹ ΡƒΠΆΠ΅ ΠΈΠ· самой Π±Π°Π·Ρ‹.

Π Π°Π·Π±ΠΎΡ€ ΠΊΠΎΠ΄Π°

Начнём ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ Ρƒ нас Π² ΠΊΠΎΠ΄Π΅:

Π’Π°ΠΊ ΡƒΠΆ повСлось, Ρ‡Ρ‚ΠΎ Π² Java всС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΏΠΈΡˆΡƒΡ‚ΡΡ Π² xml-Ρ„Π°ΠΉΠ»Π°Ρ…, Ρ‚ΡƒΡ‚ Π½Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ β€” Ρ„Π°ΠΉΠ» web.xml ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‚ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ сСрвлСт Π·Π° Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚. Π’Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ посмотритС Π½Π° ΠΊΠΎΠ΄ ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ ссылку ΠΈΠ»ΠΈ имя сСрвлСта.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρƒ нас простоС, поэтому Ρƒ всСго 2 класса (SQLiteClass ΠΈ MainServlet).

ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ…, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈ Π΅ΡΡ‚ΡŒ наш прСсловутый сСрвлСт.

А Π²ΠΎΡ‚ ΠΈ наши, упомянутыС Π²Ρ‹ΡˆΠ΅ POST ΠΈ GET запросы, эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ ΠΈ Π·Π°Π΄Π°ΡŽΡ‚ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ сСрвлСта Π² ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° запросы ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. Π‘ΡƒΡ‚ΡŒ ΠΎΠ΄Π½Π° β€” Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΈ, Π΄Π°Π½Π½Ρ‹Π΅ ΡƒΡˆΠ»ΠΈ. НичСго слоТного. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΏΠΎΠΈΠ³Ρ€Π°Ρ‚ΡŒΡΡ с ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ.

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ классу, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅ΠΌΡƒ JDBC:

Π—Π΄Π΅ΡΡŒ Ρ‚ΠΎΠΆΠ΅ всё просто, Ρ‚Π΅ ΠΆΠ΅ SQL запросы, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°Π²Ρ‘Ρ€Π½ΡƒΡ‚Ρ‹Π΅ Π² Java-ΠΊΠΎΠ΄. НСбольшой совСт β€” ΠΎΡΡ‚Π΅Ρ€Π΅Π³Π°ΠΉΡ‚Π΅ΡΡŒ всяких надстроСк ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ². Они Ρ…ΠΎΡ€ΠΎΡˆΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…, ΠΊΠΎΠ³Π΄Π° Ρƒ вас ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ записСй, ΠΈ слоТныС Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. Но, настоящий ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ запрос, Π±Π΅Π· Ρ‚Π°ΠΊΠΈΡ… Π²Π΅Ρ‰Π΅ΠΉ ΠΊΠ°ΠΊ сСриализация ΠΆΠΈΡ‚ΡŒ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ (особСнно ΠΏΠΎΠ½Π°Ρ‡Π°Π»Ρƒ).

Всё, с сСрвСрной Ρ‡Π°ΡΡ‚ΡŒΡŽ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠΌ. Π’ΡƒΡ‚ Π²Π°ΠΌ придётся ΠΏΠΎΡΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΈ руководства. Π‘Π΅Π· Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Ρ‚ΡƒΡ‚ Π½ΠΈΠΊΠ°ΠΊ.

ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ

Π’ΠΎΡ‚ ΠΈ ΠΏΡ€ΠΈΡˆΠ»ΠΎ врСмя Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΡŒΡΡ Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. А Π½ΠΈΡ‡Π΅Π³ΠΎ ΡΠ²Π΅Ρ€Ρ…ΡŠΠ΅ΡΡ‚Π΅ΡΡ‚Π²Π΅Π½Π½ΠΎΠ³ΠΎ. Но, скаТу Π²Π°ΠΌ прямо, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ всё зависит ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π½ΠΎ, клиСнтская Ρ‡Π°ΡΡ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ слоТнСС Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Ρ‡Π΅ΠΌ сСрвСрная. И всё Π² основном ΠΈΠ·-Π·Π° JavaScript-Π°. ΠžΡ‡Π΅Π½ΡŒ быстро клиСнтский ΠΊΠΎΠ΄ прСвращаСтся Π² Π½Π°Π±ΠΎΡ€ «простынСй», Π·Π°ΠΏΠ»Π°Ρ‚, Ρ…Π°Ρ€Π΄ΠΊΠΎΠ΄Π° ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ… вСсСлостСй. JavaScript суров ΠΈ бСспощадСн. На чистом Π½Ρ‘ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ тяТСло. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ JQuery. Π•ΡΡ‚ΡŒ ΠΊΡƒΡ‡Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ творСния, Π½ΠΎ ΠΈΡ… ΠΊΠ°ΡΠ°Ρ‚ΡŒΡΡ здСсь Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ. Π•ΡΡ‚ΡŒ такая ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΊΠ°, Ρ‡Ρ‚ΠΎ Π½Π°Π·ΠΎΠ²ΠΈ любоС слово ΠΈ это Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ JS-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°. Π˜Π·Π²Π΅ΡΡ‚Π΅Π½ Π² ΡƒΠ·ΠΊΠΈΡ… ΠΊΡ€ΡƒΠ³Π°Ρ… Ρ„Ρ€Π΅ΠΉΠΌΡ„ΠΎΡ€ΠΊ Mocha, я Π½Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽ ΠΊΠ°ΠΊΠΈΠ΅ мысли посСщали Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΡ‹Π²Π°Π» Π΅ΠΌΡƒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅, Π½Ρƒ Π»Π°Π΄Π½ΠΎ, это Π±Ρ‹Π»ΠΎ Π΅Π³ΠΎ ΠΏΡ€Π°Π²ΠΎ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅.

Π˜Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ Ρƒ нас Ρ‚Π°ΠΌ с ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ?

ΠžΠΏΡΡ‚ΡŒ Π΄Π°ΠΌ ссылку Π½Π° ΠΎΡ‚Π»ΠΈΡ‡Π½Π΅ΠΉΡˆΠΈΠΉ рСсурс www.codecademy.com. Π€Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄ Ρ‚Π°ΠΌ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π½ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΈ Π΄Π°Ρ‘Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ Π±Π°Π·Ρƒ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ….

Π’ΡƒΡ‚ рассмотрим Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

Π§Ρ‚ΠΎ ΠΎΠ½Π° Π΄Π΅Π»Π°Π΅Ρ‚? ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, ΡˆΠ»Ρ‘Ρ‚ Ρ‚ΠΎΡ‚ самый POST β€” запрос ΠΈ Ρ€Π°Π·Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚. Всё просто, ΠΎΡ‚Π΄Π°Π» Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» с сСрвСра. По русски ΠΎΠ½ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ сСрвСру Β«Π”Π°ΠΉ ΠΌΠ½Π΅ ΠΈΠΌΠ΅Π½Π° всСх, ΠΊΡ‚ΠΎ Ρƒ тСбя Π² Π±Π°Π·Π΅Β» ΠΈΠ»ΠΈ «ЗанСси Π² Π±Π°Π·Ρƒ это имя» ΠΈ Π΄Π°Ρ‘Ρ‚ Π΅ΠΌΡƒ имя.

Π’ΠΎΡ‚ ΠΈ вся клиСнтская Ρ‡Π°ΡΡ‚ΡŒ.

ΠžΡ‚ΠΏΡ€Π°Π²Π»ΡΠ΅ΠΌ рСсурс Π² настоящий ΠΌΠΈΡ€

Как ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, наш сСрвис ΠΊΡ€ΡƒΡ‚ΠΈΡ‚ΡŒΡΡ Π½Π° локальном хостС. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами Π½Π° нашСм ΠΆΠ΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅. ΠŸΡ€ΠΈΡˆΠ»ΠΎ врСмя это ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ.

Π’ΡƒΡ‚ я ΠΎΠΏΠΈΡˆΡƒ лишь ΠΎΠ±Ρ‰ΠΈΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ сСго дСйствия. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ‡Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΡ‚ вас Π΄Π΅Π½Π΅Π³ Π½Π° сСрвСр, поэтому маловСроятно, Ρ‡Ρ‚ΠΎ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ этим Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ, особСнно Π² самом Π½Π°Ρ‡Π°Π»Π΅ своСго программистского ΠΏΡƒΡ‚ΠΈ. Но ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΎΠ±Ρ‰ΡƒΡŽ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠΆΠ΅ сСйчас. Если ΠΊΡ‚ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒΡΡ β€” Π·Π½Π°ΠΉΡ‚Π΅ Π²Ρ‹ ΠΌΠΎΠ»ΠΎΠ΄Ρ†Ρ‹, Π²ΠΏΠΎΠ»Π½Π΅ вСроятно ΠΈΠ· вас ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΉΡ‚ΠΈ Ρ‚ΠΎΠ»ΠΊ.

И ΠΏΠΎ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΈ сразу нСсколько ссылок:

Π§ΠΈΡ‚Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΌ написано, Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌ Π² Π³ΠΎΠ»ΠΎΠ²Π΅ ΠΎΠ±Ρ‰ΡƒΡŽ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ, Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ происходит взаимодСйствиС программиста ΠΈ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ сСрвСра.

Π‘Π°ΠΌΠΈ сСрвСра ΠΌΠΎΠΆΠ½ΠΎ приобрСсти Π½Π° amazone. Бсылку Π½Π΅ даю, ΠΈΠ±ΠΎ Ρ€Π΅ΠΊΠ»Π°ΠΌΠ°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ сами ΠΏΠΎΠΈΡΠΊΠ°Ρ‚ΡŒ, это Π½Π΅ слоТно. Π•ΡΡ‚ΡŒ бСсплатный тСстовый ΠΏΠ΅Ρ€ΠΈΠΎΠ΄. НО! Π‘ΡƒΠ΄ΡŒΡ‚Π΅ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ остороТны, ваш ΠΏΠΎΠΊΠΎΡ€Π½Ρ‹ΠΉ слуга сам ΡΠ»Ρ‹ΡˆΠ°Π» истории, ΠΊΠ°ΠΊ со счСтов ΡΠΏΠΈΡΡ‹Π²Π°Π»ΠΈΡΡŒ тысячи Π΄ΠΎΠ»Π»Π°Ρ€ΠΎΠ² Π±Π΅Π· Π²Π΅Π΄ΠΎΠΌΠ° хозяина, ΠΈΠ±ΠΎ систСма сама ΡƒΠΌΠ΅Π΅Ρ‚ Π΄ΠΎΠΊΡƒΠΏΠ°Ρ‚ΡŒ сСбС мощности. НС ΠΏΠΎΠΏΠ°Π΄ΠΈΡ‚Π΅ΡΡŒ, я сам ΡƒΠΆΠ΅ ΠΏΠ»Π°Ρ‚ΠΈΠ» нСсколько Ρ€Π°Π· Π·Π° нСпонятныС услуги, Ρ‚Π°ΠΌ всё Π½Π° английском. Если Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ β€” Π»ΡƒΡ‡ΡˆΠ΅ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ Π΄Π΅Π»Π°ΠΉΡ‚Π΅.

ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ дСйствий Ρ‚Π°ΠΊΠΎΠ²:

На всякий случай я ΠΎΡΡ‚Π°Π²Π»ΡŽ Ρ‚ΡƒΡ‚ эти ссылки, Π²Π΄Ρ€ΡƒΠ³, ΠΊΡ‚ΠΎ-Ρ‚ΠΎ застопорился Π½Π° ΠΊΠ°ΠΊΠΎΠΌ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π΅ ΠΈ Ρ€Π΅ΡˆΠΈΠ» ΡΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒΡΡ Π² самый Π½ΠΈΠ· ΡΡ‚Π°Ρ‚ΡŒΠΈ, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚:

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ΠΎΡ‚ ΠΌΡ‹ ΠΈ Π΄ΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ Π΄ΠΎ ΠΊΡƒΠ»ΡŒΠΌΠΈΠ½Π°Ρ†ΠΈΠΈ нашСго здСсь обсуТдСния Π”ΠΆΠ°Π²Ρ‹ ΠΈ Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° Π½Π΅ΠΉ. Π‘Π»ΠΎΠΆΠ½ΠΎ? Π”Π°. Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ? Π”Π°. ВсС, Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ всС сСрвисы, Π±ΡƒΠ΄ΡŒ Ρ‚ΠΎ, поисковая систСма с ΠΌΠΈΠ»Π»ΠΈΠ°Ρ€Π΄Π°ΠΌΠΈ индСксов, Π±ΡƒΠ΄ΡŒ Ρ‚ΠΎ Π²ΠΈΠ΄Π΅ΠΎ-сСрвис с ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π°ΠΌΠΈ стрим-ΠΊΠ°Π½Π°Π»ΠΎΠ² β€” всё ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒΡΡ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ. ΠžΡ‚Π΄Π°Ρ‚ΡŒ β€” Π·Π°Π±Ρ€Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅. Понимая эту ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ Π²Ρ‹ смоТСтС Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ систСму, сСрвис ΠΈΠ»ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ.

Π― Π½Π΅ стану Π»ΡƒΠΊΠ°Π²ΠΈΡ‚ΡŒ ΠΈ ΠΎΠ±ΠΌΠ°Π½Ρ‹Π²Π°Ρ‚ΡŒ вас ΡƒΠ²Π°ΠΆΠ°Π΅ΠΌΡ‹Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ. Вряд Π»ΠΈ Π²Ρ‹ Π·Π° 2 ΠΈΠ»ΠΈ 3 Π½Π΅Π΄Π΅Π»ΠΈ станСтС супСр профСссионалами ΠΈ Π±ΡƒΠ΄Π΅Ρ‚Π΅ свободно ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄. Π­Ρ‚ΠΎΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ‚ΠΎΠΌ ΠΈ Π΄ΠΎΠ»Π³ΠΈΠΌΠΈ Π½ΠΎΡ‡Π°ΠΌΠΈ. Π§Π΅ΠΌ дальшС Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π·Π°Π»Π°Π·ΠΈΡ‚ΡŒ Π² Π΄Π΅Π±Ρ€ΠΈ, Ρ‚Π΅ΠΌ большС Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ‚Π°ΠΊ ΠΌΠ°Π»ΠΎ Π·Π½Π°Π΅Ρ‚Π΅. Π”ΠΎΡ€ΠΎΠ³Ρƒ осилит ΠΈΠ΄ΡƒΡ‰ΠΈΠΉ, Π²ΠΏΠ΅Ρ€Π΅Π΄, Π΄Π΅Ρ€Π·Π°ΠΉΡ‚Π΅.

Π’ΠΏΠ΅Ρ€Π΅Π΄. ΠŸΡ€ΠΈΡˆΠ»ΠΎ врСмя Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ. Π‘Ρ‚Π°Ρ€Π΅ΡŽΡ‰ΠΈΠΌ Π”ΡƒΡ€ΠΎΠ²Ρƒ ΠΈ Π‘Ρ€ΠΈΠ½Ρƒ ΠΏΠΎΡ€Π° ΡƒΠΉΡ‚ΠΈ Π½Π° ΠΏΠΎΠΊΠΎΠΉ, врСмя ΠΈΡ… славы ΡƒΠΆΠ΅ ΠΏΡ€ΠΎΡˆΠ»ΠΎ, ΠΏΡ€ΠΈΡˆΠ»ΠΎ врСмя ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠΈ истории ΠΈ списки Forbs. И ΠΊΡ‚ΠΎ Π·Π½Π°Π΅Ρ‚, ΠΌΠΎΠΆΠ΅Ρ‚ эту ΡΡ‚Π°Ρ‚ΡŒΡŽ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΡ‚, ΠΊΡ‚ΠΎ Π² своё врСмя Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π½Π΅ΠΉΡˆΡƒΡŽ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ, которая Π·Π°Ρ‚ΠΌΠΈΡ‚ собой Ρ‚Π°ΠΊΠΈΡ… Π³ΠΈΠ³Π°Π½Ρ‚ΠΎΠ² ΠΊΠ°ΠΊ Google, Facebook ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ…. Π£Π΄Π°Ρ‡ΠΈ, спасибо, Ρ‡Ρ‚ΠΎ Π΄ΠΎΡ‡ΠΈΡ‚Π°Π»ΠΈ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π°.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с Java Servlets

ΠΠ²Ρ‚ΠΎΡ€ΠΈΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ

Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с Java Servlets

Одной ΠΈΠ· самых приятных особСнностСй Java являСтся Π΅Ρ‘ многогранная ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π°. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, созданиС Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… дСсктопных ΠΈ Π΄Π°ΠΆΠ΅ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ β€” это Π·Π΄ΠΎΡ€ΠΎΠ²ΠΎ. Но Ρ‡Ρ‚ΠΎ, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠΉΡ‚ΠΈ с ΠΏΡ€ΠΎΡ‚ΠΎΡ€Π΅Π½Π½Ρ‹Ρ… Π΄ΠΎΡ€ΠΎΠΆΠ΅ΠΊ ΠΈ Π·Π°ΠΉΡ‚ΠΈ Π½Π° Ρ‚Π΅Ρ€Ρ€ΠΈΡ‚ΠΎΡ€ΠΈΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ web ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Java? Для вас Π΅ΡΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ Π½ΠΎΠ²ΠΎΡΡ‚ΡŒ: Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π΅ с языком ΠΈΠ΄Ρ‘Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΉ Servlet API, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π²Π°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π°Π΄Ρ‘ΠΆΠ½Ρ‹Π΅ Π²Π΅Π±-прилоТСния Π±Π΅Π· особых Ρ…Π»ΠΎΠΏΠΎΡ‚.

Π­Ρ‚ΠΎ ΡΡ‚Π°Ρ‚ΡŒΡ для ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‰ΠΈΡ…. Если Π²Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚Π΅ знакомство с Java, совСтуСм ΠΏΡ€ΠΎΠΉΡ‚ΠΈ быстрый старт, ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ видСокурс ΠΈ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈΠ· ΠΊΠ½ΠΈΠ³ для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ².

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Java с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Servlets

ВстрСчайтС сСрвлСты, особый Ρ‚ΠΈΠΏ Java-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, выполняСмый Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… Π²Π΅Π±-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° (Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ сСрвлСтов, ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Tomcat ΠΈ Jelly), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ запросы ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ сСрвСра просто ΠΈ эффСктивно. БСйчас Π½Π΅ врСмя ΠΈ Π½Π΅ мСсто Π΄ΠΎΡ‚ΠΎΡˆΠ½ΠΎ ΠΎΠ±ΡŠΡΡΠ½ΡΡ‚ΡŒ Π²Π°ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΠ· сСбя прСдставляСт сСрвлСт. Достаточно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ сСрвлСты ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΠΈ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ°ΡŽΡ‚ΡΡ ΠΈΡ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ, Π° Π½Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ, ΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ (ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π²Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°ΠΌΠΈ) ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ прилоТСниями, Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΌΠΈ Π½Π° сСрвСрС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…).

Π‘Π΅Ρ€Π²Π»Π΅Ρ‚ β€” классная ΡˆΡ‚ΡƒΠΊΠ°, которая ΠΏΠΎΠΌΠΈΠΌΠΎ всСго ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Ρ‡Π΅Ρ€Π΅Π· GET ΠΈ POST-запросы, Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с cookie ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ сСанса. А Π΅Ρ‰Ρ‘ ΠΎΠ½Π° ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ Ρ‡Π΅Ρ€Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΡƒΡ€ΠΎΠ²Π½ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ отправляСт Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ ΠΊΠ°ΠΊ Π² тСкстовом, Ρ‚Π°ΠΊ ΠΈ Π² Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°Ρ… (HTML, XML, PDF, JPG, GIF ΠΈ Ρ‚.Π΄.), Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… случаях ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Java Server Pages (JSP) Ρ„Π°ΠΉΠ»Ρ‹.

Π›ΡƒΡ‡ΡˆΠ΅ всСго Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с сСрвлСтами Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€. ΠœΡ‹ создадим простоС Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ простой HTML-Ρ„ΠΎΡ€ΠΌΡ‹. Π”Π°Π½Π½Ρ‹Π΅, прСдоставлСнныС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ, Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒΡΡ сСрвлСтом ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒΡΡ Π²Π°Π»ΠΈΠ΄Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ.

РазбираСмся с ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ

Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π»ΠΈ структуру нашСго Π±ΡƒΠ΄ΡƒΡ‰Π΅Π³ΠΎ прилоТСния, Π²ΠΎΡ‚ ΠΊΠ°ΠΊ ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ:

ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ шагом ΠΊ созданию прилоТСния являСтся ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ дСскриптора развёртывания. Он ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π²Ρ‘Ρ€Π½ΡƒΡ‚ΠΎ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ срСдС. Когда Π΄Π΅Π»ΠΎ касаСтся Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, дСскриптор развёртывания прСдставляСт собой простой XML-Ρ„Π°ΠΉΠ», Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ web.xml ΠΈ являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ стандартной спСцификации Java EE. Π’ нашСм случаС ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

3–4 дСкабря, Онлайн, Π‘Π΅cΠΏΠ»Π°Ρ‚Π½ΠΎ

Π’Π°ΠΊ ΠΊΠ°ΠΊ нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Servlet API ΠΈ Java Servlet Pages (JSP) для отобраТСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ JAR. Maven сдСлаСт Π·Π° нас Ρ‚Ρ€ΡƒΠ΄Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ, Π²ΠΎΡ‚ ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ„Π°ΠΉΠ» POM:

Если Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ просто, pom.xml опрСдСляСт всС зависимости, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с сСрвлСтами: JSP, Java Standard Tag Library (JSTL) ΠΈ Java Expression Language (JEL).

Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ ΡƒΠΆΠ΅ создали ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ прилоТСния. Однако Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ состоянии ΠΎΠ½ΠΎ Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚. ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ HTML-Ρ„ΠΎΡ€ΠΌΡ‹, поэтому ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, β€” это ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ JSP-Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° послС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ рСгистрации. Π­Ρ‚ΠΈΠΌ ΠΌΡ‹ сСйчас ΠΈ займёмся.

Π Π°Π±ΠΎΡ‚Π°Π΅ΠΌ Π½Π°Π΄ внСшним Π²ΠΈΠ΄ΠΎΠΌ

Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Π²ΠΈΠ΄ прилоТСния Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒΡΡ двумя JSP-Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ β€” Π² контСкстС MVC ΠΎΠ½ΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ прСдставлСниями. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π·Π° ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ„ΠΎΡ€ΠΌΡ‹ рСгистрации ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ошибок, Π²Ρ‹Π·Π²Π°Π½Π½Ρ‹Ρ… послС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π²Π²Π΅Π΄Ρ‘Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ страницСй привСтствия, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Π΄Π°Π½Π½Ρ‹Π΅, Π²Π²Π΅Π΄Ρ‘Π½Π½Ρ‹Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ, послС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ процСсса рСгистрации.

Π’ΠΎΡ‚ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ JSP-Ρ„Π°ΠΉΠ»:

Π‘ΠΊΠΎΡ€ΠΎ ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, ΠΊΠ°ΠΊ сСрвлСт связываСтся с URL processcustomer ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ взаимодСйствуСт с Π²Π²Π΅Π΄Ρ‘Π½Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. А ΠΏΠΎΠΊΠ° Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° JSP-Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° страницу привСтствия:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ с ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ страниц, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ шагом Π±ΡƒΠ΄Π΅Ρ‚ созданиС сСрвлСта, отвСтствСнного Π·Π° сбор Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈΠ· POST-запросов ΠΈ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… простым способом.

ПишСм ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€

ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ сСрвлСт, способный ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ„ΠΎΡ€ΠΌΡ‹ рСгистрации, ΠΏΡ€ΠΎΡ‰Π΅ простого. Всё, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, β€” это Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ подкласс для класса HttpServlet ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ doGet() ΠΈΠ»ΠΈ doPost() (ΠΈΠ»ΠΈ ΠΎΠ±Π°, Ссли Π½Π°Π΄ΠΎ). Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС сСрвлСт Π±ΡƒΠ΄Π΅Ρ‚ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰ΠΈΠΌΠΈ ΠΈΠ· POST-запросов.

Π’ΠΎΡ‚ ΠΊΠ°ΠΊ ΠΎΠ½ выглядит:

Π’Π°Π»ΠΈΠ΄Π°Ρ‚ΠΎΡ€Ρ‹ β€” это простыС классы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ свойства, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, являСтся Π»ΠΈ строка пустой ΠΈ выглядит Π»ΠΈ email ΠΊΠ°ΠΊ email. На GitLab Π°Π²Ρ‚ΠΎΡ€Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ влияСт Π½Π° дальнСйший Ρ…ΠΎΠ΄ событий: Ссли Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅ Π²Π°Π»ΠΈΠ΄Π½Ρ‹, ΠΊΠ»ΠΈΠ΅Π½Ρ‚ пСрСнаправляСтся Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ RequestDispatcher Π½Π° страницу рСгистрации, Π³Π΄Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ошибки. Если всё Π² порядкС, Ρ‚ΠΎ отобраТаСтся страница привСтствия.

Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ создали Ρ†Π΅Π»ΠΎΠ΅ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Java, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ позволяСт Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ HTML-Ρ„ΠΎΡ€ΠΌΡ‹, Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ сСрвлСта ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… JSP-Ρ„Π°ΠΉΠ»ΠΎΠ². ΠŸΠΎΡ€Π° Π΅Π³ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ.

ЗапускаСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

Для запуска прилоТСния Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги:

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π˜Ρ‚Π°ΠΊ, Π²Ρ‹ ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Π»ΠΈ всС Π½Π°Π²Ρ‹ΠΊΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для создания собствСнного Π²Π΅Π±-прилоТСния Π½Π° Java Π±Π΅Π· нСобходимости ΠΏΡ€ΠΈΠ±Π΅Π³Π°Ρ‚ΡŒ ΠΊ слоТным Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°ΠΌ. Всё, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ, β€” Servlet API, тСхнология Π²Ρ€ΠΎΠ΄Π΅ JSP для отобраТСния ΠΈ встроСнныС срСдства Java. Π—Π΄ΠΎΡ€ΠΎΠ²ΠΎ, ΠΏΡ€Π°Π²Π΄Π°?

Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ рСализация класса CustomerController ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π΅Ρ‚ достоинства ΠΈ нСдостатки сСрвлСтов: с ΠΎΠ΄Π½ΠΎΠΉ стороны, ΠΎΠ½ Π²ΠΊΡ€Π°Ρ‚Ρ†Π΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, насколько Π»Π΅Π³ΠΊΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ запроса ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ Π² Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°Ρ…. Но эта Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ свою Ρ†Π΅Π½Ρƒ: ΠΎΠ±Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ интСрфСйсов HttpServletResponse ΠΈ HttpServletResponse ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ Π»ΠΎΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ слуТб. НСльзя ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ это ΠΏΠ»ΠΎΡ…ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π»ΠΎΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ просто содСрТат Π΄Π°Π½Π½Ρ‹Π΅. Однако Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ эти Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π±ΡƒΠ΄ΡƒΡ‚ всСгда привязаны ΠΊ сСрвлСту.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ПишСм простоС Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Spring MVC, Spring Data JPA ΠΈ Hibernate

ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Π₯Π°Π±Ρ€! ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽ Π’Π°ΡˆΠ΅ΠΌΡƒ вниманию ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ руководства Β«Spring MVC + Spring Data JPA + Hibernate β€” CRUD ExampleΒ» Π°Π²Ρ‚ΠΎΡ€Π° Nam Ha Minh.

Π’ этом руководствС ΠΏΠΎ Java Spring Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Spring MVC ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Spring Data JPA, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π² простоС Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ позволяСт ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°Ρ….

По Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡŽ этого руководства, Π²Ρ‹ смоТСтС ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Java основанноС Π½Π° тСхнологиях Spring MVC ΠΈ Spring Data JPA, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² этом руководствС: Java 8, Apache Tomcat 9, MySQL Server 5.7, Eclipse IDE 4.7 (Oxygen), Spring Framework 5.1, Hibernate 5.4, Spring Data JPA 2.1.5 ΠΈ Servlet 3.1.

Начнём с создания Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….

1. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…

ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ MySQL. Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ customer, которая находится Π² схСмС с ΠΈΠΌΠ΅Π½Π΅ΠΌ sales. Π’Π°Π±Π»ΠΈΡ†Π° customer ΠΈΠΌΠ΅Π΅Ρ‚ 4 поля: id, name, email ΠΈ address:

ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ MySQL скрипт для создания схСмы ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹:

2. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² Eclipse

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Dynamic Web Project Π² Eclipse, ΠΈ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Maven: для этого Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ПКМ ΠΏΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ, Π²Ρ‹Π±Π΅Ρ€Π΅Ρ‚Π΅ Configure > Convert to Maven Project. Π’ ΠΎΡ‚ΠΊΡ€Ρ‹Π²ΡˆΠ΅ΠΌΡΡ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅ Create new POM Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ:

β€” Group Id: net.codejava
β€” Artifact Id: CustomerManager

Π’Π°ΠΊΠΆΠ΅ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ вСрсия JRE для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Java 8 ΠΈΠ»ΠΈ Π½ΠΎΠ²Π΅Π΅.

Π—Π°Ρ‚Π΅ΠΌ, ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ pom.xml (Ρ„Π°ΠΉΠ» Maven), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ зависимости для этого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. ΠžΠ±ΡŠΡΠ²ΠΈΡ‚Π΅ свойства вСрсий для Spring ΠΈ Hibernate Frameworks:

Π£ΠΊΠ°ΠΆΠΈΡ‚Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ для Spring Framework:

Для создания Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Spring MVC:

Для использования Spring Data JPA:

ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Hibernate Π² качСствС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ JPA, поэтому Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ:

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ с MySQL, Π½Π°ΠΌ Π½ΡƒΠΆΠ½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ для Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° MySQL JDBC:

И Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ зависимости для Java Servlet, JSP ΠΈ JSTL:

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π΄Π²Π° Java ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π² ΠΊΠΎΡ€Π½Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°:
β€” net.codejava.config : для классов ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.
β€” net.codejava.customer : для классов прилоТСния.

3. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° настройки JPA

ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java

И Π²ΠΏΠΈΡˆΠΈΡ‚Π΅ Π² этот Ρ„Π°ΠΉΠ» ΠΊΠΎΠ΄ прСдставлСнный Π½ΠΈΠΆΠ΅:

Как Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ свойства для соСдинСния с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ URL, user, password ΠΈ класс JDBC Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°. Π’Π°ΠΊ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ имя SalesDB Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π°ΠΌΠΈ Π² ΠΊΠΎΠ΄Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.

4. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Model Class

5. ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ Spring MVC ΠΈ Spring Data JPA

Π”Π°Π»Π΅Π΅, напишСм Java ΠΊΠΎΠ΄ для настройки Spring MVC ΠΈ Spring Data JPA. ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ Π½Π° основС Java, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Π° ΠΏΡ€ΠΎΡ‰Π΅, Ρ‡Π΅ΠΌ XML.

Настройка Spring Dispatcher Servlet

Для использования Spring MVC Π² нашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π½Π°ΠΌ Π½Π°Π΄ΠΎ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Spring Dispatcher Servlet ΠΏΡ€ΠΈ запускС прилоТСния, написав ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ класс:

Настройка Spring MVC

Π’ этом классС ΠΌΡ‹ создаём bean-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ распознаёт прСдставлСния (View), с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ указания прСфикса ΠΈ суффикса для этих прСдставлСний. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ создайтС ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ views Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° WebContent/WEB-INF для хранСния JSP Ρ„Π°ΠΉΠ»ΠΎΠ².

Π—Π΄Π΅ΡΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Spring MVC.

Настройка Spring Data JPA

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π΄Π²Π΅ Π²Π°ΠΆΠ½Ρ‹Π΅ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ:

Π­Ρ‚ΠΎ минимальная нСобходимая конфигурация для использования Spring Data JPA.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Repository Interface

7. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Service Class

Π—Π°Ρ‚Π΅ΠΌ, создайтС класс CustomerService :

Π­Ρ‚ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° магию, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ Π½Π΅ пишСм DAO ΠΊΠΎΠ΄, Π½ΠΎ Spring Data JPA автоматичСски создаст Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π²ΠΎ врСмя выполнСния.

8. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Spring MVC

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ класс CustomerContoroller для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ всСх запросов ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ²:

ΠœΡ‹ напишСм ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… сСкциях.

9. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ списка ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ²

На домашнСй страницС нашСго прилоТСния Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ всС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹, для этого Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² наш CustomerController класс:

Π”ΠΎΠΌΠ°ΡˆΠ½ΡΡ страница просмотра ( index.jsp ) Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java

10. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ создания Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°. И ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ для добавлСния ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°:

НапишСм саму JSP Ρ„ΠΎΡ€ΠΌΡƒ с ΠΈΠΌΠ΅Π½Π΅ΠΌ new_customer.jsp :

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π° Π³Π»Π°Π²Π½ΠΎΠΉ страницС Ρƒ вас появится ссылка New Customer, ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π½ΠΎΠ²ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ:

ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java

Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ Save Π² этой Ρ„ΠΎΡ€ΠΌΠ΅:

Как Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΎΠ½Π° пСрСнаправляСт ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π½Π° домашнюю страницу, послС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ сохранСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

11. ИзмСнСниС Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ рСдактирования ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π² класс CustomerController :

НаТмитС Π½Π° гипСрссылку Edit рядом с ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ Π½Π° домашнСй страницС, вызовСтся Ρ„ΠΎΡ€ΠΌΠ° рСдактирования ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, которая Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java

ΠœΠ΅Ρ‚ΠΎΠ΄-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΡƒ Save.

12. Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°

Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ удалСния, Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π² классС CustomerController :

НаТмитС Π½Π° гипСрссылку Delete рядом с ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ Π½Π° Π³Π»Π°Π²Π½ΠΎΠΉ страницС. ΠšΠ»ΠΈΠ΅Π½Ρ‚ удалится, Π° список обновится.

13. Поиск ΠΏΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ

НаконСц, Π΄Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ поиска, которая позволяСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², вводя ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово. Ѐункция поиска ΠΈΡ‰Π΅Ρ‚ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова Π² Ρ‚Ρ€Ρ‘Ρ… полях: имя, email ΠΈ адрСс, для Ρ‡Π΅Π³ΠΎ Π½Π°ΠΌ потрСбуСтся Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ собствСнный ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² интСрфСйсС CustomerRepository :

Π—Π°Ρ‚Π΅ΠΌ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² класс CustomerService :

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π² класс CustomerController :

И создайтС страницу Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° поиска search.jsp :

Для тСстирования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ поиска, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Π² ΠΏΠΎΠ»Π΅ поиска Π½Π° домашнСй страницС, ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Enter. Π’Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ страницу Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° поиска:

ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° java

Π’Ρ‹Π²ΠΎΠ΄Ρ‹

Π’ Π΄Π°Π½Π½ΠΎΠΌ руководствС Π²Ρ‹ ΡƒΠ·Π½Π°Π»ΠΈ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Spring MVC, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Spring Data JPA для доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ. Как Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Spring Data JPA Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ ΠΈ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ.

Для сравнСния, Π²ΠΎΡ‚ структура ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² Eclipse IDE:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *