Ohjelmointiharjoitus: Servletit eli palvelmat


Osatehtävä 1: Päivänmäärän näyttävä palvelma

Kirjoita palvelma Aika, jonka kutsuminen saa näyttää nykyisen ajanhetken. Käytä ajanhetken selvittämiseen Javan API:n luokkaa java.util.Date. Joudut kirjoittamaan kaksi luokkaa: edellä mainitun palvelmat sekä palvelimen, joka tietää kirjoittamasi palvelman osoitteen.

  1. Palvelman kirjoittaminen

    Kirjoita palvelma luokkana, jonka nimi on Aika ja joka perii luokan javax.servlet.http.HttpServlet. Kirjoita tälle luokalle metodi doGet, joka ottaa kaksi argumenttia HttpServletRequest ja HttpServletResponse. Selvitä palvelma-tutoriaalista muut yksityiskohdat.

  2. Palvelimen kirjoittaminen

    Kirjoita sitten ohjelma Palvelin, jossa on main-metodi, joka käynnistää Jettyn HttpServer -palvelimen kuuntelemaan koneesi porttia 8181. Joudut Jettyn arkkitehtuurin mukaan luomaan neljä oliota: kuuntelijan, palvelimen, kontekstin ja käsittelijän. Selvitä Jettyn HttpServeriä käsittelevästä tutoriaalista yksityiskohdat.

  3. Palvelman asentaminen palvelimeen

    Lisää Palvelin-ohjelmaan komento (addServlet), joka antaa palvelimelle tiedon kirjoittamasi palvelman Aika kutsunimestä, osoitteesta sekä luokasta.

  4. Palvelimen käynnistäminen

    Aja Palvelin-ohjelma, jolloin palvelmapalvelin käynnistyy. Tätä varten sinun täytyy antaa komento, jolle on kerrottu Jetty-asennuksen juurihakemisto sekä luokkapolku (CLASSPATH), josta löytyvät kaikki Jettyn tarvitsemat luokat. Esimerkiksi:

          java -Djetty.home=C:\Java\Jetty-4.0.1RC2 -classpath c:\Java\Jetty-4.0.1RC2\-
          lib\javax.servlet.jar;c:\Java\Jetty-4.0.1RC2\lib\com.sun.net.ssl.jar;c:\Jav-
          a\Jetty-4.0.1RC2\lib\org.apache.crimson.jar;c:\Java\Jetty-4.0.1RC2\lib\org.-
          apache.jasper.jar;c:\Java\Jetty-4.0.1RC2\lib\javax.xml.jaxp.jar;c:\Java\Jet-
          ty-4.0.1RC2\lib\org.mortbay.jetty.jar Palvelin
        
  5. Palvelman kutsuminen

    Avaa WWW-selain ja kirjoita osoitteeksi URL http://localhost:8181/Aika. Palvelman pitäisi tuottaa nyt sivu, jossa on kutsun ajanhetki.


Osatehtävä 2: HTML-taulukon tiedot tulostava palvelma

Kirjoita palvelma, jota kutsutaan html-kaavaketta lähetettäessä (submit). Käytä form-elementtiä, jonka sisällä on nimettyjä input-kenttiä. Esimerkiksi:

      <form action="http://localhost:8181/Kentat" method="post">
         Etunimi: <input type="text" name="etu">
         Sukunimi: <input type="text" name="suku"><br>
         <input type="reset" value="Tyhjennä">
         <input type="submit" value="Lähetä">
      </form>
    

joka tuotta seuraavanlaisen lomakkeen

Etunimi: Sukunimi:

Kun Lähetä-nappia painetaan, kenttien nimet ja arvot (esim. etu="Aku", suku="Ankka") välittyvät palvelmalle doPost -metodin ensimmäisen argumentin (tyypiltään HttpRequest) kautta.

Toimi seuraavalla tavalla:

  1. Kaavakken laatiminen

    Laadi HTML-sivu, joka sisältää yllä esitetyn kaavakkeen. Voit lisätä omia kenttiä, jos haluat, mutta riittää, jos vain tarkasti kopioit yllä olevan kaavakkeen ja laitat sen <html>- ja <body>-merkkausten sisään. (Jos haluat kokeilla muilla HTML-kaavakkeiden ominaisuuksilla, katso lisätietoja jostain HTML-oppaasta, esim. osoitteesta http://www.w3.org/TR/REC-html40/interact/forms.html).

  2. Palvelman kirjoittaminen

    Kirjoita palvelma Kentat, joka muodostaa HTML-sivun, jossa on kaavakkeen kaikkien kenttien nimet ja arvot. Selvitä yksityiskohdat palvelma-tutoriaalista.

  3. Kaavakkeen kokeileminen

    Avaa WWW-selain ja avaa kaavakkeen sisältävä html-tiedosto. Kokeile erilaisia syötteitä.


Osatehtävä 3: Tietokannan päivittäminen

Tämä on esimerkki monikerroksisesta ohjelmistosta, jossa on asiakas, WWW-palvelin sekä tietokantapalvelin.

Kirjoita kaavakkeisiin perustuva käyttöliittymä edellisellä harjoituskerralla luodun autorekisteritietokannan ylläpitämiseen.

Palvelmasta voidaan luoda JDBC-yhteys tietokantaan aivan kuten muistakin Java-ohjelmista.

Kirjoita ensin palvelma, jonka avulla voit kysellä annetun henkilön omistamia autoja. Kirjoita sitten palvelmat, joilla voit lisätä tietokantaan uusia autoja ja omistajia. Mieti sitten, kuinka näitä tietoja voisi muuttaa tai poistaa.


Last modified: Tue May 21 14:45:32 EEST 2002