Java-servlets
| java-servlets | ||
|---|---|---|
| servlet-komponent | ||
| Generell informasjon | ||
| utvikler | Oracle Corporation / Sun Microsystems | |
| Tillatelse | Proprietær (gratis for ikke-kommersiell bruk) | |
| Teknisk informasjon | ||
| Planlagt inn | Java | |
| Støttede plattformer | Java EE | |
| Versjoner | ||
| Siste stabile versjon | 3.1 ( info ) ( 2013-05-28 ) _ | |
| Linker | ||
En servlet er en klasse i programmeringsspråket Java , som brukes til å utvide mulighetene til en server . Selv om servlets kan svare på alle typer forespørsler, brukes de ofte til å utvide applikasjoner som er vert for webservere , slik at de kan sees på som Java-appleter som kjører på servere i stedet for nettlesere. Disse typene servlets er Java-motstykket til andre dynamiske webinnholdsteknologier, for eksempel PHP og ASP.NET .
Ordet servlet kommer fra et tidligere ord, applet , som refererer til små programmer som kjører i sammenheng med en nettleser.
Den vanligste bruken av servlets er å dynamisk generere nettsider fra parametrene til forespørselen sendt av nettleseren.
Historikk
Den originale servlet-spesifikasjonen ble laget av Sun Microsystems (versjon 1.0 ble fullført i juni 1997). Fra og med versjon 2.3 ble servlet-spesifikasjonen utviklet etter Java Community Process .
Livssyklus
- 1. Initialiser servletten
Når en server laster en servlet, kjører den initservletens metode. Initialiseringsprosessen må fullføres før den kan håndtere klientforespørsler, og før servleten blir ødelagt.
Selv om mange servlets kjører på flertrådede servere , har ikke servlets samtidighetsproblemer under initialisering. Serveren kaller metoden bare én gang initnår den oppretter servlet-forekomsten, og vil ikke kalle den igjen med mindre servleten lastes inn på nytt. Serveren kan ikke laste en servlet på nytt uten først å ødelegge servleten ved å kalle destroy.
- 2. Samhandle med kunder
Etter initialisering kan servleten betjene klientforespørsler. Disse forespørslene vil bli servert av samme servlet-forekomst, så det må utvises forsiktighet når du får tilgang til delte variabler, da det kan være synkroniseringsproblemer mellom samtidige forespørsler.
- 3. Ødelegg servletten
Servlets kjører til serveren ødelegger dem, enten ved å slå av serveren eller på forespørsel fra systemadministratoren. Når en server ødelegger en servlet, kjører den destroyservletens egen metode. Denne metoden utføres bare én gang og kan kalles når det fortsatt er svar i prosess, så man må passe på å vente på dem. Serveren vil ikke kjøre servleten igjen før den er lastet inn og initialisert på nytt.
Nødvendige klasser og objekter
En Servlet opprettes med pakken javax.servlet .
HttpServletRequest-grensesnitt
Denne lenken for å se inneholder den detaljerte definisjonen (på engelsk ): [1]
HttpServletResponse-grensesnitt
Denne lenken inneholder den detaljerte spesifikasjonen (på engelsk): [2]
Fordeler med å bruke Servlets i stedet for CGI
- De er mer effektive og bruker færre ressurser. CGI bruker en ny prosess for hver forespørsel. På den annen side, i Servlets er det kun én kopi som er lastet inn i den virtuelle maskinen og det startes en tråd for hver forespørsel, noe som reduserer serverens minnebruk og responstid.
- De har utholdenhet, så de forblir aktive etter at forespørselen er fullført.
Eksempel
Servlet-kode som behandler en GET -forespørsel og returnerer en enkel HTML -nettside :
pakke org.tester ;
import java.io.IOException ;
import java.io.PrintWriter ;
import javax.servlet.ServletException ;
importer javax.servlet.http.HttpServlet ;
import javax.servlet.http.HttpServletRequest ;
import javax.servlet.http.HttpServletResponse ;
offentlig klasse HolaSextoInformaticaServlet utvider HttpServlet {
/**
* Eksempelservlet som behandler en GET-forespørsel
* @param-forespørsel
* @param-svar
* @throws ServletException
* @throws IOException
*/
@Override
public void doGet ( HttpServletRequest request , HttpServletResponse response ) kaster ServletException , IOException . setContentType ( "tekst/html" ); PrintWriter ut = svar . getWriter (); ut . println ( "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">" ); ut . println ( "<html>" ); ut . println ( "<head><title>HelloSextoInformatica Eksempel</title></head>" ); ut . println ( "<body>" ); ut . println ( "<h1>Hei HolaSextoInformatica!</h1>" ); ut . println ( "</body></html>" ); ut . lukk (); } }