Java Servlets – predstavenie technológie
Servlety sú neoddeliteľnou súčasťou platformy J2EE od firmy SUN. Sú to programové komponenty bežiace na strane servera, napísané v Jave. To znamená, že vyžadujú „java-enabled-server“ a samozrejme JVM (Java Virtual Machine). So servletmi ako medzičlánkom sa môžete nepriamo stretnúť pri technológii dynamických stránok JavaServer Pages.
Ako som už spomenul, servlety sú komponenty nezávislé na protokole a platforme, napísané v Jave. Sú vykonávané na strane servera, pričom musí ísť o server podporujúci Javu. Servlety sú načítané a spúšťané pomocou JVM na príslušnom aplikačnom servery. Podľa špecifikácie sú servlety nevizuálne komponenty, teda sa nezobrazujú pomocou žiadneho GUI. Avšak to neznamená, že servlety nemôžu „generovať“ používateľské rozhranie. V skutočnosti sa väčšinou používajú servlety pracujúce nad internetovým protokolom HTTP. Odpoveďou takýchto servletov je potom v prevažnej väčšine HTML kód. Servlety môžeme použiť na rôzne úlohy: čítanie/zapisovanie do databázy, posielanie mailov, spracovávanie formulárov, posielanie cookies atď. Jednoducho sú určené na tvorbu dynamických internet/intranet riešení, podobne ako JavaServer Pages.
Servlety implementujú princíp požiadavka/odpoveď, typický pre architektúru klient-server. Java Servlet API definuje štandardné rozhrania pre obsluhu týchto požiadaviek a odpovedí medzi klientom a serverom. Nasledujúci obrázok zjednodušene ilustruje procesy medzi klientom a serverom.
- Klient pošle požiadavku na server.
- Server prepošle požiadavku na konkrétny servlet.
- Servlet vytvorí odpoveď a predá ju serveru. (Odpoveď je vytvorená dynamicky a jej obsah závisí od požiadavky, ktorú poslal klient. Servlet môže využiť rôzne externé zdroje.)
- Server pošle klientovi odpoveď.
Servlety by sme mohli prirovnať k CGI skriptom v tom, že pomocou servletou môžeme tiež vytvárať dynamický obsah. Avšak servlety majú určité nesporné výhody v porovnaní s CGI:
- Portabilita a platformová nezávislosť – túto vlastnosť majú vďaka jazyku Java. Java Servlet API definuje totiž štandardné rozhranie medzi servletom a web serverom.
- Perzistencia a výkonnosť – servlet je skompilovaný a natiahnutý do pamäte len prvý krát a volaný pri každej požiadavke od klienta. To znamená, že servlet menej vyťažuje systémové zdroje, databázové pripojenia a podobne. Naproti tomu CGI je natiahnuté do pamäte pri každej požiadavke.
- Založenosť na Jave – keďže servlety sú postavené na jazyku Java, majú k dispozícii všetky výhody tohto jazyka. Objektovosť, modularitu, bezpečnosť a podobne.
Java Servlet API
Java Servlet API je množinou Java tried definujúcich rozhranie medzi klientom a servletom. Cez toto rozhranie obsluhuje servlet príchodzie požiadavky. Servlet API nie je štadardnou súčasťou Java frameworku, ale je k dispozícii buď ako samostatný balíček alebo ako súčasť J2EE. Java Servlet API pozostáva z dvoch balíčkov:
- javax.servlet
- javax.servlet.http
Základný balíček tried javax.servlet
obsahuje abstraktné triedy a rozhrania na tvorbu všeobecných servletov pre rôzne protokoly. Týmto je myslené, že servlety môžu byť použité pre ľubovolné protokoly (HTTP, HTTPS, FTP), záleží na konkrétnej implementácii. Balík javax.servlet.http
rozširuje funkcionalitu základného balíka a pridáva podporu protokolu HTTP.
Pozrime sa trochu bližšie na prvý balík, ktorý obsahuje niekoľko rôznych rozhraní. Najdôležitejšie je rozhranie Servlet
. Toto rozhranie definuje metódy, ktoré musí každý servlet obsahovať. Ide hlavne o metódu service()
, ktorá obsluhuje požiadavky. Napríklad konkrétne trieda GenericServlet
implementuje toto rozhranie. Ak potrebujem použiť servlet pracujúci s protokolom HTTP, využijem špecializovanejšiu triedu HttpServlet
. V tomto seriály sa budem zaoberať výhradne servletmi pracujúcimi s týmto protokolom. Táto trieda poskytuje ďalšie metódy na spracovanie HTTP požiadaviek, napríklad doGet()
a doPost()
na spracovanie požiadaviek typu GET a POST.
Interakcia klient-servlet
Klient, ktorý posiela požiadavku nejakej aplikácii založenej na servletoch, nekomunikuje priamo s nimi, ale s príslušným serverom. Server potom predá požiadavku servletu pomocou Java Servlet API. Úlohou servera je riadiť spúšťanie a inicializovať servlet, ukončovať a likvidovať servlet z pamäti. Štandardne sa v pamäti servera nachádza len jedna inštancia konkrétneho servletu, kde zostáva aj po dobu nečinnosti. Záleží na nastavení servera kedy bude uvolnená z pamäte. A čo sa deje ak na jeden servlet príde niekoľko požiadaviek súčasne? Server vytvorí pre každú požiadavku nové vlákno. To znamená, že servlety sú multithreadové. Teda opakujem, za vytvorenie nového vlákna je zodpovedný server, rovnako ako je zodpovedný za načítanie a znovunačítanie (pri zmene) servletu do pamäte.
Nasledujúci obrázok zjednodušene ilustruje základnú interakciu medzi klientom a servletom:
- Na začiatku pri prvej požiadavke (alebo pri zmene) je servlet načítaný serverom. Všetky premenné inštancie sú zinicializované. Servlet zostáva aktívny počas celej doby životnosti.
- Dvaja klienti žiadajú o službu ten istý servlet. Server preto vytvorí dve nezávislé vlákna, pričom každé vlákno má prístup k inštancii servletu, jeho metódam a premenným.
- Každé vlákno obsluhuje vlastné požiadavky a odozvy, ktoré vracia príslušnému klientovi.
Ak ste sa dočítali až sem, gratulujem. Ani ja nemám moc rád sivú teóriu, ale nič sa nedá robiť, základy je treba položiť. V budúcom článku sa bližšie pozrieme na životný cyklus servletu.
Užitočné zdroje
- Jakarta Apache Project – Tomcat – obsahom tohto projektu je server Tomcat, čo je implementácia špecifikácie servletov a JSP od firmy SUN. (Ak ho ešte nemáte, odporúčam stiahnuť a rozbehať. Budeme ho potrebovať na skúšanie príkladov.)
- Java – J2EE (Servlety) – toto je východzia stránka technológie servletov v jazyku Java. Je to taký štartovací bod pre všetkých, ktorý sa zaujímajú o servlety.
- Coreservlets.com a Moreservlets.com – vynikajúci zdroj informácii o servletoch
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Nové AI modely od Open AI a Google
22. května 2024 -
Vlastní web: Jak nainstalovat WordPress?
24. června 2024 -
Certifikáty Entrust ztratí důvěru Google Chrome
8. července 2024
Nejnovější
-
Jak rozšířit úložiště Macu za pětinovou cenu?
16. prosince 2024 -
Nové trendy v doménách pro osobní projekty – DIY, LIVING a LIFESTYLE
9. prosince 2024 -
Jak chránit webové stránky před Web/AI Scrapingem
27. listopadu 2024 -
Jaký monitor je nejlepší k novému Macu Mini?
25. listopadu 2024