Java Servlet vodič za početnike

Java Servlet je program na strani poslužitelja, napisan u istom programskom jeziku, koji prima signale korisnika i šalje natrag odgovore na njega. To je ključni element koji generira tipičnu Java EE, osim JSP, EJB, XML i drugih srodnih tehnologija. Aplikacija se može pakirati u WAR (Web AR chive) datoteku za implementaciju na web poslužitelju. Poslužitelj koji može pokrenuti Java servlet naziva se spremnik. Program koji se izvodi na takvom poslužitelju može stvoriti dinamičke web stranice.

Java Servlet: Osnove

Najpoznatiji i najšire korišteni kontejneri Tomcat i JBoss. Tehnički, servlet je normalna Java klasa koja ima proširenje za opći protokol klijent-poslužitelj ili HTTP. U praksi, on se koristi za obradu zahtjeva putem redefiniranja HttpServlet GET i POST-a. Kontejner Java Servlet pruža Http.ServletRequest i Http.ServletResponse - objekt upita /odgovora koji se obično koristi zajedno s JSP-om za generiranje dinamičkog sadržaja.


Tipična skripta modela:
  • JSP korisniku daje obrazac za unos podataka.
  • Servlet prima ulazne podatke, obrađuje ih i šalje odgovor.
  • Za kvalitetan rad koristi posebne filtre.
  • Java Servlet filtri su povezani. Java komponente koje se koriste za presretanje i obradu upita prije slanja na servlet i idpovidi nakon njegove koda, a prije nego se spremnik šalje odgovor na klijenta Uobičajeni zadaci obavljaju s filtrima.
  • Registriranje parametara upita za registraciju datoteka.
  • Provjera autentičnosti i autorizacija zahtjeva za resursima.
  • Formatirajte tijelo upita ili zaglavlje prije slanja servletu.
  • Sažimanje podataka o odgovoru koji se šalju klijentu.
  • Promjena odgovora, dodavanje nekih kolačića.
  • Informacije o zaglavlju Java Servleta.
  • Filtri su povezani i konfigurirani u datoteci deskriptora implementacije (web.xml). Poslužitelji i filtri se ne poznaju, pa možete dodati ili ukloniti filtar jednostavnim uređivanjem web.xml. Dopušteno je imati više filtara za jedan resurs ili stvoriti lanac filtra za web.xml ili pokrenuti Java Servlet filtre tako da implementirate javax.servlet.Filter sučelje.


    Glavne funkcije Servleta

    Paralelni zahtjevi poslužitelja struje se, čime se osigurava važna web-multi-threading i paralelizam. Ključne značajke:
  • Prenosivost. Budući da je Java neovisna o platformi, isto vrijedi i za servletove. Na primjer, možete ga stvoriti u Windows operativnom sustavu tako da ga programeri GlassFish-a koriste kao web-poslužitelj, a zatim ga mogu pokrenuti na bilo kojem drugom OS-u, kao što je Unix, Linux i Apache Java Servlet web poslužitelj. Ova značajka ga čini prijenosnim, a to je njegova glavna prednost u odnosu na CGI.
  • Učinkovitost i skalabilnost. Kada se Servlet razmjesti i preuzme na poslužitelj, može odmah početi izvršavati zahtjeve klijenata. Poziva se pomoću svjetlosnog toka, tako da se istovremeno može ispuniti nekoliko zahtjeva klijenata pomoću funkcijevišejezgrenost Java. Za razliku od CGI, gdje poslužitelj inicira novi proces za svaki zahtjev klijenta.
  • Pouzdanost. Prateći vrhunske Java funkcije kao što su skupljanje smeća, rukovanje iznimkama, Java sigurnosni upravitelj i drugi, manje je sklon problemima u upravljanju i curenju memorije. To čini razvoj aplikacije sigurnim i bez grešaka.
  • Potreba za korištenjem dinamičkih web stranica

    Postoji mnogo razloga zašto bi tvrtka željela stvoriti dinamične web stranice "on-the-fly", na primjer, kada se podaci na web stranici često mijenjaju. Vijesti i vremenske stranice obično se oslanjaju na CGI za održavanje svježeg sadržaja koji ne zahtijeva stalnu pozornost programera. Web stranice e-trgovine koje navode trenutačne cijene i razine zaliha koriste CGI za primanje sadržaja na zahtjev, dobivši ga iz interne infrastrukture tvrtke.
    Mnogi korisnici imaju iskustva u korištenju Java tehnologije za stvaranje web-usluga temeljenih na CGI-ju, ali Java Servletovi su učinkovitiji, moćniji, jednostavniji za korištenje i jeftiniji od tradicionalnih CGI alternativa. Prednosti Java servleta:
  • Učinkovitost. U tradicionalnom CGI-u, svaki HTTP zahtjev pokreće novi CGI proces. Čak i ako je njegov kod savršeno implementiran, često postoji značajna količina troškova, ne samo kada je proces pokrenut, već i tijekom njegova izvođenja. Kada se koriste servleti, JVM ostaje učitan u memoriji, a svaki zahtjev obrađuje Java stream. Kao primjer Java Servleta, ako u tradicionalnom CGI modelu postoji više istovremenih X upita, to znači dada se kod za program učitava u memoriju X puta. To postaje preopterećenje na web poslužitelju. Međutim, u okruženju servleta postoje tokovi X, gdje je pokrenuta samo jedna kopija klase. Rezultat je povećana učinkovitost i skalabilnost na više platformi.
  • Pogodnost. Kada koristite program, nema smisla učiti novi jezik, na primjer, Perl, samo za obavljanje CGI funkcija. Osim toga, servleti imaju veliku infrastrukturu za mnoge HTML zadatke, što uvelike ubrzava razvojni proces.
  • Snaga - nažalost, tradicionalne CGI skripte ostavljaju puno željenog. Na primjer, njihovi uobičajeni programi ne mogu izravno razgovarati s web poslužiteljima, što znači da morate stvoriti cijelo sučelje. Servleti mogu izravno komunicirati s web poslužiteljima pojednostavljenjem operacija koje zahtijevaju izravan pristup skladištima podataka. Također su jedinstveni jer mogu razmjenjivati ​​podatke s drugim servletovima i održavati informacije između zahtjeva, što čini praćenje sesija izuzetno jednostavnim.
  • Javova prenosivost proteže se izravno na servletove. U stvari, gotovo svaki glavni web-poslužitelj koji se trenutno koristi podržava Java Servletove izravno ili putem modula.
  • Ekonomija. Sa stajališta razvoja, implementacija servleta je mnogo jeftinija od drugih opcija koje zahtijevaju da korisnički definirane enkodiranje ispravno rade s web poslužiteljima. Java Servlet preusmjeravanje je spremno za rad i može minimizirati troškove poslovanja bez žrtvovanja prednosti dinamikesadržaj.

    Stvaranje strukture direktorija

    Da biste započeli, kreirajte sljedeću strukturu direktorija.
    Gdje u mapi:
  • Deploy - postavite kreiranu datoteku.
  • Src - Postavite izvorne datoteke Java paketa net.codejava.servlet.
  • WebContent - Spremite JSP stranice i druge web-resurse.
  • WebContent WEB-INF - instaliran je deskriptor web.xml.
  • WebContent WEB-INF - Kompilirane klase. Zatim, kreirajte izvornu datoteku pod nazivom Java QuickServlet.java u direktorijumu servlet src net codejava sa sljedećim kodom.
    Ovaj servlet poziva nekoliko metoda iz HttpServlet:
  • init () - će pozvati metodu kada pristupi prvom klijentu. Tipično, ovdje se unosi inicijalizacijski kod.
  • doGet () - radi svaki put kada je HTTP zahtjev GET.
  • Servlet uvodi dva elementa:
  • HttpServletRequest - Objekt omotava sva zaglavlja HTTP zahtjeva kako bi dobio kontrolu nad GET /POST parametrima kao i drugim HTTP zaglavljima koja se šalju od klijenata putem metoda getParameter () i getHeader () ) respektivno.
  • ​​
  • HttpServletResponse - koristi se za odgovaranje na HTTP zahtjev, izvršava konfiguraciju zaglavlja odgovora i šalje HTML sadržaj korisniku. Metoda doGet () šalje jednostavan HTML-kod koji prenosi poruku, na primjer, "Pozdrav, ja sam Java Servlet!".
  • Metoda za provedbu zahtjeva kupaca:

  • DoPost () - pozvana u trenutku kada korisnik zatraži HTTP POST.
  • DoGet () - razumije argumente Http.ServletRequest i Http.ServletResponse kao argumente. U ovom slučaju, vrijednosti dvaju parametara širine i visine pravokutnika dobivaju se iz upita za izračun područja i slanjerezultat vratiti klijentu.
  • Destroy () - Kontejner će ga pozvati kada treba izbrisati Java ee Servlet zaustavlja.
  • Pisanje JSP stranica

    Stvorite datoteku s nazivom index.jsp u direktoriju WebContent sa sljedećim sadržajem.
    Na ovoj stranici, JSP:
  • Postavite hipervezu s atributom href = Quick.Servlet, koji označava relativni put servleta i URL mapiranje za njega.
  • Klikom na ovu vezu prima poslužitelj HTTP GET zahtjev i poziva se doGet () metoda.
  • Kako bi prikazali slanje HTTP zahtjeva, oni stvaraju jednostavan oblik s dva tekstualna polja: širinu i visinu.
  • Atribut obrasca u akciji postavljen je na relativni put.
  • Gumb "Pošalji" naziva se "Izračunaj".
  • JSP stranica će izgledati ovako.

    Objave i postavke Java web servleta

    Da bi servlet poslužio korisničke upite, morate deklarirati i konfigurirati njegovo mapiranje u datoteci web deskriptora. Izradite XML datoteku s proširenjem web.xml ispod WebContent WEB-INF imenika sa sljedećim XML kodom.
    Očito, servlet je deklariran korištenjem elementa i njegovih podređenih elemenata koji određuju opisni naziv za njega i specificiraju puno ime klase. Konfiguriran je za posluživanje upita pomoću elementa i njegovih dječjih dijelova koji specificiraju ime deklarirano s elementom i URL obrascem koji će se mapirati na servlet. Predložak može biti točno podudaranje direktorija.

    Izvođenje kompilacije

    Prije dovršetka kompilacije provjeritepostavite varijablu PATH okoliša, koji uključuje katalog JDK_HOMEbin, tako da možete pristupiti naredbenog retka i imati na raspolaganju datoteku koja se obično pruža spremnika Servlet. Kada koristite Tomkat datoteku stavi u TOMCAT_HOMElib zove. Otvorite naredbeni redak operativni sustav i promjenu radnog direktorija za QuickServlet, kao što je navedeno u strukturi. Upišite sljedeću naredbu:. Javac -CP TOMCAT_HOME lib Servlet-api.jar „D CLASS_DIR SRC_DIR QuickServlet.java Zamjenjuje imena TOMCAT.HOME, CLASS_DIR i vrijednost SRC_DIR. TOMCAT_HOME To Podešavanje imenik na računalu u mapi Ako put sadrži. praznine, stavi ga na sljedeći način:.. CLASS_DIR = WebContent web-INF klase SRC_DIR = src neto codejava servlet Ova momčad skompylyruet QuickServlet.java datoteke i mjesto generirana .class WebContent web-INF klase

    Ambalaža web aplikacija

    Norma način za implementaciju Java EE aplikacija je proširenje svoje RATA pakiranja. U naredbeni redak ubrizgava tim uvijek završava s točkom:
  • jarcfvdeployQuickServletApp.war -C WebContent.
  • Čaša će staviti sve u jednom direktoriju u zip-arhiv formatu zove Quick.ServletApp.war pod imenik. Sada rasporediti Quick.ServletApp.war datoteke na poslužitelju, kopirajte ga na Tomcat. Pokrenite program pokretanjem Tomcat 7.exe imenik. Nakon što se prijavite u konzolu pokazuje da Quick.ServletApp.war proširio datoteka poslužitelj i sluša na portu broj 8080.

    Ispitivanje QuickServletApp

    Sada otvorite web-preglednik i upišite sljedeći tekst u adresnoj traci: http: //Lokalno: 8080 /QuickServletApp. S obzirom da se ne navesti određenu stranicu kao zadani index.jsp učitava samostalno. Za provjeruAko Servlet zatraži HTTP GET, kliknite hipervezu "Kliknite ovdje da biste poslali GET zahtjev". Da biste ga testirali s HTTP POST zahtjevom, kliknite gumb preglednika i unesite dva broja u širinu i visinu tekstualnih polja. Kliknite gumb "Izračunaj" i vratit će rezultat izračunatog područja.

    Primjeri Tomcata

    Servlet je Java komponenta koja se pokreće web-om, a njome upravlja kontejner, na primjer, Tomcat, koji generira dinamički sadržaj kao odgovor na zahtjev klijenta. Spremnik spremnika ili servleta je proširenje web-poslužitelja koji pruža funkcionalnost servleta. Kontejner sadrži i upravlja servletom tijekom njegova životnog ciklusa. Servlet sučelje - središnja Java API apstrakcija. HttpServlet - najčešći poslužitelj koji poslužuje HTTP zahtjeve, je podrazred, GenericServlet, koji implementira Servlet sučelje. Servletovo sučelje najavljuje ove apstraktne metode. Životni ciklus servleta: voidinit (konfiguriranje Servlet.Config) voiddestroy () zahtjev za voidservice Java Servlet zahtjev, odgovor Servlet.Response) Konfiguracija i informacije servleta: servService.Config getServlet.Config () Linija getServlet.Info ().

    Java poslužiteljske funkcije

    JSP je još jedan učinkovit način za stvaranje dinamičkog web sadržaja pomoću Jave. Najjednostavniji način da se objasni razlika između njih je prepoznavanje da je servlet HTML u Javi, a JSP u Javi u HTML-u. Obje metode su učinkovite i mogu se koristiti samostalno, ali postoji nekoliko razlika:
  • Općenito, servleti rade brže od JSP-a, ali JSP se može kompilirati u Java servletove.
  • Web developer Java mora biti upoznat s obje tehnologije i kako oni mogumeđusobno nadopunjuju u jednoj provedbi.
  • Mnoge JSP značajke mogu se postići na strani klijenta pomoću javascripta. Time se smanjuje opterećenje poslužitelja tijekom razdoblja maksimalne upotrebe i često je to metoda koju koriste velika poduzeća s stalno velikim prometom.
  • Iako su samostalni Java programi dosegli vrhunac prije nekoliko godina, dinamični web-sadržaj temeljen na Java-u i dalje je u velikoj potražnji tvrtki iz cijelog svijeta. Ako korisnik trenutno ne koristi Java Servlete za stvaranje dinamičkog sadržaja, gubi zanimljivo polje s neograničenim mogućnostima za karijeru.

    Povezane publikacije