Programování

Co jsou servlety Java? Zpracování žádosti o webové aplikace Java

Zpracování požadavků je chlebem při vývoji webových aplikací Java. Aby bylo možné reagovat na požadavky ze sítě, musí webová aplikace Java nejprve určit, jaký kód bude reagovat na adresu URL požadavku, a poté zařadit odpověď. Každý technologický zásobník má způsob, jak dosáhnout zpracování požadavku na odpověď. V Javě používáme servlety (a rozhraní Java Servlet API) pro tento účel. Představte si servlet jako malý server, jehož úkolem je přijímat požadavky a vydávat odpovědi.

URL vs koncový bod

Jako uživatel internetu znáte adresy URL jako adresu webových stránek ve svém prohlížeči. Jako vývojář můžete také znát adresy URL jako koncové body pro webové služby. A URL (uniform resource locator) je standardní způsob, jak popsat a lokalizovat internetové zdroje pomocí textu. Termín koncový bod odkazuje na URL označující webovou službu. Podmínky koncový bod a URL jsou často používány zaměnitelně, i když odkazují na různé domény použití.

Software jako vrstvy

Jak jsem vysvětlil ve svém úvodu do prostředí Java Runtime Environment, můžeme software zobrazit jako řadu vrstev. Každá vrstva v softwarovém systému obsahuje určité funkce, které jsou vyžadovány vrstvami nad ní. Například hardwarová vrstva sedí pod vrstvou firmwaru a podporuje její funkčnost. Podobně je pro spuštění operačního systému nutná vrstva firmwaru (BIOS na PC nebo EFI na Macu). Obrázek 1 ukazuje tyto tři komponenty ve vrstveném diagramu.

Matthew Tyson

Můžete se také podívat na softwarový systém jako na sérii kontejnery, kde spodní vrstvy fungují jako kontejnery pro ty vyšší. Každá vrstva funguje jako kontext pro spuštění další úrovně funkčnosti: hardware obsahuje firmware a firmware obsahuje operační systém.

Java na straně serveru

A na straně serveru 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 straně serveru se skládá ze standardizovaných serverů Java a technologií pro interakci s těmito servery. Rozhraní Java Servlet API je standard používaný k interakci se serverem Java.

Servery Java a JVM

V systémech založených na prostředí Java obsahuje operační systém (OS) prostředí JVM, které poskytuje konzistentní prostředí pro spouštění aplikací Java. Na JVM je umístěn server Java. Stejně jako JVM je prostředníkem mezi operačním systémem a vaší aplikací Java, poskytuje server Java konzistentní a efektivní přístup k funkcím sítě a zpracování operačního systému. Uvnitř serveru běží aplikace Java, která k přístupu k možnostem serveru používá rozhraní API Java Servlet.

Obrázek 2 ukazuje softwarový zásobník pro Javu na straně serveru.

Matthew Tyson

Specifikace servletu Java

Specifikace Java Servlet poskytuje základní definici serveru Java a souvisejících komponent. Definuje, jak bude server odesílat požadavky a odpovědi během síťových interakcí přes HTTP. Všechny servery Java musí být kompatibilní se specifikací Java Servlet. Většina serverů Java je dnes kompatibilní se servletem 4.0.

Servlet 4.0

Každá verze specifikace Java Servlet přináší nové funkce. Servlet 4.0 zahrnuje podporu protokolu HTTP / 2 a jeho mechanismu push serveru. Serverový push umožňuje serveru přednačíst aktiva vyžadovaná webovou stránkou, místo aby čekal na konkrétní požadavek. Specifikace Servlet 4.0 zahrnuje také schopnost objevit mapování URL za běhu, což je funkce známá jako runtime discovery.

Eclipse Enterprise pro Javu

Servlet 4.0 je součástí iniciativy open source EE4J (Eclipse Enterprise for Java), která zahrnuje navrhovanou náhradu za JCP.

Pro praktické pochopení fungování specifikace Servletu zvažte článek, který právě čtete. Někde v útrobách infrastruktury JavaWorld byl tento článek naformátován a odeslán ke zveřejnění. Bylo mu přiděleno URL, směrováno sítí a dorazilo na server. Server propojil artefakt (článek) s adresou URL a zjistil, že když na tuto adresu URL dorazí požadavek GET, bude tento článek sloužit jako HTML.

Když vytváříte webovou aplikaci Java, vytváříte software, který běží uvnitř serveru Java. Aplikace využívá zařízení poskytované kontextem serveru a jedním z těchto zařízení je Servlet API. Z tohoto důvodu se serveru Java, který implementuje specifikaci Servletu, někdy říká a servletový kontejner.

Chcete-li vytvořit servlet, implementujete Servlet rozhraní a nasadit jej do kontejneru servletů Obrázek 3 ukazuje, jak se vaše aplikace spoléhá na servlet.

Matthew Tyson

Psaní servletů s Tomcatem

Nyní, když máte koncepční přehled, pojďme se pustit do psaní Java servletu.

První věc, kterou budete potřebovat, je kontejner servletu, jinak známý jako aplikační server Java. Tomcat a Jetty jsou dva z nejoblíbenějších servletových kontejnerů. Použijeme Tomcat, protože je to jeden z nejdelších aplikačních serverů pro Javu. Tomcat je zdarma a obsahuje minimální množství zvonků a píšťal, což nám v našem příkladu zjednoduší. (Mimochodem „zvonky a píšťalky“ je technický termín.)

Stáhněte a nainstalujte Tomcat

Pokud ještě nemáte Tomcat, začněte otevřením stránky ke stažení Tomcat. Zde můžete vybrat buď instalační program systému Windows, nebo nejvhodnější stažení ZIP pro váš počítač (například stahuji 64bitový zip systému Windows).

A je to: právě jste do svého operačního systému přidali vrstvu serveru Java!

Ověřte, zda je spuštěn Tomcat

Než půjdeme dále, ujistěte se, že můžete spustit Tomcat. Spusťte službu Windows nebo spusťte startup.sh nebo startup.bat soubor z příkazového řádku.

Pokud nyní otevřete webový prohlížeč a přejdete na localhost: 8080, měla by vás uvítat následující obrazovka:

Matthew Tyson

Pokud narazíte na problémy se spuštěním Tomcatu, můžete najít řešení problémů v dokumentaci Tomcatu.

Spusťte příklad servletu Tomcat

Nyní se podívejme na servlet Java. Tomcat pohodlně zahrnul několik jednoduchých příkladů.

Klikněte na Příklady odkaz, který vidíte v Rychlý start vývojáře část uvítací stránky Tomcat. Až tam budete, klikněte na Příklady servletů odkaz.

Nyní můžete zobrazit jednoduchý Servlet v akci kliknutím na Ahoj světe Vzorky Vykonat odkaz. Tím se váš prohlížeč dostane do // localhost: 8080 / examples / servlets / servlet / HelloWorldExample URL, kde uvidíte pozdrav programátora trvajícího.

Zobrazení zdrojového kódu servletu

V prohlížeči klikněte na šipku Zpět a poté klikněte na ikonu zdroj odkaz na aplikaci HelloWorld. Zdroj je uveden v seznamu 1.

Výpis 1. Zdrojový kód pro příklad HelloWorld

 importovat java.io. *; importovat javax.servlet. *; importovat 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 velmi jednoduchý seznam kódů obsahuje základní komponenty servletu Java. Zvažme to krok za krokem.

První řádek volá standardní importy Java. Poté program definuje novou třídu, která rozšiřuje HttpServlet třída. To je zásadní, protože servlety musí implementovat Servlet rozhraní za účelem spuštění uvnitř kontejneru servletů.

Dále Ahoj světe třída definuje metodu nazvanou doGet (). Toto je standardní metoda na servletech: říká serveru, aby směroval HTTP ZÍSKAT požadavky na tuto metodu. Ostatní metody HTTP, například POST, jsou zpracovávány podobně pojmenovanými metodami, jako doPost.

Všimněte si toho doGet () má dva parametry: (Požadavek HttpServletRequest, odpověď HttpServletResponse). Tyto dva objekty představují požadavek a odpověď. Poskytují přístup ke všemu, co váš kód potřebuje k vyřízení žádosti a vydání odpovědi. V HelloWorld.doGet metoda servletu, například Odezva objekt slouží k informování serveru, jakou hlavičku typu obsahu vydat. V tomto případě je response.setContentType ("text / html");.

Nakonec program z odpovědi získá objekt Java Writer response.getWriter (). The Spisovatel se pak používá k vytvoření jednoduché odpovědi HTML pro návrat do prohlížeče.

Mapování URL

Struktura a tok kódu v seznamu 1 jsou poměrně intuitivní, ale je zde zjevné opomenutí. Jak server ví o přidružení // localhost: 8080 / examples / servlets / servlet / HelloWorldExample URL k HelloWorld.doGet metoda?

Odpověď na tuto záhadu najdete v metadatech aplikace. Každá webová aplikace Java obsahuje standardní soubor metadat, tzv web.xml, který říká serveru, jak mapovat adresy URL na servlety.

Co jsou metadata?

Meta-data jsou jakékoli informace, které se používají k řízení provozu softwaru zvenčí samotného softwaru.

V ukázkových aplikacích Tomcat je web.xml najdete na \ apache-tomcat-9.0.11 \ webapps \ examples \ WEB-INF \ web.xml. The \ WEB-INF \ web.xml je standardní umístění souboru metadat pro servlety. Pokud otevřete tento soubor, uvidíte, jak je server nakonfigurován.

Zkráceně web.xml v seznamu 2 obsahuje pouze informace, které potřebujeme pro naši diskusi.

Výpis 2. Zdrojový kód pro příklad Tomcat HelloWorld

     HelloWorldExample HelloWorldExample HelloWorldExample / servlety / servlet / HelloWorldExample 

Výpis 2 ukazuje typické záhlaví souboru XML odkazující na schéma pro deskriptor webové aplikace Java. Poté následují dvě položky: a.

Volání na přiřadí logický název, HelloWorldExample, do HelloWorldExample třídy, přes pole a.

Volání na přiřadí tento logický název souboru hodnotu, čímž přidružíte kód k URL.

Všimněte si, že pole podporuje zástupné karty, aby bylo možné zpracovat celou řadu flexibilních mapování URL.

Další možnosti servletu

Kromě mapování adres URL poskytují servlety další funkce pro filtrování a ověřování. Filtry se používají ke zpracování žádostí a ověřování se používá k přiřazení jednoduchých uživatelů a rolí vzorům URL. Specifikace JavaServer Pages (JSP) poskytuje podporu pro generování HTML mnohem výkonnějším způsobem.

Závěr

Tento článek představuje koncepční přehled servletů Java, včetně zpracování požadavků na URL a odpovědí uvnitř serveru Java. Pochopení těchto základních prvků prostředí Java na straně serveru vám pomůže integrovat pokročilejší koncepty, jako je serverový push a runtime zjišťování mapování adres URL, které jsou v Servletu 4.0 nové.

Tento příběh „Co jsou servlety Java? Zpracování požadavků na webové aplikace Java“ původně publikoval JavaWorld.

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