Sprievodca Java Servlet pre začiatočníkov

Java Servlet je program na strane servera, napísaný v rovnakom programovacom jazyku, ktorý prijíma zákaznícke signály a odošle späť odpovede na ne. Toto je kľúčový prvok, ktorý vytvára typický Java EE, s výnimkou JSP, EJB, XML a ďalších súvisiacich technológií. Aplikácia môže byť zabalená do súboru WAR (Web AR chive) na zavedenie na webovom serveri. Server, ktorý môže spustiť servlet Java, sa nazýva kontajner. Program, ktorý beží na takom serveri, môže vytvárať dynamické webové stránky.

Java Servlet: Základy

Najznámejšie a najpoužívanejšie sú kontajnery Tomcat a JBoss. Technicky je servlet normálna trieda Java, ktorá má rozšírenie pre všeobecný protokol klient-server alebo protokol HTTP. V praxi sa používa na spracovanie žiadostí prostredníctvom redefinície HttpServlet GET a POST, resp. Kontajner Java Servlet poskytuje Http.ServletRequest a Http.ServletResponse - zariadenie, ktoré pôsobia v rámci "výzva-odpoveď A zvyčajne používa v spojení s JSP pre generovanie dynamického obsahu


Typický modelov scenáre: ..
  • JSP predstavujúce užívateľom zadávanie dát
  • servlet prijíma vstupy, je spracuje a odošle odpoveď
  • Na kvalitnú prácu sa používa špeciálne filtre
  • Java servlet filtre -... je pripojený Komponenty Java, ktoré sa používajú na zachytenie a spracovanie dopytov pred ich odoslaním na servlety a idpovidi po svojom kódu, a pred kontajnera odošle odpoveď klientovi Bežné úlohy vykonávané s filtrami:
  • .Registrácia parametrov dotazu pre registráciu súborov.
  • Autentifikácia a povoľovanie žiadostí o zdroje.
  • Pred odoslaním do servletu naformátujte telo dotazu alebo hlavičky.
  • Kompresia údajov o odpovediach zaslaných klientovi.
  • Zmena odpovede pridaním niektorých súborov cookie.
  • Informácie o hlavičke Java Servlet.
  • Filtre sú pripojené a nakonfigurované v súbore deskriptora nasadenia (web.xml). Servery a filtre sa navzájom nepoznajú, takže môžete pridať alebo odstrániť filter jednoduchou úpravou web.xml. Je povolené mať viacero filtrov pre jeden zdroj alebo vytvoriť reťazec filtrov pre web.xml alebo spustiť filtre Java Servlet implementáciou rozhrania javax.servlet.Filter.


    Hlavné funkcie Servlet

    Požiadavky na paralelný server sa prenášajú streamovaním a poskytujú dôležitý multi-závit a paralelnosť na webe. Kľúčové vlastnosti:
  • Prenosnosť. Keďže Java je nezávislá na platforme, to isté platí pre servlety. Môžete si ho napríklad vytvoriť v operačnom systéme Windows, aby vývojári GlassFish ho používali ako webový server a potom ho mohli spustiť na akomkoľvek inom operačnom systéme, ako napríklad Unix, Linux a webový server apache Java Servlet. Táto funkcia je prenosná a to je jeho hlavná výhoda oproti CGI.
  • Účinnosť a škálovateľnosť. Akonáhle je Servlet nasadený a stiahnutý na server, môže okamžite začať vykonávať požiadavky klienta. Je nazývaný svetelným tokom, takže je možné niekoľko požiadaviek klientov naplniť súčasne pomocou funkciemultithreading Java. Na rozdiel od CGI, kde server iniciuje nový proces pre každú požiadavku klienta.
  • Spoľahlivosť. Nasledovaním horných funkcií Java, ako je zber odpadu, spracovanie výnimiek, manažér zabezpečenia Java a iné, je menej náchylný na problémy s riadením a únikom pamäte. Tým je vývoj aplikácie bezpečný a bezchybný.
  • Potreba používať dynamické webové stránky

    Existuje mnoho dôvodov, prečo by podnik chcel vytvoriť dynamické webové stránky "on-the-fly", napríklad keď sa údaje na webových stránkach často menia. Správy a počasie sa zvyčajne spoliehajú na CGI, aby udržali čerstvý obsah, ktorý nevyžaduje neustálu pozornosť vývojárov. Webové stránky elektronického obchodovania, ktoré uvádzajú zoznam bežných cien a úrovní zásob, využívajú CGI na získanie obsahu na požiadanie a získavajú ho z internej infraštruktúry spoločnosti.
    Mnoho používateľov má skúsenosti s používaním technológie Java na vytváranie webových služieb založených na CGI, ale Java Servlets sú efektívnejšie, výkonnejšie, ľahšie použiteľné a lacnejšie než tradičné alternatívy CGI. Výhody Java servletov:
  • Účinnosť. V tradičnom CGI každý žiadosť HTTP spúšťa nový CGI proces. Dokonca aj vtedy, ak je jeho kód dokonale implementovaný, často dochádza k výraznému množstvu režijných nákladov nielen pri začatí procesu, ale aj počas jeho vykonávania. Keď sa použijú servlety, zostáva JVM načítaná do pamäte a každá požiadavka je spracovaná pomocou Java streamingu. Ako príklad Java Servlet, ak v tradičnom CGI modeli existuje množstvo simultánnych X dotazov, to znamenáže kód pre program je načítaný do pamäte X krát. Stane sa preťažením na webovom serveri. Avšak v servletovom prostredí sú toky X, kde sa spúšťa iba jedna kópia jeho triedy. Výsledkom je vyššia efektivita a škálovateľnosť na viacerých platformách.
  • Pohodlie. Pri použití programu, nemá zmysel sa učiť nový jazyk, napríklad Perl, len pre funkcie CGI. Okrem toho majú servlety veľkú infraštruktúru pre mnohé úlohy HTML, čo výrazne urýchľuje vývojový proces.
  • Napájanie - bohužiaľ, tradičné CGI skripty nechávajú byť veľmi žiaduce. Napríklad ich bežné programy nemôžu hovoriť priamo s webovými servermi, čo znamená, že musíte vytvoriť celé rozhranie. Servlets môžu priamo komunikovať s webovými servermi zjednodušením operácií, ktoré vyžadujú priamy prístup do dátových skladov. Sú tiež jedinečné, pretože si môžu vymieňať dáta s inými servletmi a udržiavať informácie medzi požiadavkami, čo sleduje sledovanie relácií veľmi jednoducho.
  • Prenosnosť Java sa rozširuje priamo na servlety. V skutočnosti takmer každý hlavný používaný webový server podporuje Java Servlets buď priamo, alebo prostredníctvom modulu.
  • Ekonomika. Pokiaľ ide o dizajn, implementácia Servlets oveľa lacnejšie než ostatné možnosti, ktoré vyžadujú zvyk kódovanie správne komunikovať s webovými servermi. Java Servlet redirect je pripravený pracovať a môže minimalizovať náklady na podnikanie bez toho, aby ste obetovali výhody dynamickéhoObsah.

    Vytvorenie štruktúry adresárov

    Ak chcete začať, vytvorte nasledujúcu štruktúru adresárov.
    Kde sa nachádza priečinok:
  • Nasadenie - umiestnite vytvorený súbor.
  • Src - Umiestnite zdrojové súbory balíka Java net.codejava.servlet.
  • WebContent - Uložiť stránky JSP a iné webové zdroje.
  • WebContent WEB-INF - je nainštalovaný deskriptor web.xml.
  • WebContent WEB-INF - Kompilované triedy.
  • Ďalej vytvorte zdrojový súbor s názvom Java QuickServlet.java v adresári src net codejava servlet s nasledujúcim kódom.
    Toto je servletu niekoľko spôsobov HttpServlet:
  • init () - metóda spôsobí, keď sa pristupuje prvého klienta. Typicky sa sem zadáva inicializačný kód.
  • doGet () - funguje vždy, keď je požiadavka HTTP GET.
  • servletový predstavuje dva prvky:
  • HttpServletRequest - objekt zábaly všetkých záhlaví HTTP-požaduje získať kontrolu nad parametrami GET /POST a ďalších HTTP hlavičky odoslanej klientmi prostredníctvom metódy getParameter () a (getHeader ).
  • ​​
  • HttpServletResponse - používa sa k reakcii na HTTP žiadosť vykonáva nastavenie hlavičky odpovede a odošle HTML obsah späť užívateľmi. V metóde doGet () odošle jednoduchý HTML kód, ktorý odošle správu, ako napríklad "Ahoj, ja som servlet Java!».
  • Spôsob, ktorým sa vykonáva požiadavky zákazníkov:

  • doPost () - spôsobené v čase, keď užívateľ požaduje HTTP POST.
  • doGet () - a rozumie Http.ServletRequest Http.ServletResponse, ako argumenty. V tomto prípade sú hodnoty dvoch parametrov šírky a výšky obdĺžnika získané z dotazu na výpočet plochy a odoslaniavýsledok späť k klientovi.
  • Destroy () - Kontajner zavolá, keď potrebuje odstrániť Java ee Servlet zastaví.
  • Písanie stránok JSP

    Vytvorte súbor nazvaný index.jsp v adresári WebContent s nasledujúcim obsahom.
    Na tejto stránke JSP:
  • Umiestnite hypertextový odkaz s atribútom href = QuickServlet, ktorý označuje relatívnu cestu servletu a jeho mapovanie URL.
  • Kliknutím na tento odkaz dostanú na server požiadavku HTTP GET a zavolá sa metóda doGet ().
  • Aby ste demonštrovali odoslanie požiadavky HTTP, vytvorili jednoduchý formulár s dvoma textovými políčkami: šírka a výška.
  • Atribút formulára v akcii je nastavený na relatívnu cestu.
  • Tlačidlo Odoslať sa nazýva "Vypočítať".
  • Stránka JSP bude vyzerať takto.

    Oznámenia a nastavenia webových servletov v jazyku Java

    Aby servlet slúžil používateľským dopytom, musíte deklarovať a nakonfigurovať jeho mapovanie v súbore deskriptora webu. Vytvorte súbor XML s rozšírením web.xml pod adresou WebContent WEB-INF s nasledujúcim kódom XML.
    Je zrejmé, že servlet je deklarovaný pomocou prvku a jeho podradených prvkov, ktoré určujú jeho opisný názov a určujú celé meno triedy. Je konfigurovaný na zobrazovanie dopytov pomocou prvku a jeho podradených častí, ktoré určujú meno deklarované s prvkom a vzorom adresy URL, ktorý sa má mapovať na servlet. Šablóna môže byť presná zhoda s adresárom.

    Prebieha kompilácia

    Pred dokončením kompilácie sa uistite, ženastaviť premenné prostredia PATH, ktorý obsahuje katalóg JDK_HOMEbin, takže môžete získať prístup príkazového riadka a mať k dispozícii súbor, ktorý je zvyčajne poskytované servlet kontajnera. Pri použití súboru Tomka je umiestnený v TOMCAT_HOMElib volal. Otvorená príkazového riadku operačného systému a zmeniť pracovný adresár na QuickServlet, ako je uvedené v štruktúre. Zadajte nasledujúci príkaz :. javac -CP TOMCAT_HOME lib servlet-api.jar "-d CLASS_DIR SRC_DIR QuickServlet.java Nahrádza mená TOMCAT.HOME, CLASS_DIR a hodnota SRC_DIR :. TOMCAT_HOME to Úprava adresára na vašom počítači v priečinku Ak cesta obsahuje. medzery, vložte ho takto: .. CLASS_DIR = Webcontent WEB-INF tried súbor SRC_DIR = src net codejava servlet Tento tím skompylyruet QuickServlet.java a umiestniť generované .class Webcontent WEB-INF tried

    Packaging webových aplikácií

    Štandardný spôsob nasadenia aplikácií Java EE je rozšírenie svojho obalového valca. Do príkazového riadka vstrekovaného tímu končí vždy s bodom:
  • jarcfvdeployQuickServletApp.war -C Webcontent.
  • Nádoba sa umiestni všetko v jednom adresári vo formáte zip archíve s názvom Quick.ServletApp.war v adresári. Teraz nasadiť súbor Quick.ServletApp.war na serveri, skopírujte do Tomcat. Spustiť program beží Tomcat 7.exe adresár. Akonáhle sa prihlásite do konzoly ukazuje, že Quick.ServletApp.war rozšíril súborový server a počúva na porte číslo 8080.

    Testovanie QuickServletApp

    Teraz otvorte internetový prehliadač a zadajte nasledujúci text do adresného riadku: http: //local: 8080 /QuickServletApp. Vzhľadom k tomu nie je určiť konkrétnu stránku ako predvolený index.jsp načítaný samostatne. Ak chcete skontrolovaťServlet žiadajúci HTTP GET, kliknite na hypertextový odkaz "Kliknutím sem poslať požiadavku GET." Pozrieť sa na to HTTP POST, kliknite na tlačidlo Späť prehliadača a vložte dve čísla v šírku a výšku textových polí. Kliknite na tlačidlo "Vypočítať" a vráti vypočítaný výsledok oblasti.

    Príklady Tomcat

    servlet - webová komponenta Java, sa podarilo jeho obal, napríklad Tomcat, ktorý generuje dynamický obsah v reakcii na požiadavky klientov. Kontajnerový alebo servletový engine je rozšírením webového servera, ktorý poskytuje funkciu servletu. Kontajner obsahuje a spravuje servlety počas celého životného cyklu. Servlet rozhranie - centrálna Java API abstrakcie. HttpServlet - najčastejší servlet, ktorý spracováva HTTP žiadosti podtriedy, GenericServlet, ktorá implementuje rozhranie Servlet. Samotné Servletové rozhranie oznamuje tieto abstraktné metódy. Servlet životný cyklus: voidinit (nastavenie Servlet.Config) voiddestroy () požiadavka voidservice Java servlet požiadavku, Servlet.Response odpoveď) a informácie o konfigurácii servlet: Servlet.Config getServlet.Config () Reťazec getServlet.Info ().

    Funkcie servera Java

    JSP je ďalším efektívnym spôsobom, ako vytvoriť dynamický webový obsah pomocou Java. Najjednoduchší spôsob, ako vysvetliť rozdiel medzi nimi - je si uvedomiť, že servlet - html na Jave, a JSP - Java v HTML. Obe metódy sú účinné a môžu byť použité samostatne, ale existuje niekoľko rozdielov:
  • Zvyčajne servlety sú rýchlejšie než JSP, ale môže byť zostavený JSP servlety v Jave.
  • Webový vývojár Java musí byť oboznámený s oboma technológiami a tým, ako môžuvzájomne sa dopĺňajú v jednej implementácii.
  • Mnoho funkcií JSP možno dosiahnuť na strane klienta pomocou javascriptu. Tým sa znižuje zaťaženie servera počas maximálneho využitia a často je to metóda používaná veľkými podnikmi s neustále vysokou návštevnosťou.
  • Napriek tomu, že samostatné aplikácie Java dosiahli vrchol pred niekoľkými rokmi, dynamický obsah založený na jazyku Java je stále veľkým dopytom od spoločností po celom svete. Ak používateľ v súčasnosti nepoužíva Java Servlets na vytváranie dynamického obsahu, stratí zaujímavé pole s neobmedzenými pracovnými príležitosťami.

    Súvisiace publikácie