Java-servletit
| java-servletit | ||
|---|---|---|
| servlet-komponentti | ||
| Yleistä tietoa | ||
| kehittäjä | Oracle Corporation / Sun Microsystems | |
| Lisenssi | Omistusoikeus (ilmainen ei-kaupalliseen käyttöön) | |
| Tekninen informaatio | ||
| Aikataulutettu sisään | Java | |
| Tuetut alustat | Java EE | |
| Versiot | ||
| Uusin vakaa versio | 3.1 ( info ) ( 28.5.2013 ) _ | |
| Linkit | ||
Servlet on Java - ohjelmointikielen luokka , jota käytetään laajentamaan palvelimen ominaisuuksia . Vaikka servletit voivat vastata kaikentyyppisiin pyyntöihin, niitä käytetään yleisesti verkkopalvelimien isännöimien sovellusten laajentamiseen , joten niitä voidaan pitää palvelimissa toimivina Java -sovelmina verkkoselaimien sijaan. Tämän tyyppiset servletit ovat Java-vastine muille dynaamisille Web-sisältötekniikoille, kuten PHP ja ASP.NET .
Sana servlet tulee aikaisemmasta sanasta sovelma , joka viittaa pieniin ohjelmiin, jotka toimivat verkkoselaimen yhteydessä.
Yleisin servlettien käyttö on web-sivujen luominen dynaamisesti selaimen lähettämän pyynnön parametreistä.
Historia
Alkuperäisen servlet-määrityksen loi Sun Microsystems (versio 1.0 valmistui kesäkuussa 1997). Versiosta 2.3 alkaen servlet-spesifikaatio kehitettiin Java Community Process -prosessin mukaisesti .
Elinkaari
- 1. Alusta servlet
Kun palvelin lataa servletin, se suorittaa initservletin menetelmän. Alustusprosessin on saatava päätökseen ennen kuin se voi käsitellä asiakaspyyntöjä ja ennen kuin servlet tuhoutuu.
Vaikka monet servletit toimivat monisäikeisillä palvelimilla , servleteillä ei ole samanaikaisuusongelmia alustuksen aikana. Palvelin kutsuu menetelmää vain kerran initluodessaan servlet-instanssia, eikä kutsu sitä uudelleen, ellei servlet-palvelinta ladata uudelleen. Palvelin ei voi ladata servlettiä uudelleen tuhoamatta ensin servletiä kutsumalla destroy.
- 2. Ole vuorovaikutuksessa asiakkaiden kanssa
Alustuksen jälkeen servlet voi palvella asiakkaan pyyntöjä. Nämä pyynnöt palvelee sama servlet-esiintymä, joten jaettujen muuttujien käytössä on oltava varovainen, koska samanaikaisten pyyntöjen välillä voi olla synkronointiongelmia.
- 3. Tuhoa servlet
Servletit toimivat, kunnes palvelin tuhoaa ne joko sammuttamalla palvelimen tai järjestelmänvalvojan pyynnöstä. Kun palvelin tuhoaa servletin, se suorittaa destroyservletin oman menetelmän. Tämä menetelmä suoritetaan vain kerran ja sitä voidaan kutsua, kun vastauksia on vielä kesken, joten niitä on odotettava huolellisesti. Palvelin ei suorita servlettiä uudelleen ennen kuin se on ladattu ja alustettu uudelleen.
Vaaditut luokat ja objektit
Servlet luodaan paketin javax.servlet mukana .
HttpServletRequest-käyttöliittymä
Tämä linkki sisältää yksityiskohtaisen määritelmän ( englanniksi ): [1]
HttpServletResponse-käyttöliittymä
Tämä linkki sisältää yksityiskohtaiset tiedot (englanniksi): [2]
Servlettien käytön edut CGI:n sijaan
- Ne ovat tehokkaampia ja käyttävät vähemmän resursseja. CGI käyttää uutta prosessia jokaiselle pyynnölle. Toisaalta Servleteissä virtuaalikoneeseen ladataan vain yksi kopio ja jokaiselle pyynnölle käynnistetään säie, mikä vähentää palvelimen muistin käyttöä ja vasteaikaa.
- Ne ovat pysyviä, joten ne pysyvät aktiivisina pyynnön päättymisen jälkeen.
Esimerkki
Servlet-koodi, joka käsittelee GET -pyynnön ja palauttaa yksinkertaisen HTML -verkkosivun :
paketti org.tests ;
tuonti java.io.IOException ;
tuonti java.io.PrintWriter ;
tuonti javax.servlet.ServletException ;
tuonti javax.servlet.http.HttpServlet ;
tuonti javax.servlet.http.HttpServletRequest ;
tuonti javax.servlet.http.HttpServletResponse ;
public class HolaSextoInformaticaServlet laajentaa HttpServlet {
/**
* Esimerkki servletistä, joka käsittelee GET-pyynnön
* @param request
* @param vastaus
* @throws ServletException *
@throws IOException
*/
@Override
public void doGet ( HttpServletRequest request , HttpServletResponse vastaus ) heittää ServletException { vastaus , . setContentType ( "text/html" ); PrintWriter out = vastaus . getWriter (); ulos . println ( "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//FI\">" ); ulos . println ( "<html>" ); ulos . println ( "<head><title>HelloSextoInformatica Esimerkki</title></head>" ); ulos . println ( "<body>" ); ulos . println ( "<h1>Hei HolaSextoInformatica!</h1>" ); ulos . println ( "</body></html>" ); ulos . sulje (); } }