JavaRush /Blog Java /Random-PL /Część 1. Co musisz wiedzieć zanim zaczniesz uczyć się Spr...

Część 1. Co musisz wiedzieć zanim zaczniesz uczyć się Springa i JavaEE

Opublikowano w grupie Random-PL
Jeśli ukończyłeś już naukę Java SE lub jesteś blisko, czas pomyśleć o kolejnych krokach w zdobywaniu zawodu programisty Java. Część 1. Co musisz wiedzieć zanim zaczniesz uczyć się Springa i JavaEE - 1Z jednej strony dobrze znasz już Javę: wiesz, jak pracować z IDE, pisać programy i wiele więcej. Ale co dalej z nimi zrobić, z programami? Jak je ochłodzić i „wypuścić w świat”? Staje się oczywiste, że nadszedł czas, aby rozpocząć naukę technologii korporacyjnych. I tu zaczyna się zabawa. Nie ma znaczenia, od jakiego stosu technologii zdecydujesz się zacząć. Niezależnie od tego, czy jest to JavaEE, czy Spring, prawdopodobnie natkniesz się na wiele rzeczy, które nadal będą poza twoim zrozumieniem. Pomiędzy podstawami Javy a zaawansowanymi technologiami jest jeszcze poziom wiedzy na poziomie średnio zaawansowanym, który pomoże Ci nie zatracić resztek samokontroli i pewności siebie podczas czytania obszernej dokumentacji. Dlatego celem tej serii artykułów jest przekazanie Ci minimalnej wiedzy teoretycznej niezbędnej do dalszej nauki JavaEE lub Springa. Cały materiał podzielony jest na 7 części:
  1. Porozmawiajmy trochę o sieci.
  2. Rozważmy strukturę klient-serwer i architekturę trójpoziomową.
  3. Przyjrzyjmy się protokołom HTTP/HTTPS.
  4. Dowiedzmy się wszystkiego, co musisz wiedzieć o Mavenie.
  5. Porozmawiajmy o serwletach.
  6. Kontenery serwletów.
  7. I na koniec – o MVC.

Część 1. Porozmawiajmy trochę o sieci

Zacznijmy od najważniejszej rzeczy i porozmawiajmy o podstawach, na których budowane są wszystkie sieci społecznościowe, serwisy i aplikacje internetowe, komunikatory internetowe i proste strony - o sieci ( w kontekście tego cyklu artykułów termin „sieć” oznacza globalnego Internetu ). Sieć składa się z ogromnej liczby komputerów: są one ze sobą połączone i zdolne do komunikacji. Ważne jest, aby zrozumieć, jak to robią, ponieważ aplikacje internetowe są odpowiedzialne za przesyłanie informacji z jednego komputera na drugi.

Model sieci OSI

Model OSI (Open Systems Interconnection) tworzy warstwowe podejście do budowy sieci. Jasno pokazuje, w jaki sposób i na jakim poziomie członkowie tej samej sieci mogą ze sobą współdziałać. W sumie model ten zawiera 7 poziomów:
7 Stosowany
6 Reprezentacja
5 Sesja
4 Transport
3 Sieć
2 Kanał
1 Fizyczny
Rozbicie na warstwy abstrakcji pozwala specjalistom pracującym np. na warstwie transportowej nie myśleć o szczegółach realizacji sieci w warstwie sieciowej i sesyjnej. To podejście jest również stosowane w programowaniu. Przyjrzyjmy się wszystkim warstwom modelu OSI i dowiedzmy się, które z nich są dla nas interesujące:
  1. 1. Poziom fizyczny – tutaj prawa fizyki robią swoje, a zadaniem człowieka jest wykorzystanie tego i ukierunkowanie dla własnych celów. Na przykład tworzenie kabli i układanie ich do członków sieci.

    Nie jesteśmy zainteresowani.

  2. Warstwa łącza danych – odpowiedzialna za transmisję danych do węzłów sieci oraz tworzenie kanałów transmisji danych na obiektach fizycznych.

    Нам не интересен, если только нет желания писать прошивку для каналообразующей аппаратуры.

  3. Сетевой уровень — для определения adresов отдельных пользователей сети и маршрутов к ним. На этом уровне стоит остановиться подробнее, а именно — на adresе пользователя в сети.

    Он определяется специальным протоколом: самый распространённый — IPv4 (Internet Protocol version 4). Именно его нужно использовать веб-программисту для обращения к другому абоненту сети.

    IPv4 состоит из четырех bajtовых значений, разделенных точкой, например: 192.0.2.235. Стоит помнить, что значения bajtовые, а значит, они лежат в пределах 0..255.

    IP-adresа, в свою очередь, делятся на классы, и просто так присвоить себе красивую комбинацию циферок не получится, но так сильно углубляться мы не станем. Достаточно понимать, что IP-adres — это уникальный идентификатор абонента в сети, по которому мы сможем к нему обратиться.

  4. Транспортный уровень — занимается доставкой информации adresату. Для этого используются разные протоколы, которые нам пока не интересны. Гораздо больше нас интересует понятие, которое появляется на этом уровне, — port.

    Порты отвечают за идентификацию конкретного Aplikacje на компьютере. Например, ты написал чат на Java, установил на 2 компа и хочешь отправить своему собеседнику. Твое сообщение упаковывается, отправляется по конкретному IP-adresу, доставляется твоему собеседнику, но его ПК не знает, что делать с полученной информацией, так Jak не понимает, Jakое приложение должно обработать твое сообщение. Для этого и указываются порты при общении абонентов в сети.

    Порт представляет собой число от 0 до 65535. Он добавляется к IP-adresу после двоеточия: 192.0.2.235:8080. Но нельзя использовать все порты из указанного диапазона: часть из них зарезервирована под операционную систему, еще часть принято использовать с конкретно оговоренной целью. В преднаoznaczający разных портов углубляться не будем, пока достаточно понимать их роль в процессе общения в сети.

  5. Сеансовый уровень — создает и управляет сеансами связи приложений. На этом уровне становится возможным взаимодействие приложений, отправка wniosekов служебного уровня. Для нас важно знать, что на этом уровне между двумя абонентами открывается сессия (session), с которой нам часто придется работать.

    Сессия — сущность, которая создается при установке связи между двумя пользователями. В ней можно сохранять нужную нам информацию о юзере, об истории их взаимодействия. Важной деталью является то, что при остановке обмена информацией сессия не пропадает, а сохраняет свое состояние на протяжении установленного промежутка времени, поэтому пользователи могут продолжить обмен информацией после перерыва.

    Jeśli aplikacja komunikuje się z kilkoma użytkownikami jednocześnie, nawiązuje się odpowiednią liczbę połączeń, a co za tym idzie sesji. Każda sesja posiada unikalny identyfikator (ID) , który pozwala aplikacji rozróżnić użytkowników, z którymi następuje komunikacja.

  6. Warstwa prezentacji - odpowiedzialna za kodowanie/dekodowanie danych. Oczywiście, jeśli mamy wysłać ciąg „Witaj sieci” innemu użytkownikowi, jest on najpierw konwertowany (zakodowany) na kod binarny, a dopiero potem wysyłany. Po dotarciu do miejsca docelowego wiadomość jest ponownie konwertowana (dekodowana), a odbiorca może zobaczyć oryginalny ciąg. Działania te zachodzą na poziomie prezentacji.

  7. Warstwa aplikacji jest dla nas najciekawszą warstwą. Umożliwia aplikacjom interakcję z siecią. Na tym poziomie będziemy odbierać, wysyłać wiadomości, wysyłać żądania do usług i zdalnych baz danych.

    Na tym poziomie używanych jest wiele protokołów: POP3, FTP, SMTP, XMPP, RDP, SIP, TELNET i oczywiście HTTP/HTTPS. Protokół to uniwersalna umowa, której przestrzegamy podczas tworzenia wiadomości. Z pewnością omówimy protokoły HTTP/HTTPS osobno i bardziej szczegółowo.

Część 1. Co musisz wiedzieć zanim zaczniesz uczyć się Springa i JavaEE - 2 Nie musimy wiedzieć, jak działa każdy poziom tego modelu. Najważniejsze jest zrozumienie zasad działania elementów, z którymi będziemy mieli do czynienia podczas pisania aplikacji internetowych, a mianowicie:
  • Adres IP – adres abonenta w sieci;
  • Port — adres aplikacji konkretnego abonenta;
  • Sesja to byt istniejący w trakcie całej komunikacji pomiędzy dwoma abonentami;
  • Protokoły aplikacyjne (HTTP/HTTPS) to reguły, które będą nas kierować podczas tworzenia i wysyłania wiadomości.
Kiedy wchodzimy np. do sklepu internetowego, wskazujemy jego adres lokalizacji i port. Podczas Twojej pierwszej wizyty tworzona jest sesja, w trakcie której sklep może zapisać informacje. Np. o towarze, który zostawiliśmy w koszyku. Jeżeli zamkniemy zakładkę sklepu internetowego i następnie do niej wrócimy, nasze produkty pozostaną w koszyku, gdyż zostały zapisane w sesji. Otóż ​​wszystkie informacje, które otrzymujemy ze sklepu, odbieramy oczywiście za pośrednictwem protokołu HTTP/HTTPS, a nasza przeglądarka może je przetworzyć. Możesz sprzeciwić się i powiedzieć, że nigdy nie wpisałeś adresu i portu w przeglądarce i po części będziesz miał rację, bo wpisałeś nazwę domeny, która została przekonwertowana na serwerze DNS. Ale tutaj przyjrzyjmy się lepiej, co jest co.

DNS (system nazw domenowych)

Jak już się dowiedzieliśmy, każdy abonent w sieci ma unikalny adres. Jeśli mówimy o aplikacji, jej unikalnym adresem będzie IPv4:port . Znając ten adres, możesz uzyskać bezpośredni dostęp do aplikacji. Wyobraźmy sobie, że napisaliśmy aplikację internetową, która w czasie rzeczywistym wyświetla średnią temperaturę powietrza we wszystkich krajach. Wdrożyliśmy go na serwerze o adresie 226.69.237.119 i na porcie 8080. Aby użytkownik mógł otrzymać od nas informację musi wpisać w przeglądarce 5 cyfr: 226.69.237.119:8080. Ludzie nie lubią zapamiętywać zestawów liczb: nie wszyscy pamiętamy więcej niż dwa numery telefonów. Dlatego wynaleziono system nazw domen . Możemy utworzyć „alias” dla naszego adresu – na przykład world-temperature.com – i zamiast szukać nas po pięciocyfrowym adresie, użytkownik może wpisać nazwę naszej domeny w pasku adresu przeglądarki. Aby dopasować nazwy domen i prawdziwe adresy, istnieją serwery DNS . Gdy użytkownik wejdzie w przeglądarkę np. javarush.ru, jego żądanie zostaje wysłane do serwera DNS, gdzie zamienia się w prawdziwy adres. Część 1. Co musisz wiedzieć zanim zaczniesz uczyć się Springa i JavaEE - 4Ważne jest, abyśmy to zrozumieli, ponieważ w naszych aplikacjach usługi zdalne będziemy wywoływać zarówno po nazwie domeny, jak i po prawdziwym adresie, i będą to te same usługi. To wszystko! W tym artykule przyjrzeliśmy się podstawom projektowania sieci, które przydadzą się przed rozpoczęciem nauki programowania WWW. Następnym razem przyjrzymy się, czym jest architektura klient-serwer i dlaczego jej zrozumienie jest tak ważne. Część 2. Porozmawiajmy trochę o architekturze oprogramowania Część 3. Protokoły HTTP/HTTPS Część 4. Podstawy Mavena Część 5. Serwlety. Pisanie prostej aplikacji internetowej Część 6. Kontenery serwletów Część 7. Wprowadzenie do wzorca MVC (Model-View-Controller) Część 8. Pisanie małej aplikacji uruchamianej w trybie spring-boot
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION