Arhiiv 2006 - Võrgurakendused I: ülesanne 2
Tähtaeg: 31. märts.
Ülesandeks on valmistada (üksi) serverirakendus, mis on analoogiline - kuid hulga lihtsam - kui http://www.reddit.com.
Sisukord
Mida rakendusega peab saama teha
Autentimist ja redigeerimist jne ei ole. Igaüks peab saama:
- vaadata (klikatavate) linkide loetelu, mis on sorteeritud pluss/miinus punktide ja aja järgi:
- mida uuem, seda eespool
- mida rohkem plusse, seda eespool
- mida rohkem miinuseid, seda tagapool.
- Mõistlik valem tuleb ise välja mõelda.
- Lisada link: vorm, kus on koht lingile ja ühelauselisele tekstile. Lõputult ei tohi linke lisada saada: failis ei tohi olla rohkem, kui 20 linki.
- Vajutada üles või alla nupule klikatavate linkide loetelus, mille peale salvestatakse pluss või miinuspunkt faili.
Kuidas rakendus tuleb kirjutada
Rakendus tuleb kirjutada kui komplekt cgi programme javas. Kasutada standard-javat, mitte j2ee-d. Java programmid tuleb käima tõmmata shelli skriptidest. Vaata materjale loengust.
Andmed tuleb kirjutada serveris olevasse csv-faili. Sellest failist ehitab üks teie cgi programmidest ka kuvatava html teksti.
Näide hakatuseks
Shelli skript, mis paneb käima java rakenduse (klassi nimega proov) Taneli läpakas: teistel on vaja programmide/failide asukohad muuta enda masina jaoks sobivaks, samuti pane kõik ühe rea peale!!!
#!/bin/sh cd /tmp /usr/local/java/j2sdk1.4.2_02/bin/java -cp /home/tanel/Lectures/Vorgurak1/Cgiproov/ proov $QUERY_STRING
NB! Pane see skript oma public_html kataloogi, näiteks nimega proov.cgi (.cgi peab lõpus olema). Seepeale tuleb ta teha käivitatavaks, öeldes chmod +x proov.cgi. Lõpuks proovime: http://www.itcollege.ee/~mina/proov.cgi
Õige java path itcolleges on /usr/bin/java, cp järel kataloog on /home/minukasutajanimi/public_html
NB! vajadus cd /tmp järele on hetkel ebaselge (et miks vaja?)
Käsurealt katsetamiseks on hea teha nii:
export QUERY_STRING=miskijutt
Java programmi näide, mida saab eelmise skriptiga käivitada
import java.io.*; public class proov { public static void main(String[] args) { String ls_str; System.out.println("content-type: text/html"); System.out.println(""); System.out.println("<p>OK algus javast on siin</p>"); System.out.println(args[0]); } }
Näide kaks
Järgmisena veidi keerukam näide, mis loeb faili data.txt, splitib read komade järgi ja saadud tulemuse trükib lõpuks välja linkide kogumina.
Java cgi näide: datafailist htmli tegemine on toodud koodijuppidena, mida pead käimapanekuks ise muutma (failipathid jne jne).
Lisaülesanne (ei ole kohustuslik)
Lisaülesanne annab ekstrapunkte, mida saab kasutada, kui mõnes muus praktikumis punkte puudu.
Kirjutada listide vaatamisprogramm eraldi http serverina javas: vaata javas kirjutatud http serveri näidet Javaserver.zip loengust. Sealt leiad puhta http serveri HttpServer.java ning eraldi variandi HttpServer_java.fulllecture, kuhu on lisatud rakendused listing ja redigeeri. Kumbki rakendus ei ole tehtud antud praktikumi jaoks, kuid neid on lihtne muuta ja kohandada antud praktikumi listinguprogrammiks.