Úvod do Jooby

1. Prehľad

Jooby je škálovateľný a rýchly mikro webový rámec postavený na vrchole najpoužívanejších Webové servery NIO. Je to veľmi priame a modulárne, jasne navrhnuté pre webovú architektúru modernej doby. Dodáva sa s podporou pre Javascript a Kotlin tiež.

Predvolene, Jooby prichádza s veľkou podporou pre Netty, Jetty a Undertow.

V tomto článku sa dozvieme viac Jooby štruktúra projektu a ako zostaviť jednoduchú webovú aplikáciu pomocou Jooby.

2. Architektúra aplikácie

Jednoduchý Jooby štruktúra aplikácie bude vyzerať nižšie:

├── verejné | └── welcome.html ├── conf | ├── application.conf | └── logback.xml └── src | ├── hlavné | | └── java | | └── com | | └── baeldung | | └── jooby | | └── App.java | └── test | └── java | └── com | └── baeldung | └── jooby | └── AppTest.java ├── pom.xml

Tu je potrebné poznamenať, že v verejné do adresára môžeme vložiť statické súbory ako css / js / html atď konf adresár, môžeme vložiť akýkoľvek konfiguračný súbor, ktorý aplikácia potrebuje logback.xml alebo application.conf atď.

3. Maven závislosť

Môžeme vytvoriť jednoduchý Jooby aplikácie pridaním nasledujúcej závislosti do našej pom.xml:

 org.jooby jooby-netty 1.1.3 

Ak si chceme vybrať Mólo alebo Spodný protiprúd môžeme použiť nasledujúcu závislosť:

 org.jooby jooby-mólo 1.1.3 org.jooby jooby-mólo 1.1.3 

Môžete skontrolovať najnovšiu verziu Jooby projekt v centrálnom úložisku Maven.

Jooby má tiež vyhradený archetyp Maven. Môžeme ho použiť na vytvorenie ukážkového projektu so všetkými vopred pripravenými potrebnými závislosťami.

Na vygenerovanie vzorového projektu môžeme použiť nasledujúci skript:

archív typu mvn: generate -B -DgroupId = com.baeldung.jooby -DartifactId = jooby -Dversion = 1,0 -DarchetypeArtifactId = jooby-archetype -DarchetypeGroupId = org.jooby -DarchetypeVersion = 1.1.3

4. Vytvorenie aplikácie

4.1. Spustenie servera

Na spustenie zabudovaného servera musíme použiť nasledujúci útržok kódu:

public class App extends Jooby {public static void main (String [] args) {run (App :: new, args); }}

Po spustení bude server bežať ďalej predvolený port8080.

Môžeme tiež nakonfigurovať server typu back-end s vlastným portom a vlastným HTTPS prístav:

{port (8081); securePort (8443); }

4.2. Implementácia smerovača

Je veľmi ľahké vytvoriť smerovač založený na ceste Jooby. Napríklad môžeme vytvoriť smerovač pre cestu ‘/Prihlásiť sa„Nasledujúcim spôsobom:

{get ("/ login", () -> "Dobrý deň z Baeldungu"); }

Podobným spôsobom, ak chceme zvládnuť aj iné HTTP metódy ako POST, PUT atď., ktoré môžeme použiť pod fragmentom kódu:

{post ("/ save", req -> {Mutant token = req.param ("token"); return token.intValue ();}); }

Tu načítame token názvu parametra požiadavky z požiadavky. V predvolenom nastavení sú všetky parametre požiadavky obsadené typom Jooby‘S Mutant Dátový typ. Na základe očakávania ho môžeme previesť na akýkoľvek podporovaný primitívny údajový typ.

Môžeme skontrolovať akýkoľvek parameter adresy URL nasledujúcim spôsobom:

{get ("/ user / {id}", req -> "Hello user:" + req.param ("id"). value ()); get ("/ user /: id", req -> "Dobrý deň, užívateľ:" + req.param ("id"). hodnota ()); }

Môžeme použiť čokoľvek z vyššie uvedeného. Je tiež možné nájsť parametre začínajúce pevným obsahom. Napríklad môžeme nájsť parameter adresy URL začínajúci na „uid: ' nasledujúcim spôsobom:

{get ("/ uid: {id}", req -> "Dobrý deň, používateľ s id: uid" + req.param ("id"). value ()); }

4.3. Implementuje sa radič vzorov MVC

Pre podnikovú aplikáciu Jooby prichádza s MVC API podobne ako akékoľvek iné MVC rámce ako Spring MVC.

Napríklad môžeme zvládnuť cestu zvanú ‘/Ahoj‘ :

@Path ("/ hello") verejná trieda GetController {@GET public String hello () {návrat "Hello Baeldung"; }}

Veľmi podobne môžeme vytvoriť obslužný program, pomocou ktorého zvládneme ďalšie metódy HTTP @POST, @PUT, @DELETEanotácia atď.

4.4. Zaobchádzanie so statickým obsahom

Ak chceme poskytovať akýkoľvek statický obsah, ako je HTML, Javascript, CSS, obrázok atď., Musíme tento súbor umiestniť do priečinka verejné adresár.

Po umiestnení môžeme zo smerovača namapovať ľubovoľnú adresu URL na tieto zdroje:

{assets ("/ employee", "form.html"); }

4.5. Manipulačný formulár

Joobyho Žiadosť rozhranie štandardne spracováva akýkoľvek objekt formulára bez použitia manuálneho odlievania typu.

Predpokladajme, že je potrebné zadať údaje o zamestnancovi prostredníctvom formulára. V prvom kroku musíme vytvoriť Zamestnanec objekt fazule, ktorý použijeme na uchovanie údajov:

public class Employee {String id; Názov reťazca; Reťazcový e-mail; // štandardné konštruktory, getre a setre}

Teraz musíme vytvoriť stránku na vytvorenie formulára:

Ďalej vytvoríme obslužný program príspevku, ktorý bude adresovať tento formulár a načítať odoslané údaje:

post ("/ submitForm", req -> {Employee employee = req.params (Employee.class); // ... return "empoyee data úspěšně uložená";});

Tu je potrebné poznamenať, že musíme vyhlásiť formulár enctype ako application / x-www-form-urlencoded na podporu dynamickej väzby formulárov.

Autor: Request.file (názov súboru reťazca) môžeme načítať nahraný súbor:

post ("/ upload", req -> {Upload upload = req.file ("file"); // ... upload.close ();});

4.6. Implementácia filtra

Von z krabice, Jooby poskytuje flexibilitu pri definovaní globálnych filtrov aj filtrov na základe cesty.

Implementuje sa filter v Jooby je od tej doby trochu zložité musíme nakonfigurovať cestu URL dvakrát, raz pre filter a znova pre obslužnú rutinu.

Napríklad, ak musíme implementovať filter pre cestu URL s názvom „/ filter ', na tejto ceste musíme explicitne implementovať filter:

get ("/ filter", (req, resp, chain) -> {// ... chain.next (req, resp);});

Syntax je veľmi podobná Servlet filter. Je možné obmedziť požiadavku a poslať späť odpoveď v samotnom filtri volaním Response.send (výsledok výsledku) metóda.

Po implementácii filtra musíme implementovať obslužnú rutinu žiadosti:

get ("/ filter", (req, resp) -> {resp.send ("odpoveď filtra");});

4.7. Session

Jooby prichádza s dvoma typmi implementácie relácie; v pamäti a na základe súborov cookie.

Implementácia správy relácie v pamäti je dosť jednoduchá. Máme možnosti vybrať si ktorékoľvek z vysoko výkonných obchodov s reláciami, ktoré sú k dispozícii v Jooby Páči sa mi to EhCache, Guava, HazleCast, Cassandra, Couchbase, Redis, MongoDB, a Memcached.

Napríklad na implementáciu úložiska relácie založeného na Redis je potrebné pridať nasledujúcu závislosť Maven:

 org.jooby jooby-jedis 1.1.3 

Teraz môžeme pomocou nižšie uvedeného úryvku kódu povoliť správu relácie:

{use (new Redis ()); session (RedisSessionStore.class); get ("/ session", req -> {Session session = req.session (); session.set ("token", "value"); return session.get ("token"). value ();}); }

Tu je potrebné poznamenať, že môžeme konfigurovať Redis adresa URL ako „Db“ majetok v application.conf.

Ak chcete povoliť správu relácií založených na súboroch cookie, musíme to deklarovať cookieSession (). Ak je zvolený prístup založený na cookies, musíme to deklarovať prihláška.tajne majetok v application.conf spis. Pretože každý súbor cookie, ktorý bude podpísaný, bude podpísaný týmto tajným kľúčom, je vždy vhodné použiť ako tajný kľúč fragment dlhého náhodného reťazca.

V prístupe založenom na pamäti aj na súboroch cookie musíme musieť deklarovať potrebný konfiguračný parameter v application.conf súboru, inak aplikácia vyhodí súbor IllegalStateException pri štarte.

5. Testovanie

Testovanie trasy MVC je skutočne jednoduché, pretože trasa je viazaná na stratégiu pre určitú triedu. Toto uľahčuje vykonávanie jednotkových testov na všetkých trasách.

Napríklad môžeme rýchlo vytvoriť testovací prípad pre predvolenú adresu URL:

public class AppTest {@ClassRule public static JoobyRule app = new JoobyRule (new App ()); @ Test public void given_defaultUrl_expect_fixedString () {get ("/"). Then (). AssertThat (). Body (equalTo ("Hello World!")) .StatusCode (200) .contentType ("text / html; charset = UTF) -8 "); }}

Tu je potrebné poznamenať, že pomocou @ClassRule anotácia vytvorí pre všetky testovacie prípady iba jednu inštanciu servera. Ak potrebujeme vytvoriť samostatné inštancie serverov pre všetky testovacie prípady, musíme použiť @ Pravidlo anotácia bez statického modifikátora.

Môžeme tiež použiť Joobyho MockRouter cestu otestovať rovnakým spôsobom:

@ Test public void given_defaultUrl_with_mockrouter_expect_fixedString () hodí Throwable {Výsledok reťazca = nový MockRouter (nová aplikácia ()). Get ("/"); assertEquals ("Hello World!", výsledok); }

6. Záver

V tomto návode sme preskúmali Jooby projektu a jeho základnej funkčnosti.

Celý zdrojový kód je ako vždy k dispozícii na GitHub.


$config[zx-auto] not found$config[zx-overlay] not found