Java Servlet

Straipsnis iš Vikipedijos, laisvosios enciklopedijos.
Peršokti į: navigaciją, paiešką

Java ServletSun Microsystems sukurta technologija, skirta dinaminiam turiniui generuoti. Java Servlet programuojamas Java programavimo kalba. Pagrindinė sąvoka šioje technologijoje – servletas. Tai serveryje esantis komponentas, gaunantis iš kliento (pvz., naršyklės) užklausą (angl. request) bei generuojantis atsaką (angl. response).

Servletas gali būti generuojamas automatiškai, pasitelkiant JavaServer Pages technologiją ar kitą šablonų generavimo variklį, tokį kaip WebMacro ar Apache Velocity.

Web talpykla (container)[taisyti | redaguoti kodą]

Nekomercinės Web talpyklos[taisyti | redaguoti kodą]

Komercinės Web talpyklos[taisyti | redaguoti kodą]

Servleto naudojimas[taisyti | redaguoti kodą]

Servletas gali būti naudojamas keletu būdu:

  • Dviejų lygių architektūra – servletas pats vienas generuoja vartotojui reikalingą puslapį. Šiuo atveju vartotojo naršyklė yra pirmas lygis, o servletas – antras. Ši architektūra pasirenkama, kuomet servleto užduotis yra loginiu požiūriu paprasta.
  • Trijų lygių architektūra – servletas darbo metu susisiekia arba su atskirai parašytu ir veikiančiu sprendimus priimančiu moduliu, arba (retais atvejais) ir tiesiai su duomenų baze. Tiesioginis susisiekimas su duomenų baze, nors ir techniškai galimas, paprastai nerekomenduojamas ir atskirai nenagrinėjamas.
  • Keturių lygių architektūra – servletas darbo metu susiekia su atskirai parašytu ir veikiančiu sprendimus priimančiu moduliu. Susiekiama dažniausiai per CORBA ar RMI protokolus. Šis modulis savo ruožtu susiekia su viena ar keliomis duomenų bazėmis (per JDBC).

Servleto gyvavimo ciklas[taisyti | redaguoti kodą]

Servletas gali būti vienoje iš šių būsenų:

  • Inicializuojamas: šiuo metu arba vykdomas servleto konstruktoriaus kodas, arba init() metodas. Servletą kuria konteineris, naudodamas konstruktorių be parametrų. Sukūrus servletą, vykdomas init() metodas. Viso servleto gyvavimo metu šis init() iškviečiamas tiktai vieną kartą.
  • Veikia (inicializuotas): vykdomas servleto metodas service(). Būtent šioje būsenoje servletas gali apdoroti kliento užklausas bei generuoti atsakus. Kiekvieną atsaką apdoroja atskira gija.
  • Sunaikintas: šiuo metu vykdomas metodas destroy(). Jis yra iškviečiamas vieną kartą ir yra skirtas atlikti veiksmams, kurių gali prireikti prieš sunaikinant servleto objektą (pvz., uždaryti prisijungimus prie duomenų bazės).
  • Neegzistuoja: servleto objektas nesukurtas arba sunaikintas.

Servleto kūrimas[taisyti | redaguoti kodą]

Paprasčiausio servleto pavyzdys[taisyti | redaguoti kodą]

Programuotojas, kurdamas paprasčiausią servletą, gali paveldėti javax.servlet.http. HttpServlet klasę ir perrašyti tam tikrus jos metodus. Dažniausiai užtenka perrašyti doGet ir doPost metodus, taip pat init pradiniams duomenims pakrauti.

  • init metodą iškviečia servleto talpykla iškart po servleto sukūrimo.
  • doGet(HttpServletRequest request, HttpServletResponse response) vykdo HTTP GET užklausą (HTTP Get request)
  • doPost(HttpServletRequest request, HttpServletResponse response) vykdo HTTP POST užklausą (HTTP Post request)

Be doGet() ir doPost() metodų, HttpServlet klasė turi atitinkamus metodus ir kitoms HTTP užklausoms (visoms, išskyrus HTTP CONNECT):

  • doTrace() vykdo HTTP TRACE užklausą
  • doOptions() vykdo HTTP OPTIONS užklausą
  • doHead() vykdo HTTP HEAD užklausą
  • doPut() vykdo HTTP PUT užklausą
  • doDelete() vykdo HTTP DELETE užklausą

doGet() ir doPost() metodai perduoda HTML formoje vartotojo įvestus duomenis. Skirtumas tarp HTTP GET ir POST metodų yra tas, kad pirmuoju metodu visa informacija apie norimą resursą perduodama interneto adresu.

HTML formos aprašymo pavyzdys:

<form action="/WebServer/main" method="POST">
    <input type="text" name="klausimas" />
    <input type="submit" name="Submit" value="Gerai" />
</form>

Tai pavyzdys paprasčiausios formos su laukeliu įvesti tekstui ir patvirtinimo mygtuku. Parametras action lemia, koks servletas konteineryje apdoros užklausą.

Servleto metodai doGet() ir doPost() perduoda du parametrus: HttpServletRequest ir HttpServletResponse. HttpServletRequest, be kitų duomenų, saugomos perduotų parametrų (pvz., iš html formos arba nuorodos) reikšmės.

String klausimas = request.getParameter(„klausimas“); // request - HttpServletRequest tipo objektas

Čia jau programuotojas pats turi nuspręsti, ką daryti su gautu tekstu. Jis gali sugeneruoti naują puslapį ir nusiųsti vartotojui:

PrintWriter out = response.getWriter();
out.println(„Jūsų įvestas klausimas buvo: “ + klausimas);

Svarbu prisiminti, kad puslapis automatiškai baigiamas generuoti tada, kai baigiamas vykdyti doGet() arba doPost() metodas.

Realiai HTML puslapiai (kaip parodyta pavyzdyje) servleto kode negeneruojami, juose dažniausiai realizuojama verslo logika, o prezentacijai dažniausiai naudojami JSP puslapiai.

Programavimo priemonės[taisyti | redaguoti kodą]

Kai kurios Java programavimo aplinkų turi priemones servletų kūrimo automatizavimui:



Nuorodos[taisyti | redaguoti kodą]