Java Servlet

Servlet (anglická výslovnost [ˈsəːvlit]) je program napsaný v jazyce Java, který je nástrojem pro tvorbu webových aplikací. Funguje na principu zpracování HTTP požadavků a generování HTML stránek. Tvoří vrstvu mezi HTTP požadavkem od webového klienta a databází nebo aplikací na jiném serveru. Servletem je každá Java třída, která implementuje interface javax.servlet.Servlet. Protože ale z praktického hlediska má smysl uvažovat pouze servlety obsluhující protokol HTTP, je důležitější vědět, že HTTP servletem je každá třída, která je potomkem třídy javax.servlet.http.HttpServlet.[1]

Úvod

Základní použití servletů:

  • Zpracování dat z HTML formulářů.
  • Získávání dat z databáze.
  • Řešení bezstavového problému protokolu HTTP.
  • Vytváření dynamického obsahu webu.

Java Servlety často slouží ke stejnému účelu jako programy realizované pomocí Common Gateway Interface ( CGI). Ale Servlety nabízejí několik výhod ve srovnání s CGI:

  • Výkon je výrazně vyšší.
  • Servlety se pouští v adresním prostoru webového serveru. Není tedy nutné vytvářet samostatný proces pro zpracování každého požadavku klienta.
  • Servlety jsou nezávislé na platformě, protože jsou psány v Javě.
  • Plná funkčnost knihoven jazyka Java je servletům k dispozici. Je možné komunikovat s databází nebo jiným virtuálním strojem pomocí RMI.

Technicky vzato je servlet třída z Java EE, která je v souladu se Java Servlet API. To je standard pro implementaci Java tříd, které reagují na HTTP požadavky a najdeme jej v balíčcích javax.servlet a javax.servlet.http. Servlety by v zásadě mohli komunikovat přes libovolný protokol typu klient-server, ale nejčastěji jsou používány s protokolem HTTP. Běžně generovaný dynamický obsah je HTML, ale může se jednat i o jiné jazyky například XML. Servlety mohou udržovat stav relace pomocí HTTP cookies nebo přepisováním URL.

Struktura

Třída typu Servlet v naprosté většině případů rozšiřuje (klíčové slovo extends) třídu HttpServlet. Dále je nutné přepsat (klíčový pojem @Override) metodu doGet(), která bere parametr typu HttpServletRequest a HttpServletResponse a nevrací žádnou návratovou hodnotu, aby pro nás Servlet vytvořil HTML stránku. Metoda musí propouštět (throws [θrəus]) nebo zpracovávat výjimku IOException. Třída neobsahuje metodu main(), protože všechny metody jsou volány kontejnerem. V případě, že bychom nepřepsali metodu doGet(), museli bychom přepsat jinou metodu, například doPost(). Pro vypsání textu na stránku je nutno vytvořit objekt třídy PrintWriter a přiřadit do našeho objektu volání metody getWriter() na parametru typu HttpServletResponse metody doGet(). Poté jen zavoláme nad objektem typu PrintWriter metodu println() s parametrem typu String, který obsahuje text ve formátu HTML. Kód by mohl vypadat nějak takto:

  public class MujServlet extends HttpServlet { 
      @Override
      public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { 
          PrintWriter print = response.getWriter();
          print.println("Text ve formatu HTML");
      } 
  }

Rozdíly mezi metodami doGet() a doPost()

Povinností třídy rozšiřující třídu HttpServlet je přepsat minimálně jednu metodu, která zpracovává příchozí HTTP dotaz. Nejvyužívanějšími metodami jsou právě metody doGet() a doPost(). Předpis obou metod je velice podobný:

public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {}

Tyto metody se liší ve způsobu, jakým zasílají data. Metoda doGet() posílá data pomocí parametrů uvedených na konci URL adresy. Tento způsob není vhodný při vkládání dlouhých textových řetězců a způsobuje opětovné posílání dat při obnově stránky. Metoda doPost() posílá data uvnitř HTTP dotazu. Díky tomu je nám umožněno posílat textové řetězce téměř neomezené délky. Nejsme ovšem schopni přečíst data zvenku, což může být výhodou. Pokud metodu použijeme korektně, tak nedojde k opakovanému posílání dat.

Rozdíly mezi Filtry a Listenery

Servletový Filtr je třída implementující Java třídu Filter a primárně slouží ke sledování žádostí a odpovědí odeslaných resp. přijatých Servletem. Filtr se používá například pro autentizaci uživatele. Naproti tomu Servletový Listener sleduje události ve webovém kontejneru a nějakým způsobem na ně reaguje. Událostí může být například spuštění nebo ukončení aplikace. Příkladem Listeneru může být třída implementující Java třídu HttpSessionListener nebo ServletContextListener.

JSP

Java Server Pages alias JSP jsou textové soubory s příponou .jsp, umístěné ve webové aplikaci, které jsou při prvním požadavku na zobrazení automaticky převedeny servletovým kontejnerem na servlet (.java) a přeloženy do Java třídy (.class). Servlety vzniklé z JSP stránek jsou mapovány na URL původního textového souboru.[2] Server (např. Apache Tomcat) následně předá servletu požadavek HTTP. Psaní kódu v JSP souboru je podobné psaní kódu v jazyce PHP. Hlavní výhodou JSP je násobně menší množství napsaného kódu, než kdyby byl kód napsán ve třídě Servlet. V případě, že se rozhodneme využívat JSTL, množství napsaného kódu se ještě více zredukuje, protože není nutné psát kód v jazyce Java, ale jen používáme tagy z JSTL knihovny. JSTL je knihovna usnadňující časté operace pomocí již vytvořených značek. Pracuje s cykly, vyhodnocováním, formáty či databází (práce s databází z JSP by ale porušila MVC).[3]

Webový Server

Pro použití servletů je potřeba mít webový server, který se také někdy označuje jako servlet kontejner. Nejčastěji se servlety zabalí do WAR archívu a provede se jejich nasazení (deploy) na server. Mezi webové servery patří například Apache Tomcat. Webový server v sobě obsahují i aplikační servery jako GlassFish, JBoss nebo Web Logic.

Životní cyklus servletu

Pro životního cyklu servletu jsou zásadní 3 metody. Jsou to metody init(), service() a destroy(). Jsou implementovány každým servletem a jsou vždy volány v určitý okamžik jeho životního cyklu. Využití metod je patrné v následujícím scénáři.

  1. Předpokládejme, že uživatel chce navštívit konkrétní URL.
    • Webový prohlížeč na tuto URL odešle HTTP request.
    • Tento požadavek poslán na příslušný server.
  2. HTTP je přijat webovým serverem a předán servlet kontejneru.
    • Kontejner namapuje požadavek na konkrétní servlet.
    • Servlet je dynamicky načten a uložen do adresního prostoru kontejneru.
  3. Kontejner zavolá metodu init() příslušného servletu.
    • Tato metoda je volána pouze při prvním načtení servletu do paměti.
    • Je možné nastavit inicializační parametry pro prvotní konfiguraci servletu.
  4. Kontejner zavolá metodu service() příslušného servletu.
    • Tato metoda se volá pro zpracování HTTP requestu.
    • Servlete může číst data poskytovaná HTTP requestem.
    • Servlet může vygenerovat HTTP response (odpověď) pro klienta.
  5. Servlet zůstává v paměti a je k dispozici pro zpracování dalších HTTP requestů od klienta.
    • Metoda service() je volána pro každý HTTP request.
  6. Kontejner se v určitém okamžiku rozhodne odebrat servlet z paměti.
    • Algoritmus pro rozhodování o smazání servletu se u jednotlivých kontejnerů liší.
  7. Kontejner zavolá metodu destroy() a ta mu odebere všechny zdroje, které má servlet přiděleny.
  8. Paměť alokovaná pro servlet a jeho objekty pak může být uvolněna garbage collectorem.

Využití v dnešních aplikacích

Ačkoli je možné pomocí servletů generovat HTML, tak se to kvůli přehlednosti a členění kódu nedělá. Dříve se v MVC návrhu používala pro zobrazovací vrstvu technologie Java Server Pages ( JSP), ale dnes spíše převažuje novější technologie Java Server Faces ( JSF). Nad samotnými servlety jsou pak vytvořeny frameworky, které se v dnešní době takřka výhradně používají. Jsou jimi Enterpise Java Beans ( EJB) nebo třeba také Spring.

Reference

  1. Úvod do webových aplikací – FI WIKI. web.archive.org [online]. 2014-09-05 [cit. 2023-10-16]. Dostupné v archivu pořízeném z originálu dne 2014-09-05. 
  2. Java Server Pages – FI WIKI. web.archive.org [online]. 2017-10-07 [cit. 2023-10-16]. Dostupné v archivu pořízeném z originálu dne 2017-10-07. 
  3. Java na Webu II. - Základní stavba -Linux Software. archiv.linuxsoft.cz [online]. [cit. 2023-10-16]. Dostupné online. 

Read other articles:

Tangga utama stasiun Saint-Charles. Le Grand Escalier dan boulevard d'Athènes di Marseille, dilihat dari stasiun Saint-Charles. Saint Charles merupakan stasiun kereta api utama Marseille. Stasiun ini merupakan ujung terminal dan dibuka pada 8 Januari 1848, setelah dibangun untuk PLM di atas tanah Pemakaman Saint Charles. Letaknya di puncak sebuah bukit kecil dan terhubung dengan kota oleh sebuah tangga. Stasiun ini pernah berperan dalam perjalanan menuju Afrika dan Timur Tengah sebelum muncu...

 

POLISI REPUBLIK INDONESIA Direktorat Polisi Air Baharkam PolriLambang Korpolairud Baharkam PolriSingkatanDitpolair Korpolairud Baharkam PolriStruktur yurisdiksiLembaga nasionalIndonesiaWilayah hukumIndonesiaLembaga pemerintah Kepolisian Negara Republik IndonesiaPejabat eksekutifBrigjen. Pol. Hero Henrianto Bachtiar, S.IK., M.Si., DirpolairLembaga indukKepolisian Negara Republik Indonesia (Utama)Badan Pemelihara Keamanan Kepolisian Negara Republik Indonesia (Bagian)Korps Kepolisian Perairan d...

 

Peta menunjukan jaringan kereta api India. Transportasi rel umumnya digunakan untuk transportasi jarak jauh di India. Hampir seluruh pengoperasian kereta api di India ditangani oleh perusahaan negeri, Indian Railways, di bawah Departemen Kereta Api. Jalur ini dikatakan sebagai jaringan terbesar ke-2 di dunia. Sarana dan Prasarana Umumnya di India menggunakan rel berukuran 1,676 mm atau rel lebar, hal ini dikarenakan India merupakan salah satu negara dengan penduduk terbanyak di dunia seh...

M. Night ShyamalanM. Night Shyamalan, 2008LahirManoj Nelliyattu ShyamalanPekerjaanSutradara, produser, Penulis naskah dan aktorSuami/istriBhavna Vaswani (1993-) M. Night Shyamalan: The Official Site Manoj Nelliyatu Shyamalan (lahir 6 Agustus 1970) merupakan seorang sutradara dan aktor berkebangsaan India atau biasanya dikenal dengan M. Night Shyamalan. Dia memenangkan nominasi Academy Award. Dia dilahirkan di Mahé. Dia berkarier di dunia film sejak tahun 1992. Filmografi Tahun Film Oscars B...

 

This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Tai Aiton people – news · newspapers · books · scholar · JSTOR (April 2023) (Learn how and when to remove this template message) Tai AitonRegions with significant populationsIndia<8,000LanguagesAiton, AssameseReligionTheravada BuddhismRelated ethnic groupsOt...

 

Law enacted by the United States Congress An act of Congress is a statute enacted by the United States Congress. Acts may apply only to individual entities (called private laws), or to the general public (public laws). For a bill to become an act, the text must pass through both houses with a majority, then be either signed into law by the president of the United States, be left unsigned for ten days (excluding Sundays) while Congress remains in session, or, if vetoed by the president, receiv...

Impact craters in Saudi Arabia Wabar cratersWabar cratersAsteroid impact location in Saudi ArabiaImpact crater/structureConfidenceConfirmedDiameter64 to 116 m (210 to 381 ft)Ageunder 250 yrsBolide typeIron meteoriteLocationCoordinates21°30′09″N 50°28′27″E / 21.50250°N 50.47417°E / 21.50250; 50.47417CountrySaudi Arabia Smaller of the Wabar craters visible on the surface. The crater on the left is about 11 m in diameter The Wabar craters are impact ...

 

Cinema of Bangladesh List of Bangladeshi films 1928–1947 India 1948–1958 East Pakistan 1959–1970 East Pakistan 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971–1979 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980s 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990s 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000s 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010s 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020s 2020 2021 2022 2023 vte The Dhal...

 

2002 United States Senate election in New Mexico ← 1996 November 5, 2002 2008 →   Nominee Pete Domenici Gloria Tristani Party Republican Democratic Popular vote 314,193 168,886 Percentage 65.04% 34.96% County resultsDomenici:      50–60%      60–70%      70–80%      80–90% Tristani:      50–60% U.S. senator before election Pete...

«L'età della cavalleria è finita. Quella dei sofisti, degli economisti e dei contabili è giunta; e la gloria dell'Europa giace estinta per sempre» (Edmund Burke, Riflessioni sulla Rivoluzione in Francia, pag. 131[1]) Edmund BurkeReynolds, Edmund BurkeOlio su tela, 1771(National Portrait Gallery, Londra) Paymaster of the ForcesDurata mandato27 marzo 1782 –1º luglio 1782 MonarcaGiorgio III Capo del governoMarchese di Rockingham PredecessoreRichard Rigby Successore...

 

Pour les articles homonymes, voir Bennett. Alex Bennett Biographie Nom Alexander Bennett Nationalité Britannique Nat. sportive Écossais Naissance 20 octobre 1881 Glasgow (Écosse) Décès 9 janvier 1940 (à 58 ans) Écosse Poste Milieu gauche Parcours professionnel1 AnnéesClub 0M.0(B.) 1900-1903 Rutherglen Glencairn F.C. (en) 00? 0(?) 1903-1908 Celtic 124 (47) 1908-1918 Rangers 188 (51) 1918-1920 Dumbarton 00? 0(?) 1920-1921 Albion Rovers 00? 0(?) Sélections en équipe national...

 

帕潘杜瓦Papanduva市镇帕潘杜瓦在巴西的位置坐标:26°22′12″S 50°08′38″W / 26.37°S 50.1439°W / -26.37; -50.1439国家巴西州圣卡塔琳娜州面积 • 总计759.832 平方公里(293.373 平方英里)海拔788 公尺(2,585 英尺)人口(2006) • 總計17,258人 • 密度22.7人/平方公里(58.8人/平方英里) 帕潘杜瓦(葡萄牙语:Papanduva)是巴西圣卡塔...

UK Parliament constituency in England since 1885 BosworthCounty constituencyfor the House of CommonsBoundary of Bosworth in LeicestershireLocation of Leicestershire within EnglandCountyLeicestershirePopulation98,282 (2011 census)[1]Electorate77,787 (December 2010)[2]Major settlementsHinckley, Barwell, Earl Shilton and Market BosworthCurrent constituencyCreated1885Member of ParliamentLuke Evans (Conservative)SeatsOneCreated fromSouth Leicestershire Bosworth (/ˈbɒzwərθ/ BOZ-...

 

Dispersion of the Roma people This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Romani diaspora – news · newspapers · books · scholar · JSTOR (October 2019) (Learn how and when to remove this message) Countries with a significant Romani population according to unofficial estimates.   + 1,000,000 ...

 

Eyl

Town in Puntland, SomaliaEyl EilTownAerial view of Eyl townNickname: IlligEylLocation in Somalia.Coordinates: 7°58′00″N 49°51′00″E / 7.96667°N 49.85000°E / 7.96667; 49.85000Country SomaliaState PuntlandRegionNugalDistrictEylGovernment • MayorAbdirashid Said BarrePopulation • Total21,700Time zoneUTC+3 (EAT) Eyl (Somali: Ceel, Arabic: عيل) also called Illig, is a historic port town in the northeastern Nugal region of ...

Kurator bernama Rolf Lauter (tengah, depan lukisan) sedang berbincang dengan para pengunjung Museum für Moderne Kunst di Frankfurt dalam pameran Lucian Freud: Naked Portraits.Kurator adalah pengurus atau pengawas institusi warisan budaya atau seni, misalnya museum, pameran seni, galeri foto, dan perpustakaan. Kurator bertugas untuk memilih dan mengurus objek museum atau karya seni yang dipamerkan. Kurator memiliki pendidikan tinggi dalam bidangnya, umumnya doktor atau magister dalam bidang s...

 

Dave Grohl discographyGrohl performing in 2014Studio albums16Live albums6Compilation albums8Video albums11EPs6Singles64Soundtrack albums4Collaborations26 Dave Grohl is an American singer, songwriter, and musician whose discography consists of 16 studio albums, six live albums, eight compilation albums, six EPs, and four soundtracks, and also includes his other collaborations and work as a studio musician with 26 additional artists. A large portion of his releases have come as the drummer of ...

 

Lili BechLahirLily Beck(1883-12-29)29 Desember 1883DenmarkMeninggal20 Januari 1939(1939-01-20) (umur 55)PekerjaanAktrisTahun aktif1911 - 1917Suami/istriErik Magnussen (1912-1912) Victor Sjöström (1913-1916) Lili Bech (29 Desember 1883 – 20 Januari 1939) adalah seorang aktris Film bisu Denmark. Dia muncul di 27 film antara tahun 1911 dan 1917. Dia menikah dengan sutradara film Victor Sjöström. Filmografi pilihan The Gardener (1912) Children of the Streets (1914) Daughter of th...

English poet and essayist (1843–1901) For his father, the clergyman and theologian, see Frederic Myers. Frederic William Henry MyersPortrait by William Clarke WontnerBorn6 February 1843 (1843-02-06)Keswick, Cumberland, EnglandDied17 January 1901 (1901-01-18) (aged 57)Rome, ItalyOccupation(s)Psychical researcher, writer Frederic William Henry Myers (6 February 1843 – 17 January 1901) was a British poet, classicist, philologist, and a founder of the Society for Psychical Rese...

 

World War II Serbian puppet government This article is about the World War II Serbian puppet government. For the territory where this government operated, see Territory of the Military Commander in Serbia. For the Albanian caretaker government, see Government of National Reconciliation. Not to be confused with National Salvation Government. Government of National SalvationSerbian: Министарски савет Србије, romanized: Ministarski savet Srbije)German: Ministerrat von ...