CodeGym /Blog Java /Random-PL /Część 1. Co musisz wiedzieć, zanim nauczysz się Springa i...
John Squirrels
Poziom 41
San Francisco

Część 1. Co musisz wiedzieć, zanim nauczysz się Springa i JavaEE

Opublikowano w grupie Random-PL
Jeśli już skończyłeś (lub jesteś bliski) nauki Java SE, to czas pomyśleć o kolejnych krokach w podboju zawodu programisty Java. Część 1. Co musisz wiedzieć zanim nauczysz się Springa i JavaEE - 1 Z jednej strony znasz już Javę: wiesz, jak pracować z IDE, pisać programy i wiele więcej. Ale co powinieneś zrobić dalej ze swoimi programami? Jak sprawić, by były jeszcze chłodniejsze i „uwolnić je na świecie”? Staje się oczywiste, że nadszedł czas, aby zająć się badaniem technologii korporacyjnych. A teraz 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 mnóstwo rzeczy, które są daleko poza twoim zrozumieniem. Pomiędzy podstawami Javy a zaawansowanymi technologiami pozostaje pośredni krok w wiedzy, który należy wykonać, aby zachować resztki samokontroli i pewności siebie podczas czytania obszernej dokumentacji. Dlatego,jest zapewnienie minimalnej wiedzy teoretycznej niezbędnej do dalszej nauki JavaEE lub Spring. Ten materiał jest podzielony na 7 części:
  1. Porozmawiamy trochę o sieci.
  2. Przyjrzymy się architekturze klient-serwer i architekturze trójwarstwowej.
  3. Przyjrzymy się protokołom HTTP/HTTPS.
  4. Dowiemy się wszystkiego, co musisz wiedzieć o Mavenie.
  5. Mówimy o logowaniu.
  6. O kontenerach serwletów.
  7. I na koniec o MVC.

Część 1. Porozmawiamy trochę o networkingu.

Zacznijmy od tego, co najważniejsze, od tego, na czym zbudowana jest każda sieć społecznościowa, usługa i aplikacja internetowa, komunikator i prosta strona internetowa — sieć (w kontekście tej serii artykułów termin „sieć” oznacza Internet ) . Sieć składa się z ogromnej liczby komputerów: są one ze sobą połączone i mogą się komunikować. Ważne jest, aby zrozumieć, jak to robią, ponieważ aplikacje internetowe przesyłają informacje z jednego komputera do drugiego.

modelu OSI

Model Open Systems Interconnection (OSI) tworzy wielopoziomowe podejście do budowania sieci. Wyraźnie pokazuje, w jaki sposób i na jakiej warstwie jednostki tej samej sieci mogą ze sobą współdziałać. W sumie ten model zawiera 7 warstw:
7 Aplikacja
6 Prezentacja
5 Sesja
4 Transport
3 Sieć
2 Łącza danych
1 Fizyczny
Podział modelu na warstwy abstrakcji pozwala programistom pracującym np. na warstwie transportowej nie musieć myśleć o szczegółach implementacji na poziomie warstwy sieciowej i sesyjnej. Podejście to jest również stosowane w programowaniu. Rozważmy wszystkie warstwy modelu OSI i określmy, które z nich nas interesują:
  1. Warstwa fizyczna — ta warstwa dotyczy praw fizyki i sposobów ich wykorzystania dla naszych celów. Na przykład tworzenie kabli i układanie ich do jednostek w sieci.

    Ta warstwa nas nie interesuje.

  2. Warstwa łącza danych — Warstwa ta odpowiada za przesyłanie danych do węzłów sieci oraz tworzenie kanałów transmisji danych dla obiektów fizycznych.

    Ta warstwa nas nie interesuje, chyba że chcesz napisać firmware dla sprzętu ustanawiającego łącza danych.

  3. Warstwa sieci — Ta warstwa służy do określania adresów poszczególnych użytkowników sieci i tras do nich. Warto dowiedzieć się więcej o szczegółach tej warstwy, a mianowicie o adresach sieciowych.

    Adresy sieciowe są definiowane przez specjalny protokół: najpopularniejszym jest IPv4 (Internet Protocol version 4). Jest to protokół, którego programista sieciowy musi używać do kontaktowania się z innym użytkownikiem sieci.

    Adres IPv4 składa się z czterech wartości bajtowych oddzielonych kropkami, na przykład: 192.0.2.235. Należy pamiętać, że wartości te są bajtami, co oznacza, że ​​mieszczą się w przedziale 0..255.

    Adresy IP z kolei dzielą się na klasy. Nie możemy po prostu przypisać sobie pięknej kombinacji liczb, ale nie będziemy się tu zbytnio zagłębiać. Wystarczy zrozumieć, że adres IP jednoznacznie identyfikuje użytkownika sieci i może służyć do kontaktowania się z nim.

  4. Warstwa transportowa — ta warstwa obsługuje dostarczanie informacji do adresata. W tym celu stosuje się różne protokoły. Na razie nie jesteśmy nimi zainteresowani. Dużo bardziej interesuje nas koncepcja portu , która pojawia się na tej warstwie.

    Porty są odpowiedzialne za identyfikację konkretnej aplikacji na komputerze. Załóżmy na przykład, że piszesz aplikację do czatu w Javie, instalujesz ją na 2 komputerach i chcesz wysłać wiadomość do znajomego. Twoja wiadomość jest spakowana, wysłana na określony adres IP i dostarczona do Twojego znajomego, ale jego komputer nie wie, co zrobić z otrzymaną informacją, ponieważ nie rozumie, która aplikacja ma przetworzyć Twoją wiadomość. Kiedy jednostki sieciowe komunikują się, porty są używane do wskazania, która aplikacja powinna przetwarzać informacje.

    Port jest liczbą z zakresu od 0 do 65535. Jest dodawany do adresu IP po dwukropku: 192.0.2.235:8080 . Ale nie możesz korzystać ze wszystkich portów w określonym zakresie: niektóre z nich są zarezerwowane dla systemu operacyjnego, inne są zwykle używane do określonych celów. Nie będziemy zagłębiać się w przeznaczenie różnych portów. Na razie wystarczy zrozumieć ich rolę w procesie komunikacji w sieci.

  5. Warstwa sesji — ta warstwa tworzy sesje komunikacyjne i zarządza nimi. W tej warstwie aplikacje mogą wchodzić w interakcje, wysyłając żądania na poziomie usług. Musimy wiedzieć, że w tej warstwie sesja jest otwierana między dwoma użytkownikami i musimy pracować z sesją.

    Sesja jest jednostką tworzoną podczas nawiązywania połączenia między dwoma użytkownikami . Może przechowywać niezbędne informacje o użytkowniku oraz historię interakcji z użytkownikiem. Ważnym szczegółem jest to, że gdy wymiana informacji ustanie, sesja nie znika. Zamiast tego zachowuje swój stan przez określony czas, dzięki czemu użytkownicy mogą kontynuować wymianę informacji po przerwie.

    Jeśli aplikacja komunikuje się z kilkoma użytkownikami jednocześnie, to nawiązywana jest odpowiednia liczba połączeń (a tym samym sesji). Każda sesja ma unikalny identyfikator (ID) , który umożliwia aplikacji rozróżnienie użytkowników, z którymi się komunikuje.

  6. Warstwa prezentacji — Ta warstwa jest odpowiedzialna za kodowanie/dekodowanie danych. Oczywiście, jeśli chcemy wysłać ciąg "Hello web" innemu użytkownikowi, to jest on najpierw konwertowany na (zakodowany jako) kod binarny, a dopiero potem wysyłany. Po dotarciu do odbiorcy wiadomość jest konwertowana z powrotem (dekodowana), a odbiorca może zobaczyć oryginalny ciąg znaków. Działania te odbywają się w warstwie prezentacji.

  7. Warstwa aplikacji jest dla nas najciekawszą warstwą. Umożliwia aplikacjom komunikację z siecią. W tej warstwie odbieramy i wysyłamy wiadomości oraz wysyłamy żądania do usług i zdalnych baz danych.

    W tej warstwie wykorzystywanych jest wiele protokołów: POP3, FTP, SMTP, XMPP, RDP, SIP, TELNET i oczywiście HTTP/HTTPS. Protokół to uniwersalna umowa, której przestrzegamy podczas komunikacji. Na pewno udostępnimy oddzielne szczegółowe omówienie protokołu HTTP/HTTPS.

Część 1. Co musisz wiedzieć zanim nauczysz się Springa i JavaEE - 2Nie musimy wiedzieć, jak działa każda warstwa modelu. Najważniejsze jest zrozumienie zasad działania elementów, z którymi będziemy mieli do czynienia podczas pisania aplikacji webowych, a mianowicie:
  • Adres IP — Adres użytkownika w sieci
  • Port — Adres aplikacji określonego użytkownika
  • Sesja — Jednostka istniejąca przez cały okres komunikacji między dwoma użytkownikami
  • Protokoły aplikacji (HTTP/HTTPS) — Są to zasady, których będziemy przestrzegać podczas tworzenia i wysyłania wiadomości.
Odwiedzając np. sklep internetowy, podajemy jego adres i port. Podczas naszej pierwszej wizyty tworzona jest sesja. Sklep może rejestrować informacje w sesji. Na przykład sklep może zapisać informacje o przedmiotach, które zostawiliśmy w koszyku. Jeśli zamkniemy zakładkę ze sklepem internetowym, a potem wrócimy do niej później, nasze pozycje nadal będą w koszyku, ponieważ są zapisane w sesji. Oczywiście wszystkie informacje jakie otrzymujemy ze sklepu otrzymujemy za pośrednictwem protokołu HTTP/HTTPS, a nasza przeglądarka wie jak je przetworzyć. Możesz zaprotestować, twierdząc, że nigdy nie wpisałeś adresu i portu w przeglądarce i częściowo będziesz miał rację. To, co zrobiłeś, to wpisanie nazwy domeny, która została przekonwertowana przez serwer DNS. Przyjrzyjmy się lepiej, co tu jest.

DNS (system nazw domen)

Jak już się dowiedzieliśmy, każdy użytkownik sieci posiada unikalny adres. Jeśli mówimy o aplikacji, to jej unikalnym adresem będzie IPv4-address:port . Jeśli znasz ten adres, możesz uzyskać bezpośredni dostęp do aplikacji. Wyobraź sobie, że napisaliśmy aplikację internetową, która wyświetla średnią temperaturę powietrza we wszystkich krajach w czasie rzeczywistym. Wdrożyliśmy go na serwerze o adresie 226.69.237.119, na porcie 8080. Aby móc otrzymywać od nas informacje, użytkownik musi wpisać w przeglądarce 5 cyfr: 226.69.237.119:8080. Ludzie nie lubią zapamiętywać zestawów numerów: wielu z nas nie pamięta więcej niż dwóch numerów telefonów. Dlatego system nazw domenzostało wynalezione. Możemy utworzyć „alias” dla naszego adresu, na przykład world-temperature.com. Zamiast szukać nas po adresie składającym się z pięciu trudnych do zapamiętania cyfr, użytkownik może wpisać nazwę naszej domeny w pasku adresowym przeglądarki. Istnieją serwery DNS , które odwzorowują nazwy domen na rzeczywiste adresy. Na przykład, gdy użytkownik wpisze codegym.cc w przeglądarce, jego żądanie jest wysyłane do serwera DNS, który konwertuje je na rzeczywisty adres. Część 1. Co musisz wiedzieć zanim nauczysz się Springa i JavaEE - 4Jest to dla nas ważne, aby zrozumieć, ponieważ nasze aplikacje będą wywoływać usługi zdalne zarówno według nazw domen, jak i rzeczywistych adresów. Musimy zrozumieć, że w obu przypadkach usługi są takie same. To wszystko na teraz! W tym artykule przyjrzeliśmy się podstawom sieci, które przydadzą się, gdy zaczniesz uczyć się 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. HTTP/HTTPS Część 4. Podstawy Mavena Część 5. Serwlety i Java Servlet API. Pisanie prostej aplikacji webowej Część 6. Kontenery serwletów Część 7. Wprowadzenie do wzorca MVC (Model-View-Controller)
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION