Programovanie

Čo sú servlety Java? Vyžiadajte si spracovanie webových aplikácií Java

Vybavovanie žiadostí je základným kameňom vývoja webových aplikácií Java. Aby bolo možné odpovedať na požiadavky zo siete, musí webová aplikácia Java najskôr určiť, aký kód bude odpovedať na adresu URL požiadavky, a potom zaradiť odpoveď. Každý technologický zásobník má spôsob, ako dosiahnuť spracovanie požiadavky - odpoveď. V Jave používame servlety (a Java Servlet API) na tento účel. Predstavte si servlet ako malý server, ktorého úlohou je prijímať požiadavky a vydávať odpovede.

URL vs koncový bod

Ako používateľ internetu poznáte vo svojom prehliadači adresy URL ako adresu webovej stránky. Ako vývojár môžete tiež poznať adresy URL ako koncové body webových služieb. A URL (uniform resource locator) je štandardný spôsob, ako opísať a lokalizovať internetové zdroje pomocou textu. Termín koncový bod označuje adresu URL označujúcu webovú službu. Podmienky koncový bod a URL sú často zameniteľné, aj keď odkazujú na rôzne domény použitia.

Softvér ako vrstvy

Ako som vysvetlil vo svojom úvode do prostredia Java Runtime Environment, môžeme softvér prezerať ako sériu vrstiev. Každá vrstva v softvérovom systéme obsahuje určité schopnosti, ktoré sú vyžadované vrstvami nad ňou. Napríklad hardvérová vrstva leží pod vrstvou firmvéru a podporuje jej funkčnosť. Na spustenie operačného systému je rovnako potrebná vrstva firmvéru (BIOS v počítači PC alebo EFI v systéme Mac). Obrázok 1 zobrazuje tieto tri komponenty vo vrstvenom diagrame.

Matthew Tyson

Môžete sa tiež pozrieť na softvérový systém ako na sériu nádob, kde spodné vrstvy fungujú ako nádoby pre vyššie. Každá vrstva funguje ako a kontext pre spustenie ďalšej úrovne funkčnosti: hardvér obsahuje firmvér a firmvér obsahuje operačný systém.

Java na strane servera

A na strane servera Java application is one of a wide class of applications that serve as network endpoints, receiving HTTP requests from a given URL and send back data in an interchange format like HMTL or JSON. Java na strane servera pozostáva zo štandardizovaných serverov Java a technológií na interakciu s týmito servermi. Rozhranie Java Servlet API je štandard používaný na interakciu so serverom Java.

Servery Java a JVM

V systémoch založených na prostredí Java obsahuje operačný systém (OS) JVM, ktorý poskytuje konzistentné prostredie pre beh aplikácií Java. Na JVM je umiestnený server Java. Rovnako ako JVM je sprostredkovateľom medzi OS a vašou aplikáciou Java, poskytuje server Java konzistentný a efektívny prístup k sieťovým a spracovateľským schopnostiam operačného systému. Vo vnútri servera beží aplikácia Java, ktorá na prístup k schopnostiam servera používa API Java Servlet.

Obrázok 2 zobrazuje softvérový zásobník pre Java na strane servera.

Matthew Tyson

Špecifikácia Java Servlet

Špecifikácia Java Servlet poskytuje základnú definíciu servera Java a súvisiacich komponentov. Definuje, ako bude server odosielať požiadavky a odpovede počas sieťových interakcií cez HTTP. Všetky servery Java musia byť kompatibilné so špecifikáciou Java Servlet. Väčšina serverov Java je dnes kompatibilná so serverom Servlet 4.0.

Servlet 4.0

Každá verzia špecifikácie Java Servlet prináša nové funkcie. Servlet 4.0 obsahuje podporu protokolu HTTP / 2 a jeho mechanizmu push servera. Funkcia push servera umožňuje serveru načítať aktíva vyžadované webovou stránkou skôr, ako čakať na konkrétnu požiadavku. Špecifikácia Servlet 4.0 tiež obsahuje schopnosť objavovať mapovania URL za behu, funkcia známa ako runtime objav.

Eclipse Enterprise pre Javu

Servlet 4.0 je súčasťou iniciatívy open source EE4J (Eclipse Enterprise for Java), ktorá obsahuje navrhovanú náhradu za JCP.

Pre praktické pochopenie toho, ako funguje špecifikácia servletu, zvážte článok, ktorý práve čítate. Niekde v útrobách infraštruktúry JavaWorld bol tento článok naformátovaný a predložený na zverejnenie. Bola mu pridelená adresa URL, smerovaná cez sieť a doručená na server. Server spojil artefakt (článok) s adresou URL a určil, že keď na túto adresu URL dorazí požiadavka GET, bude tento článok slúžiť späť ako HTML.

Pri vytváraní webovej aplikácie Java vytvárate softvér, ktorý beží vo vnútri servera Java. Aplikácia využíva zariadenia poskytované kontextom servera a jedným z týchto zariadení je Servlet API. Z tohto dôvodu sa serveru Java, ktorý implementuje špecifikáciu servletu, niekedy hovorí a nádoba na servlet.

Na vytvorenie servletu implementujete Servlet rozhranie a nasadiť ho do kontajnera servletov. Obrázok 3 zobrazuje, ako sa vaša aplikácia spolieha na servlet.

Matthew Tyson

Písanie servletov s Tomcatom

Teraz, keď máte koncepčný prehľad, poďme k písaniu servletu Java.

Prvá vec, ktorú budete potrebovať, je servletový kontajner, inak známy ako aplikačný server Java. Tomcat a Jetty sú dva z najobľúbenejších kontajnerov servletov. Použijeme Tomcat, pretože je to jeden z najdlhšie fungujúcich aplikačných serverov pre Javu. Tomcat je zadarmo a obsahuje minimálne množstvo zvonov a píšťaliek, vďaka čomu bude náš príklad jednoduchý. (Mimochodom, „zvončeky a píšťalky“ je odborný výraz.)

Stiahnite a nainštalujte Tomcat

Ak ešte nemáte Tomcat, začnite otvorením stránky na stiahnutie Tomcat. Tam si môžete vybrať buď inštalátor systému Windows, alebo najvhodnejší súbor ZIP pre váš počítač (napríklad sťahujem 64-bitový zip systému Windows).

To je všetko: práve ste do svojho operačného systému pridali vrstvu servera Java!

Skontrolujte, či je Tomcat spustený

Skôr ako pôjdeme ďalej, uistite sa, že môžete spustiť Tomcat. Spustite službu Windows alebo spustite startup.sh alebo startup.bat súbor z príkazového riadku.

Ak teraz otvoríte webový prehľadávač a prejdete na localhost: 8080, mala by vás pozdraviť nasledujúca obrazovka:

Matthew Tyson

Ak narazíte na problémy so spustením Tomcat, môžete vyhľadať dokumentáciu Tomcat pre riešenie problémov.

Spustite príklad servletu Tomcat

Teraz sa pozrime na servlet Java. Tomcat pohodlne uviedol niekoľko jednoduchých príkladov.

Klikni na Príklady odkaz, ktorý vidíte v Rýchly štart vývojára sekcia uvítacej stránky Tomcat. Akonáhle ste tam, kliknite na Príklady servletov odkaz.

Teraz môžete vidieť jednoduchý servlet v akcii kliknutím na ikonu Ahoj svet vzorky Vykonať odkaz. Týmto sa váš prehliadač presunie na stránku // localhost: 8080 / examples / servlets / servlet / HelloWorldExample URL, na ktorom uvidíte pozdravy programátora za celý rok.

Prezeranie zdrojového kódu servletu

Kliknite na šípku späť vo svojom prehliadači a potom kliknite na ikonu zdroj odkaz na aplikáciu HelloWorld. Zdroj je uvedený v zozname 1.

Výpis 1. Zdrojový kód pre príklad HelloWorld

 import java.io. *; import javax.servlet. *; import javax.servlet.http. *; public class HelloWorld extends HttpServlet {public void doGet (HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {response.setContentType ("text / html"); PrintWriter out = response.getWriter (); out.println (""); out.println (""); out.println („Hello World!“); out.println (""); out.println (""); out.println (""); out.println (""); out.println (""); }} 

Tento veľmi jednoduchý zoznam kódov obsahuje základné komponenty servletu Java. Zvážme to postupne.

Prvý riadok volá štandardné importy Javy. Potom program definuje novú triedu, ktorá rozširuje HttpServlet trieda. To je kritické, pretože servlety musieť implementovať Servlet rozhranie, aby bežalo vo vnútri servletového kontajnera.

Ďalej HelloWorld trieda definuje metódu nazvanú doGet (). Toto je štandardná metóda na servlete: hovorí serveru, aby smeroval ZÍSKAŤ HTTP žiadosti o túto metódu. Ostatné metódy HTTP, napríklad POST, sa spracúvajú podobne pomenovanými metódami, ako napríklad doPost.

Všimnite si, že to doGet () má dva parametre: (Požiadavka HttpServletRequest, odpoveď HttpServletResponse). Tieto dva objekty predstavujú požiadavku a odpoveď. Poskytujú prístup ku všetkému, čo váš kód potrebuje na vybavenie žiadosti a vydanie odpovede. V HelloWorld.doGet metóda servletu, napríklad odpoveď objekt slúži na informovanie servera, akú hlavičku typu obsahu má vydať. V tomto prípade je to tak response.setContentType ("text / html");.

Na záver program získa z odpovede objekt Java Writer response.getWriter (). The Spisovateľ sa potom použije na vytvorenie jednoduchej odpovede HTML na návrat do prehľadávača.

Mapovanie URL

Štruktúra a tok kódu v zozname 1 sú pomerne intuitívne, je tu však zjavné vynechanie. Ako server vie priradiť // localhost: 8080 / examples / servlets / servlet / HelloWorldExample URL na HelloWorld.doGet metóda?

Odpoveď na túto záhadu nájdete v metaúdajoch aplikácie. Každá webová aplikácia Java obsahuje štandardný súbor metadát, tzv web.xml, ktorý povie serveru, ako má mapovať adresy URL na servlety.

Čo sú metadáta?

Metaúdaje sú akékoľvek informácie, ktoré sa používajú na riadenie činnosti softvéru zvonka samotného softvéru.

V ukážkových aplikáciách Tomcat sa web.xml sa nachádza na \ apache-tomcat-9.0.11 \ webapps \ examples \ WEB-INF \ web.xml. The \ WEB-INF \ web.xml je štandardné umiestnenie súboru metadát pre servlety. Ak otvoríte tento súbor, uvidíte, ako je nakonfigurovaný server.

Skrátene web.xml v zozname 2 obsahuje iba informácie, ktoré potrebujeme pre našu diskusiu.

Zoznam 2. Zdrojový kód pre príklad Tomcat HelloWorld

     HelloWorldExample HelloWorldExample HelloWorldExample / servlety / servlet / HelloWorldExample 

Výpis 2 zobrazuje typickú hlavičku súboru XML odkazujúcu na schému deskriptora webovej aplikácie Java. Nasledujú dva záznamy: a.

Výzva na priradí logický názov, HelloWorldExample, do HelloWorldExample triedy, cez polia a.

Výzva na priraďuje tento logický názov k hodnotu, čím sa kód priradí k adrese URL.

Všimnite si, že Toto pole podporuje zástupné znaky, aby bolo možné spracovať rôzne flexibilné mapovania adries URL.

Ďalšie možnosti servletu

Okrem mapovania adries URL poskytujú servlety ďalšie možnosti filtrovania a autentifikácie. Filtre - sa používajú na spracovanie žiadostí a - Overenie sa používa na priradenie jednoduchých používateľov a rol k vzorom URL. Špecifikácia JavaServer Pages (JSP) poskytuje podporu pre generovanie HTML oveľa výkonnejším spôsobom.

Záver

Tento článok predstavuje koncepčný prehľad servletov Java vrátane spracovania požiadaviek a odpovedí na URL vo vnútri servera Java. Pochopenie týchto základných prvkov Java na strane servera vám pomôže integrovať pokročilejšie koncepty, ako je serverový push a runtime objav mapovaní URL, ktoré sú v Servlete 4.0 nové.

Tento príbeh „Čo sú servlety Java? Vybavenie žiadosti pre webové aplikácie Java“ pôvodne publikoval server JavaWorld.

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