Servleti. Izrada Java aplikacija sa servletima Osnove servleta

Servlet - je Java-nporpaMMa koja koristi klasu HttpServiet. Servlet se koristi za proširenje mogućnosti postojećeg servera, posebno Web servera. Tipično, servlet radi na namjenskom serveru. Ovi serveri se zovu Java aplikacijski serveri. Java server aplikacija uključuje Web server kao gradivni blok (ponekad ne jedan, već nekoliko), kao i servere koji rade sa komponentama servera, servere za pomoćne usluge, itd. Servlet radi u okruženju koje obezbeđuje server. Dio servera posvećen posluživanju servleta naziva se servlet kontejner. Specifikacija servleta pretpostavlja da klasa servleta ima standardne metode koje se izvršavaju u nekom trenutku životnog ciklusa servleta. Ove metode poziva kontejner servleta. Implementacija specifikacije servleta je uključena u skup standardnih Java jezičkih paketa.

Ova knjiga se fokusira na Java aplikacijski server pod nazivom Blazix. Blazix Server pruža kompletan skup mogućnosti servleta. Pored kreiranja klase (ili klasa) servleta, kao i konfigurisanja kreiranog servlet programa i njegovog instaliranja na server, potrebno je da promenite konfiguracioni fajl Web servera. Glavne vrijednosti su navedene u konfiguracijskoj datoteci na sljedeći način: servlet.name: myservlet

servlet.myservlet.className: mypackage.MyServletClass servlet.myservlet.url: /mysrvlet

Svaki servlet mora imati ime(servlet.name), po kojem je identificiran na serveru. Ovo ime se koristi za postavljanje svojstava servleta, posebno za označavanje naziva klase u kojoj je program servleta pohranjen (sljedeći red), kao i adrese na kojoj se ovaj servlet poziva (treći red).

Klijent traži od Web servera adresu na kojoj se servlet nalazi (adresa mora biti navedena kao vrijednost servlet.myservlet.url u konfiguracijskoj datoteci web servera). Server prosljeđuje zahtjev i podatke (ako ih ima) servletu, prima odgovor od servleta i šalje ga klijentu.

Na ovom objašnjenju šta je servlet, moglo bi se završiti. Međutim, postoji mnogo zanimljivih i korisnih detalja na koje biste trebali obratiti pažnju i detaljnije ih proučiti.

Posebno je važno imati na umu da staza klase servleta mora biti navedena u varijabli ciasspath, ili se može postaviti u direktorij C:\Blazix\classes ili u direktorij naveden u konfiguracijskoj datoteci web servera kao vrijednost server.ciassDir. Nakon što je konfiguracijski fajl modificiran da uključuje informacije o novom servletu, poslužitelj mora biti zaustavljen i ponovo pokrenut. Servlet se takođe može hostovati na pokrenutom serveru pomoću administrativnog uslužnog programa, ali da bi se to uradilo, servlet mora biti upakovan u datoteku WAR Web arhive. Ako se datoteka klase servleta promijenila, nije potrebno zaustaviti server i pokrenuti ga ponovo. Po defaultu, server je konfiguriran tako da pozivanje servleta na http://localhost:81/_reload uzrokuje ponovno učitavanje svih klasa i modificirana klasa servleta postaje dostupna za zahtjeve klijenta (slika 4-1). Posjetite ovu stranicu nakon što je datoteka klase servleta izmijenjena. Zaustavljanje servera jednostavno nije potrebno.

Ako je čitalac već imao iskustva sa servletima, cijenit će jednostavnost Blazix servera u poređenju sa drugim Java serverima, kao što je Tomcat server.

Da biste odmah prešli na posao, razmotrite jednostavan primjer, servlet neki Servlet (listing 4.1).

Listing 4.1. Servlet SomeServlet.java I

import java.io.*; import javax.servlet.*; import javax.servlet.http.*;

javna klasa SomeServlet proširuje HttpServlet ( public void doGet(HttpServletRequest zahtjev,

HttpServletResponse odgovor) izbacuje ServletException, IOException ( Printwriter out = response.getWriter(); out.println("Hello World");

U konfiguracijski fajl web servera napišite sljedeće:

servlet.name: prvi

servlet.first.className: SomeServlet

servlet.first.url: /dofirst

Tada će poziv servleta iz pretraživača poprimiti oblik http://localhost:81 /dofirst (slika 4.2).

Java servleti pružaju metodu nezavisnu od platforme za pravljenje web aplikacija (ovo nije sigurno, ali nećemo dalje ulaziti u ovu temu, jer bismo tada morali definirati šta se podrazumijeva pod web aplikacijom, koja nije uključena u lista pokrivenih tema), a mnoge aplikacije su brze za rad i nemaju ograničenja CGI aplikacija. Servlet radi pod web serverom i, za razliku od apleta, ne zahtijeva grafičko korisničko sučelje. Servlet komunicira sa serverom tako što s njim razmjenjuje zahtjeve i odgovore. Klijentski program postavlja zahtjeve serveru. Zahtjev obrađuje server, prosljeđuje se servletu, servlet šalje odgovor klijentu preko servera. Servleti su danas vrlo popularni za izgradnju interaktivnih web aplikacija. Postoji mnogo Web servera koji mogu raditi sa servletima, kao što su Tomcat, iPlanet Web Server (ranije Netscape

Enterprise Server), Blazix. J Builder Enterprise koristi Borland Enterprise Server (BES) uključen u paket i takođe podržava web serveri Logic, WebSphere i iPlanet. J Builder Enterprise Server uključuje Tomcat server koji se koristi "podrazumevano".

Rice. 4.2. Pozivanje servleta

Jedna važna prednost servleta je njihova brzina. Za razliku od CGI aplikacija, servleti se samo jednom učitavaju u memoriju i zatim se izvršavaju direktno iz memorije. Servleti su u suštini aplikacije sa više niti. Osim toga, oni su nezavisni od platforme, jer su napisani na Javi.

JSP tehnologija kojoj Poglavlje 3, je proširenje servlet tehnologije, u JSP-u Posebna pažnja fokusira se na rad sa HTML i XML dokumentima. Kao dio HTML i XML koda, JSP fragmenti nalaze svoju najčešću upotrebu. Kako napraviti izbor i odlučiti šta koristiti: servlete ili serverske stranice? Servleti su prikladniji za rješavanje programskih zadataka niskog nivoa, a manje za rješavanje zadataka kreiranja logike prezentacije aplikacije. JSP-ovi na strani servera, s druge strane, uglavnom su fokusirani na to kako korisniku predstaviti rezultat na najprikladniji način. Stranice servera se kreiraju u liniji sa HTML kodom koristeći stil izrade HTML dokumenta. JSP tehnologija pruža mnogo bogatije karakteristike od običnog HTML-a. JSP-ovi mogu pružiti mogućnost implementacije logike aplikacije koristeći jednostavne Java bean-ove kao i EJB-ove na strani servera kreiranjem prilagođenih biblioteka prečica. Same po sebi, Java serverske stranice mogu biti modularne komponente za višekratnu upotrebu koje rade sa logikom prezentacije koje se mogu koristiti u sprezi sa raznim šablonima i filterima. JSP-ovi se konvertuju u servlete, tako da teoretski možete koristiti samo servlete. Međutim, JSP tehnologija je dizajnirana da pojednostavi proces kreiranja Web dokumenata odvajanjem logike prezentacije aplikacije od sadržaja dokumenta. U većini slučajeva, odgovor koji se šalje klijentu sastoji se od šablona za prezentaciju dokumenata i podataka koji se automatski generišu popunjavanjem predloška. U ovim situacijama, mnogo je lakše raditi sa JSP-ovima nego sa servletima.

Jedna od najprijatnijih karakteristika Jave je njena višestruka priroda. Naravno, stvaranje tradicionalnih desktopa i čak mobilne aplikacije- Ovo je kul. Ali šta ako želite da izađete sa utabane staze i uđete u teritoriju Java web razvoja? Za tebe tamo dobre vijesti: Jezik dolazi sa kompletnim Servlet API-jem koji vam omogućava da napravite robusne web aplikacije bez previše muke.

Izrada Java aplikacija sa servletima

Dakle, već smo kreirali konfiguracijske datoteke aplikacije. Međutim, u svom trenutnom stanju, bukvalno ništa ne radi. Želimo da klijenti mogu da se registruju sa HTML formom, tako da sledeća stvar koju treba da uradimo je da kreiramo JSP fajlove koji će prikazati gornji obrazac i detalje o klijentu kada registracija bude uspešna. Ovo ćemo sada uraditi.

Radim na izgledu

Izgled aplikacije će biti definisan sa dva JSP fajla - u kontekstu MVC-a oni se zovu pogledi. Prvi će biti odgovoran za prikaz obrasca za registraciju i moguće greške pozvan nakon provjere unesenih podataka. Druga će biti uobičajena stranica dobrodošlice koja će prikazati podatke koje je korisnik unio nakon uspješnog završetka procesa registracije.

Ovo je prvi JSP fajl:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> Registracija

Registracija

$(kršenje).