Java Servlet Průvodce pro začátečníky

Java Servlet - program na straně serveru napsaný na stejném programovacím jazykem, který klient obdrží signál a odešle odpověď zpět k němu. To je klíčovým prvkem, který tvoří typické Java EE, s výjimkou JSP, EJB, XML a souvisejících technologií. Aplikace může být zabaleny v souboru WAR (Web AR pažitkovou) pro nasazení na webový server. Server, který může spustit servlet Java, se nazývá kontejner. Program, který běží na takovém serveru, může vytvářet dynamické webové stránky.

Java Servlet: Základy

Nejslavnějšími a nejrozšířenějšími jsou kontejnery Tomcat a JBoss. Technicky servlet - to je normální Java třídy, která má příponu pro obecné klient-server protokol nebo HTTP. V praxi se používá pro zpracování žádostí prostřednictvím redefinice HttpServlet GET a POST, resp. Kontejner Java Servlet poskytuje Http.ServletRequest a Http.ServletResponse - zařízení, které působí v rámci „výzva-odpověď A obvykle používá ve spojení s JSP pro generování dynamického obsahu


Typický modelů scénáře:..
  • JSP představující uživatelům zadávání dat
  • servlet přijímá vstupy, je zpracuje a odešle odpověď
  • Pro kvalitní práci se používá speciální filtry
  • Java servlet filtry -... je připojen Java komponenty používané k zachycení a zpracování dotazů před odesláním do servletů a idpovidi po svém kódu, a před kontejneru odešle odpověď klientovi Běžné úkoly prováděné s filtry:
  • .Registrace parametrů dotazu pro registraci souborů.
  • Ověřování a povolení žádostí o zdroje.
  • Před odesláním do servletu zformátujte tělo dotazu nebo hlavičky.
  • Komprese dat odpovědí zaslaných klientovi.
  • Změna odpovědi a přidání některých souborů cookie.
  • Informace o hlavičce Java Servlet.
  • Filtry jsou připojeny a konfigurovány v souboru deskriptoru nasazení (web.xml). Servery a filtry se navzájem neznají, takže můžete přidat nebo odebrat filtr jednoduchým editováním web.xml. Je povoleno mít několik filtrů pro jeden zdroj nebo vytvořit řetězec filtrů pro web.xml nebo spustit filtry Java Servlet implementací rozhraní javax.servlet.Filter.


    Hlavní funkce Servlet

    Požadavky na paralelní server jsou streamovány a poskytují důležitý webový multi-threading a paralelismus. Klíčové vlastnosti:
  • Přenositelnost. Vzhledem k tomu, že Java je nezávislé na platformě, je tomu u servletů. Můžete jej například vytvořit v operačním systému Windows, aby jej mohli vývojáři GlassFish použít jako webový server a spustit jej na libovolném jiném operačním systému, jako je Unix, Linux a webový server apache Java Servlet. Tato funkce je přenosná a je to její hlavní výhoda oproti CGI.
  • Efektivita a škálovatelnost. Jakmile je Servlet nasazen a stažen na serveru, může okamžitě začít spouštět požadavky klientů. Říká se to světelným tokem, takže je možné několik funkcí naplnit současněmultithreading Java. Na rozdíl od CGI, kde server iniciuje nový proces pro každou žádost klienta.
  • Spolehlivost. Nasledováním nejlepších funkcí Java, jako je sběr odpadků, správa výjimek, správce zabezpečení Java a další, je méně náchylná k problémům s řízením a únikům paměti. Díky tomu je vývoj aplikace bezpečný a bezchybný.
  • Potřeba používat dynamické webové stránky

    Existuje mnoho důvodů, proč by podnik chtěl vytvořit dynamické webové stránky "on-the-fly", například když se data na webu často mění. Zprávy a meteorologické stránky se obvykle spoléhají na CGI, aby udrželi čerstvý obsah, který nevyžaduje neustálou pozornost od vývojářů. Webové stránky elektronického obchodování, které uvádějí aktuální ceny a úrovně zásob, využívají CGI k tomu, aby získali obsah na požádání a dostávali jej z interní infrastruktury společnosti.
    Mnoho uživatelů má zkušenosti s používáním technologie Java pro vytváření webových služeb založených na CGI, ale Java Servlets jsou efektivnější, výkonnější, jednodušší a levnější než tradiční alternativy CGI. Výhody Java servletů:
  • Účinnost. V tradiční CGI každý požadavek HTTP spouští nový proces CGI. Dokonce i v případě, že je jeho kód dokonale implementován, často dochází k značným nákladům, a to nejen při zahájení procesu, ale také během jeho provádění. Při použití servletů zůstává JVM v paměti a každá žádost zpracovává proud Java. Jako příklad Java Servlet, pokud v tradičním modelu CGI existuje řada souběžných dotazů X, znamená tože kód programu je vložen do paměti X krát. Stává se přetížením na webovém serveru. V prostředí servletu však existují proudy X, kde je spuštěna pouze jedna kopie jeho třídy. Výsledkem je zvýšená efektivita a škálovatelnost na více platformách.
  • Pohodlí. Při používání programu nemá smysl naučit se nový jazyk, například Perl, pouze pro provádění funkcí CGI. Servlety navíc mají velkou infrastrukturu pro mnoho úkolů HTML, což výrazně zrychluje vývojový proces.
  • Napájení - bohužel tradiční CGI skripty nechávají hodně žádoucí. Například jejich běžné programy nemohou mluvit přímo s webovými servery, což znamená, že potřebujete vytvořit celé rozhraní. Servlets mohou komunikovat přímo s webovými servery zjednodušením operací vyžadujících přímý přístup do datových skladů. Jsou také jedinečné, protože si mohou vyměňovat data s jinými servlety a udržovat informace mezi žádostmi, takže sledování relací je velmi snadné.
  • Přenosnost Java se rozšiřuje přímo na servlety. Ve skutečnosti téměř každý hlavní webový server, který právě používáte, podporuje Java Servlets buď přímo, nebo prostřednictvím modulu.
  • Ekonomika. Z pohledu vývoje je implementace servletů mnohem levnější než jiné možnosti, které vyžadují, aby uživatelsky definované kódování fungovalo správně s webovými servery. Přesměrování Java Servlet je připraveno k práci a může minimalizovat náklady na podnikání, aniž bychom obětovali výhody dynamickéhoobsahu.
  • Vytvoření struktury adresářů

    Chcete-li začít, vytvořte následující strukturu adresářů.
    Kde je ve složce:
  • Nasazení - umístěte vytvořený soubor.
  • Src - Umístěte zdrojové soubory balíčku Java net.codejava.servlet.
  • WebContent - Uložení stránek JSP a dalších webových zdrojů.
  • WebContent WEB-INF - je nainstalován deskriptor web.xml.
  • WebContent WEB-INF - Kompilované třídy.
  • Dále vytvořte zdrojový soubor s názvem Java QuickServlet.java v adresáři src net codejava servlet s následujícím kódem.
    Tento servlet volá několik metod z HttpServlet:
  • init () - volá metodu při přístupu k prvnímu klientovi. Obvykle se zde zadává inicializační kód.
  • doGet () - funguje pokaždé, když je požadavek HTTP GET.
  • servletový představuje dva prvky:
  • HttpServletRequest - objekt zábaly všech hlaviček HTTP-požaduje získat kontrolu nad parametry GET /POST a dalších HTTP hlavičky odeslané klienty prostřednictvím metody getParameter () a (getHeader ).
  • ​​
  • HttpServletResponse - slouží k reakci na požadavek HTTP, provádí konfiguraci záhlaví odpovědí a odešle uživateli obsah HTML. Metoda doGet () odešle jednoduchý kód HTML, který vysílá zprávu, například "Dobrý den, jsem Java Servlet!".
  • Metoda pro implementaci požadavků zákazníků:

  • DoPost () - volána v době, kdy uživatel požaduje HTTP POST.
  • DoGet () - chápe jako argumenty Http.ServletRequest a Http.ServletResponse. Tento případ je nastavena na šířku dva parametry a výšku obdélníku s žádostí o výpočet plochy a odesílatvýsledek zpět klientovi.
  • Destroy () - Kontejner bude volat, když potřebuje odstranit Java ee Servlet zastaví.
  • Psaní stránek JSP

    Vytvořte soubor nazvaný index.jsp v adresáři WebContent s následujícím obsahem.
    Na této stránce JSP:
  • Umístěte hypertextový odkaz s atributem href = QuickServlet, který označuje relativní cestu servletu a mapování URL pro něj.
  • Kliknutím na tento odkaz obdrží server HTTP GET žádost a bude volána metoda doGet ().
  • Prokázání odeslání požadavku HTTP vytvoří jednoduchý formulář se dvěma textovými poli: šířka a výška.
  • Atribut formuláře v akci je nastaven na relativní cestu.
  • Tlačítko Odeslat se nazývá "Vypočítat".
  • Stránka JSP bude vypadat takto.

    Oznámení a nastavení webových servletů Java

    Aby servlet mohl sloužit uživatelským dotazům, musíte deklarovat a konfigurovat jeho mapování v souboru deskriptoru webu. Vytvořte soubor XML s příponou web.xml pod adresářem WebContent WEB-INF s následujícím kódem XML.
    Je zřejmé, že servlet je deklarován pomocí prvku a jeho podřízených prvků, které určují jeho popisný název a určují úplný název třídy. Je konfigurován tak, aby zobrazoval dotazy pomocí prvku a jeho podřízených částí, které určují název deklarovaný prvkem a vzor URL, který má být mapován do servletu. Šablona může mít přesnou shodu s adresářem.

    Provádění kompilace

    Před dokončením kompilace se ujistěte, ženastavit proměnné prostředí PATH, který obsahuje katalog JDK_HOMEbin, takže můžete získat přístup příkazového řádku a mít k dispozici soubor, který je obvykle poskytované servlet kontejneru. Při použití souboru TomKat je umístěn v TOMCAT_HOMElib volal. Otevřená příkazového řádku operačního systému a změnit pracovní adresář na QuickServlet, jak je uvedeno ve struktuře. Zadejte následující příkaz:. Javac -CP TOMCAT_HOME lib servlet-api.jar „-d CLASS_DIR SRC_DIR QuickServlet.java Nahrazuje jména TOMCAT.HOME, CLASS_DIR a hodnota SRC_DIR:. TOMCAT_HOME to Úprava adresáře na vašem počítači ve složce Pokud cesta obsahuje. mezery, vložte jej takto:.. CLASS_DIR = Webcontent WEB-INF tříd soubor SRC_DIR = src net codejava servlet Tento tým skompylyruet QuickServlet.java a umístit generované .class Webcontent WEB-INF tříd

    Packaging webových aplikací

    Standardní způsob nasazení aplikací Java EE je rozšíření svého obalového válce. Do příkazového řádku vstřikovaného týmu končí vždy s bodem:
  • jarcfvdeployQuickServletApp.war -C Webcontent.
  • Nádoba se umístí vše v jednom adresáři ve formátu zip archivu s názvem Quick.ServletApp.war v adresáři. Nyní nasadit soubor Quick.ServletApp.war na serveru, zkopírujte do Tomcat. Spustit program běží Tomcat 7.exe adresář. Jakmile se přihlásíte do konzole ukazuje, že Quick.ServletApp.war rozšířil souborový server a poslouchá na portu číslo 8080.

    Testování QuickServletApp

    Nyní otevřete internetový prohlížeč a zadejte následující text do adresního řádku: http: //local: 8080 /QuickServletApp. Vzhledem k tomu není určit konkrétní stránku jako výchozí index.jsp načten samostatně. ZkontrolovatServlet požadující HTTP GET, klikněte na hypertextový odkaz "Klikněte sem pro odeslání požadavku GET." Chcete-li jej otestovat pomocí požadavku na protokol HTTP POST, klikněte na tlačítko prohlížeče prohlížeče a zadejte dvě čísla v šířce a výšce textových polí. Klikněte na tlačítko "Vypočítat" a vrátí výsledek vypočítané oblasti.

    Příklady Tomcat

    Služba Servlet je komponent Java, který je řízen webem, který je provozován jeho kontejnerem, například Tomcat, který generuje dynamický obsah v reakci na žádost klienta. Kontejnerový nebo servletový engine je rozšířením webového serveru, který poskytuje funkci servletu. Kontejner obsahuje a spravuje servlety během celého životního cyklu. Servlet rozhraní - centrální Java API abstrakce. HttpServlet - nejčastější server, v němž jsou zobrazovány požadavky HTTP, je podtřída GenericServlet, která implementuje rozhraní Servlet. Rozhraní Servlet samo o sobě oznamuje tyto abstraktní metody. Servlet životní cyklus: voidinit (nastavení Servlet.Config) voiddestroy () požadavek voidservice Java Servlet požadavek, Servlet.Response odpověď) a informace o konfiguraci servlet: Servlet.Config getServlet.Config () Řetězec getServlet.Info ().

    Funkce serveru Java

    JSP je další účinný způsob, jak vytvořit dynamický webový obsah pomocí Java. Nejjednodušší způsob, jak vysvětlit rozdíl mezi nimi, je rozpoznat, že servlet je HTML v Javě a JSP v jazyce Java v jazyce HTML. Obě metody jsou účinné a mohou být použity samostatně, ale existuje několik rozdílů:
  • Obvykle servlety jsou rychlejší než JSP, ale může být sestaven JSP servlety v Javě.
  • Webový vývojář Java musí být obeznámen s oběma technologiemi a tím, jak mohouvzájemně se doplňují v jedné implementaci.
  • Mnoho funkcí JSP lze dosáhnout na straně klienta pomocí javascriptu. To snižuje zátěž na serveru během období maximálního využití a je často metoda používaná velkými podniky s neustále vysokou návštěvností.
  • I když samostatné aplikace Java dosáhly vrcholu před několika lety, dynamický webový obsah založený na jazyce Java je stále velkým požadavkem od společností po celém světě. Pokud uživatel momentálně nepoužívá Java Servlets k vytvoření dynamického obsahu, ztratí zajímavé pole s neomezenou kariérou.

    Související publikace