Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

3. diel - Úvod do architektúry MVC v Spring Boote pre Kotlin

V predchádzajúcej lekcii, Vytvorenie Spring Boot projektu v Kotline sme si založili prvý projekt. Zoznámili sme sa s prostredím a funkciou webovej stránky.

V dnešnom Spring Boot tutoriále pre Kotlin sa zoznámime s výhodami a zmyslom MVC architektúry pre webové aplikácie. Popíšeme a vysvetlíme si používané termíny.

Základnou myšlienkou MVC architektúry je oddelenie logiky od výstupu. Rieši teda problém tzv. "špagetového kódu", kedy máme v jednom súbore (triede) logické operácie a zároveň renderovanie výstupu. Súbor teda obsahuje databázové otázky, logiku (napr. operácie v Kotline) a rôzne pohádzané HTML tagy. Všetko je zamotané do seba ako špagety.

Kód sa samozrejme zle udržuje, nieto ešte rozširuje. Je zle zvýraznený, pretože si s ním IDE nevie rady, HTML nie je správne naformátovaný, strácame sa v jeho stromovej štruktúre. Našim cieľom je, aby zdrojový kód s logikou vyzeral ako zdrojový kód v Kotline a výstup vyzeral ako HTML stránka s čo najmenšou prímesou ďalšieho kódu.

Komponenty MVC architektúry

Celá webová aplikácia je rozdelená do troch komponentov, ktoré tvoria tieto tri vrstvy:
  • Model
  • View (Pohľad)
  • Controller

Z tohto rozdelenia vznikol názov tejto architektúry.

Termínu pohľad sa budeme tu vyhýbať, pretože budeme používať anglické výrazy.

Komponenty sú triedy zdedené z abstraktných tried Model, View a Controller. Poďme si jednotlivé komponenty najprv popísať.

Model

Komponenta model z MVC architektury - Spring Boot v Kotline

Model obsahuje logiku a vše, co do ní spadá. Mohou to být výpočty, databázové dotazy, validace a podobně. Model vůbec neví o výstupu. Jeho funkce spočívá v přijetí parametrů zvenku a vydání dat ven. Model neví, odkud data v parametrech přišla a ani jak budou výstupní data zformátována a vypsána.

Parametry není myšlena URL adresa, ani žádné jiné parametry od uživatele.

\--- V kurze budeme používať ORM (O bjektovo- R elačné M apovanie), v ktorom modely priamo korešpondujú s databázovými tabuľkami. Máme teda model User, Comment alebo Article. Inštancie modelov obsahujú atribúty z databázy. Napr. inštancia modelu User môže mať atribút name.
Modelu môžeme definovať inštančné metódy. Takouto metódou môže byť napríklad metóda, ktorá vypočíta vek používateľa podľa jeho dátumu narodenia.

View

komponenta pohledu z MVC architektury - Spring Boot v Kotline

View se stárá o zobrazení výstupu uživateli. Nejčastěji se jedná o HTML šablonu obsahující HTML stránku a tagy nějakého značkovacího jazyka. Tento nám pak umožňuje do šablony vkládat proměnné, případně provádět iterace (cykly) a podmínky.

Např. pohled user.html vypíše detaily o uživateli, pohled clanek.html vypíše obsah článku.

\---

Pohľadov máme mnoho, napr. pre funkcionalitu s objektom užívateľ: registration.html, login.html, profile.html a podobne. Pohľad profile.html je ale už spoločný všetkým užívateľom a sú doň posielané rôzne dáta, vždy podľa toho, koho práve zobrazujeme. Tieto dáta sú potom dosadené do HTML elementov šablóny.

Šablóny je možné vkladať do seba, aby sme sa neopakovali (šablóna s rozložením stránky, šablóna s menu a šablóna článkom).

View nie je len šablóna, ale aj zobrazovač výstupu. Obsahuje teda minimálne množstvo logiky, ktorá je pre výpis nutná (napr. kontrola, či si užívateľ vyplnil prezývku pred jej vypísaním alebo cyklus s komentármi, ktoré sa vypisujú).

View podobne ako Model vôbec nevie, odkiaľ mu dáta prišli, stará sa len o ich zobrazenie užívateľovi.

Controller

Komponenta kontroléru z architektury MVC - Spring Boot v Kotline

Controller je nyní onen chybějící prvek, který osvětlí funkčnost celé architektury. Jedná se o jakéhosi prostředníka, se kterým komunikuje uživatel, Model i View. Nejčastěji má každá entita jeden controller, máme tedy UserController, ArticleController a tak podobně.

Controller drží celý systém pohromadě a komponenty propojuje.

\---

Webová aplikácia a životný cyklus stránky

Pozrime sa na základné funkcionality webových aplikácií a životného cyklu webových stránok.

Webová aplikácia

Najväčší "boom" webových aplikácií prišiel s rozmachom internetu, kedy bolo potrebné do pôvodne statických webových stránok zaniesť dynamické prvky. A preto po nespočte slepých uličiek a omylov, sa postupom času dosiahlo to, že sa webová stránka chová úplne rovnako, ako desktopová aplikácia. Takýmto webovým stránkam sa už hovorí webová aplikácia.

Príkladom webovej aplikácie je napríklad Google Docs, online alternatíva k MS Office.

Webové aplikácie fungujú takto. Klient (napríklad počítač) sa spýta servera na určitý dokument. Na serveri beží program, ktorý dokáže vygenerovať do stránky to, čo používateľ požaduje. Stránka teda na serveri neexistuje, ale je dynamicky vytváraná podľa toho, čo používateľ potrebuje.

Technológia Spring Boot nám umožňuje takéto dynamické stránky na serveri vytvoriť.

Životný cyklus stránky

Životný cyklus začína užívateľ, ktorý zadá do prehliadača adresu webu a parametre, ktorými nám oznámi, ktorú podstránku si želá zobraziť. Napr. budeme chcieť zobraziť detail užívateľa s id 15. URL adresa by bola nasledujúca:
http://www.domena.cz/user/detail/15

Požiadavka ako prvá zachytí tzv. router. Ten podľa parametrov pozná, že voláme UserController. UserController podľa parametrov detail a 15 pozná, že voláme akciu (metódu) Detail, ktorá prijíma parameter 15. Akcia Detail zavolá model, ktorý používateľa vyhľadá v databáze a vráti jeho údaje. Ďalej zavolá ďalšiu metódu modelu, ktorá napr. vypočíta vek používateľa. Tieto údaje si controller ukladá do premenných. Nakoniec vygeneruje view, do ktorého odovzdá premenné s príslušnými dátami.

Controller teda poslúchol užívateľa, obstaral podľa parametrov dotazu dáta od Modelu a odovzdal ich View.

Celú situáciu môžeme znázorniť diagramom:

MVC architektúra - Spring Boot v Kotline

Získali sme teda oddelenie logiky od výstupu, view sú ako HTML súbory, modely ako triedy v Kotline. Dosiahli sme prehľadnosť kódu, ktorý je logicky rozčlenený.

MVC architektúra nám uľahčuje aj myslenie pri vývoji projektu. Logiku píšeme do Modelu, formátovanie a štylovanie výstupu riešime vo View, to čo užívateľ chce zisťujeme z parametrov v Controlleri. 3 rôzne problémy na 3 rôznych miestach, oddelené tak, aby do seba nezasahovali a nerobili nám vývoj zložitejší.

V ďalšej lekcii, Mapping (routing) v Kotline Spring Boot , si vytvoríme prvú webovú aplikáciu s využitím architektúry MVC. Bude vedieť vygenerovať náhodné číslo, pozdraví používateľa v jeho mene a tiež sa naučíme používať mapping.


 

Predchádzajúci článok
Vytvorenie Spring Boot projektu v Kotline
Všetky články v sekcii
Spring Boot v Kotline
Preskočiť článok
(neodporúčame)
Mapping (routing) v Kotline Spring Boot
Článok pre vás napísal Vašek Doškář
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Autor pracuje jako pedagog v oblasti elektroniky, elektrotechniky a programování. Rád tvoří appky všeho druhu. Má přehled v jazycích C#, Java, Kotlin, Javascript, Python a Rust
Aktivity