Servlet
Servlet je objekat programskog jezika Java koji dinamički obrađuje zahteve i konstruiše odgovor na zahtev. Java servlet API omogućava Java programerima da dodaju dinamički sadržaj Web serveru korišćenjem Java platforme. Servlet najčešće generiše HTML kod, ali to može biti i XML ili nešto slično.
Servlet je svojevrsni odgovor Sun Microsystems na postojeće tehnologije dinamičkog generisanja HTML koda: PHP, CGI i ASP.NET. Oni omogućavaju održavanje stanja na više servera korišćenjem kolačića, promenljivih sesije i prepisivanjem URL adresa.
Servlet API, je smešten u Java paketu javax.servlet, i definiše očekivane interakcije Web kontejnera i servleta. Web kontejner je u osnovi komponenta Web servera koji odgovara na zahteve servleta. Web kontejner je odgovoran za upravljanje životnim ciklusom servleta, mapiranjem URL adresa za određeni servlet i obezbeđivanje da će zahtevani URL dobiti ispravan odgovor.
Servlet je objekat koji prima zahtev i generiše odgovor na osnovu zahteva. Osnovni paket servleta definiše Java objekte koji reprezentuju zahteve i odgovore servleta, kao objekta koji odražava konfiguraciju parametara servleta i izvršnog okruženja. Paket javax.servlet.http definiše specifične HTTP podklase generičkih elemenata servleta, uključujući objekte upravljanja sesijom koji beleže zahteve i odgovore Web servera i klijenta. Servlet se mogu smeštati u WAR datoteke kao Web aplikacija.
Servleti mogu biti automatski generisani od JSP (JavaServer Pages) kompajlera, ili pomoću templejt endžina, kao što je WebMacro.
Životni ciklus Servleta
[uredi | uredi izvor]- Kontejner učitava servlet klasu prilikom podizanja sistema.
- Kontejner poziva init() metodu. Ova metoda inicijalizuje servlet i mora biti pozvana pre bilo kog zahteva za servlet. Ovaj metod se poziva samo jednom tokom životnog ciklusa servleta.
- Nakon inicijalizacije servlet može odgovarati na zahteve. Svaki zahtev se obrađuje kao posebna nit. Kontejner poziva service() metodu servleta za svaki pojedni zahtev. Ova metoda određuje vrstu odgovora i prosleđuje je odgovarajućem metodu na obradu. Web programer mora da implementira ove metode. Ukoliko nije implementirana odgovarajuća metoda za dati zahtev izvršava se nadređena metoda, koja obično daje poruku o grešci.
- Na kraju kontejner poziva destroy() metodu koja prekida izvršavanje servleta. I ova metoda se kao i innit() metoda poziva samo jednom tokom izvršavanja servleta.