Ha már befejezte (vagy közel áll) a Java SE elsajátításához, akkor itt az ideje, hogy átgondolja a következő lépéseit, hogy meghódítsa a Java fejlesztői szakmát. 1. rész Amit tudnod kell a Spring és a JavaEE tanulása előtt - 1 Egyrészt már jól értesz a Java-hoz: tudod, hogyan kell IDE-vel dolgozni, programokat írni és még sok minden mást. De mit tegyen ezután a programokkal? Hogyan teheted még hűvösebbé őket, és hogyan „szabadíthatod a világra”? Egyre nyilvánvalóvá válik, hogy ideje elkezdeni a vállalati technológiák tanulmányozását. És most kezdődik a móka. Nem mindegy, hogy melyik technológiai csomaggal kezdi. Legyen szó a JavaEE-ről vagy a tavaszról, valószínűleg rengeteg olyan dologgal találkozhatsz, amelyek messze túlmutatnak a felfogásodban. A Java alapjai és a fejlett technológiák között marad egy köztes lépés a tudásban, amelyet meg kell tenni annak érdekében, hogy megőrizze önuralmának és önbizalmának maradékát a terjedelmes dokumentáció olvasása közben. Ebből adódóan,célja, hogy megadja a JavaEE vagy a Spring további tanulmányozásához szükséges minimális elméleti ismereteket. Ez az anyag 7 részre oszlik:
  1. Beszéljünk egy kicsit a hálózatépítésről.
  2. Megvizsgáljuk a kliens-szerver és a háromszintű architektúrát.
  3. Megvizsgáljuk a HTTP/HTTPS protokollokat.
  4. Mindent megtudunk, amit a Mavenről tudni kell.
  5. A fakitermelésről beszélünk.
  6. A servlet konténerekről.
  7. És végül az MVC-ről.

1. rész. Beszélünk egy kicsit a hálózatépítésről.

Kezdjük azzal, ami a legfontosabb, és beszéljünk arról, amire minden közösségi hálózat, webszolgáltatás és webalkalmazás, azonnali üzenetküldő és egyszerű webhely épül – a hálózat (ebben a cikksorozatban a " hálózat" kifejezés az internetet jelenti ) . A hálózat hatalmas számú számítógépből áll: össze vannak kötve és képesek kommunikálni. Fontos megérteni, hogyan teszik ezt, mert a webes alkalmazások információkat küldenek egyik számítógépről a másikra.

OSI modell

Az Open Systems Interconnection (OSI) modell többszintű megközelítést hoz létre a hálózatépítéshez. Világosan megmutatja, hogy ugyanannak a hálózatnak az entitásai hogyan és milyen rétegben léphetnek kapcsolatba egymással. Összességében ez a modell 7 réteget tartalmaz:
7 Alkalmazás
6 Bemutatás
5 Ülés
4 Szállítás
3 Hálózat
2 Adat link
1 Fizikai
A modell absztrakciós rétegekre bontása lehetővé teszi például a szállítási rétegen dolgozó fejlesztőknek, hogy ne kelljen a megvalósítás részleteire gondolniuk a hálózati és a munkamenet-rétegek szintjén. Ezt a megközelítést a programozásban is alkalmazzák. Tekintsük az OSI modell összes rétegét, és határozzuk meg, melyek azok, amelyek érdekesek számunkra:
  1. Fizikai réteg — Ez a réteg a fizika törvényeivel és azok céljaira való felhasználásával foglalkozik. Például kábelek létrehozása és lefektetése a hálózat entitásaihoz.

    Ez a réteg minket nem érdekel.

  2. Adatkapcsolati réteg – Ez a réteg felelős az adatok továbbításáért a hálózati csomópontokhoz, és adatátviteli csatornák létrehozásáért a fizikai objektumok számára.

    Ez a réteg nem érdekel bennünket, hacsak nem akarunk firmware-t írni az adatkapcsolatokat létrehozó hardverhez.

  3. Hálózati réteg – Ez a réteg az egyes hálózati felhasználók címeinek és a hozzájuk vezető útvonalak meghatározására szolgál. Érdemes többet megtudni ennek a rétegnek a részleteiről, nevezetesen a hálózati címekről.

    A hálózati címeket egy speciális protokoll határozza meg: a leggyakoribb az IPv4 (Internet Protocol version 4). Ez az a protokoll, amelyet a webprogramozónak használnia kell, hogy kapcsolatba lépjen egy másik hálózati felhasználóval.

    Az IPv4-cím négy bájt értékből áll, amelyeket pontok választanak el, például: 192.0.2.235. Ne feledje, hogy ezek az értékek bájtok, ami azt jelenti, hogy a 0...255 tartományon belül vannak.

    Az IP-címek pedig osztályokra vannak osztva. Nem rendelhetünk egyszerűen magunknak egy szép számkombinációt, de itt nem is megyünk bele. Elég megérteni, hogy az IP-cím egyedileg azonosítja a hálózati felhasználót, és fel lehet vele lépni a felhasználóval.

  4. Szállítási réteg – Ez a réteg kezeli az információk címzetthez való eljuttatását. Ennek megvalósítására különféle protokollokat használnak. Egyelőre nem vagyunk kíváncsiak rájuk. Minket sokkal jobban érdekel a port fogalma , amely ezen a rétegen jelenik meg.

    A portok felelősek egy adott alkalmazás azonosításáért a számítógépen. Tegyük fel például, hogy ír egy csevegőalkalmazást Java nyelven, telepíti 2 számítógépre, és üzenetet szeretne küldeni a haverjának. Üzenetét becsomagolják, elküldik egy adott IP-címre, és kézbesítik a haverjának, de a számítógépe nem tud mit kezdeni a kapott információval, mert nem érti, melyik alkalmazás dolgozza fel az üzenetet. Amikor hálózati entitások kommunikálnak, a portok jelzik, hogy melyik alkalmazásnak kell feldolgoznia az információt.

    A port egy 0 és 65535 közötti szám. Ez egy kettőspont után kerül az IP-címhez: 192.0.2.235:8080 . De nem használhatja az összes portot a megadott tartományban: némelyikük az operációs rendszer számára van fenntartva, mások általában meghatározott célokra használatosak. Nem fogunk belemenni a különböző kikötők céljaiba. Egyelőre elég megérteni a hálózati kommunikáció folyamatában betöltött szerepüket.

  5. Munkamenet réteg – Ez a réteg kommunikációs munkameneteket hoz létre és kezel. Ezen a rétegen lehetővé válik az alkalmazások interakciója, szolgáltatási szintű kérések küldése. Amit tudnunk kell, hogy ezen a rétegen egy munkamenet nyílik meg két felhasználó között, és ezzel a munkamenettel kell dolgoznunk.

    A munkamenet egy olyan entitás, amely akkor jön létre, amikor két felhasználó között kapcsolat jön létre. Szükséges információkat tárolhat a felhasználóról és a felhasználóval való interakció előzményeiről. Fontos részlet, hogy amikor az információcsere leáll, a munkamenet nem szűnik meg. Ehelyett egy meghatározott ideig megőrzi állapotát, így a felhasználók szünet után folytathatják az információcserét.

    Ha egy alkalmazás egyszerre több felhasználóval kommunikál, akkor megfelelő számú kapcsolat (és így munkamenet) jön létre. Minden munkamenetnek egyedi azonosítója (ID) van , amely lehetővé teszi az alkalmazás számára, hogy különbséget tegyen a felhasználók között, akikkel kommunikál.

  6. Megjelenítési réteg – Ez a réteg felelős az adatok kódolásáért/dekódolásáért. Nyilvánvalóan, ha el kell küldenünk a "Hello web" karakterláncot egy másik felhasználónak, akkor azt először bináris kódba konvertálják (kódolják), és csak ezután küldik el. A címzetthez való eljutáskor az üzenet visszakonvertálódik (dekódolódik), és a címzett láthatja az eredeti karakterláncot. Ezek a műveletek a bemutató rétegben történnek.

  7. Az alkalmazási réteg számunkra a legérdekesebb réteg. Lehetővé teszi az alkalmazások számára, hogy kommunikáljanak a hálózattal. Ezen a rétegen üzeneteket fogadunk és küldünk, valamint kéréseket küldünk szolgáltatásoknak és távoli adatbázisoknak.

    Ezen a rétegen számos protokoll használatos: POP3, FTP, SMTP, XMPP, RDP, SIP, TELNET és természetesen HTTP/HTTPS. A protokoll egy egyetemes megállapodás, amelyet a kommunikáció során betartunk. A HTTP/HTTPS-ről minden bizonnyal külön részletesen foglalkozunk.

1. rész Amit tudnod kell a Spring és a JavaEE tanulása előtt - 2Nem kell tudnunk, hogyan működik a modell minden rétege. A lényeg az, hogy megértsük azon elemek működésének alapelveit, amelyekkel webes alkalmazások írásakor dolgoznunk kell, nevezetesen:
  • IP-cím — A felhasználó címe a hálózatban
  • Port — Egy adott felhasználó alkalmazásának címe
  • Munkamenet – Egy entitás, amely a két felhasználó közötti kommunikáció teljes időtartama alatt létezik
  • Alkalmazásprotokollok (HTTP/HTTPS) – Ezeket a szabályokat követjük az üzenetek írásakor és küldésekor.
Amikor például felkeresünk egy webáruházat, feltüntetjük annak címét és kikötőjét. Első látogatásunkkor munkamenet jön létre. Az üzlet információkat rögzíthet a munkamenetben. Például az üzlet információkat menthet el azokról a termékekről, amelyeket a kosárban hagytunk. Ha bezárjuk a lapot az online áruházzal, majd később visszamegyünk oda, akkor is a kosárban lesznek a termékeink, mert a munkamenetben elmentésre kerülnek. Természetesen minden információt, amit az üzletből kapunk, HTTP/HTTPS protokollon keresztül kapunk, és a böngészőnk tudja, hogyan kell feldolgozni. Tiltakozhat, mondván, hogy soha nem adta meg a címet és a portot a böngészőben, és részben igaza lenne. Amit tettél, az az volt, hogy beírtad a domain nevet, amelyet egy DNS-kiszolgáló konvertált. Nézzük meg jobban, mi van itt.

DNS (Domain Name System)

Mint már megtudtuk, minden hálózati felhasználó egyedi címmel rendelkezik. Ha az alkalmazásról beszélünk, akkor annak egyedi címe IPv4-cím:port lesz . Ha ismeri ezt a címet, közvetlenül hozzáférhet az alkalmazáshoz. Képzeljük el, hogy írtunk egy webalkalmazást, amely valós időben jeleníti meg az összes ország átlagos levegőhőmérsékletét. A 226.69.237.119-es című szerveren, a 8080-as porton telepítettük. Ahhoz, hogy információkat kaphasson tőlünk, a felhasználónak 5 számot kell beírnia a böngészőbe: 226.69.237.119:8080. Az emberek nem szeretik megjegyezni a számkészleteket: sokan közülünk nem emlékeznek meg kettőnél több telefonszámra. Ezért van a Domain Name Systemtalálták ki. Létrehozhatunk egy "aliast" a címünkhöz, például world-temperature.com. Ahelyett, hogy öt, nehezen megjegyezhető számból álló címet keresne, a böngésző címsorába beírhatja a domain nevünket. Vannak DNS-kiszolgálók , amelyek a tartományneveket valós címekre képezik le. Például, amikor egy felhasználó beírja a codegym.cc címet egy böngészőbe, a kérése elküldésre kerül egy DNS-kiszolgálónak, amely a tényleges címmé konvertálja. 1. rész Amit tudnod kell a Spring és a JavaEE tanulása előtt - 4Ezt azért fontos megértenünk, mert alkalmazásaink domain névvel és valós címmel is hívják a távoli szolgáltatásokat. Meg kell értenünk, hogy a szolgáltatások mindkét esetben ugyanazok. Egyenlőre ennyi! Ebben a cikkben a hálózatépítés alapjait néztük meg, amelyek jól jöhetnek, amikor elkezdi megtanulni a webes programozást.Legközelebb megvizsgáljuk, mi is az a kliens-szerver architektúra, és miért olyan fontos megérteni. 2. rész. Beszéljünk egy kicsit a szoftver architektúráról 3. rész. HTTP/HTTPS 4. rész. A Maven alapjai 5. rész. Szervletek és a Java Servlet API. Egyszerű webalkalmazás írása 6. rész. Szervlet konténerek 7. rész Az MVC (Model-View-Controller) minta bemutatása