Servlet

Nov. 8- 13.
Határidő: Nov. 27.

Laborházik | Dokumentáció


E laborházi lényege:
- Servletek használata
megj.: itt még használni fogjuk a servletet megjelenítésre IS (igaz, hogy csak nagyon egyszerű tartalom megjelenítésére, ... de legalább kiderül, mennyire kényelmetlen erre használni :)...). A későbbiekben a HTML oldalak generálására JSP-ket fogunk használni, a servlet számára marad a vezérlés megoldása.
!!! Kerüljük az adatok servlet-szintű mezőkben való tárolását (tudva, hogy ugyanaz az servlet-objektumpéldány szolgálja ki a különböző kéréseket). A szesszió-specifikus adatok értelemszerűen a szesszió hatókörbe legyenek lementve.


Feltölteni két állományt kell:
ahol nn a feladat sorszámát jelzi, xxxxxxx pedig a felhasználóazonosítót.
Az állományok mérete ne haladja meg a 2MB-ot.

Laborházik:
Megj.: A feladat I. részében leírtak mindenkire vonatkoznak, a II. részben a feladat egyénre szabott része szerepel (mindenki a sorszáma szerinti feladatot választja).

I. Készítsünk egy servlet alapú bejelentkező-oldalt, mely a következőképpen működik:

Az átirányításokat (ezúttal) a servlet végezze (NE szűrőt használjunk).
II.
  1. Gyufaszálas játék
    (Két játékos játszik, esetünkben ez a bejelentkezett felhasználó és a számítógép.
    A játék lényege: kezdetben 21 gyufaszál van az asztalon. A játékosok kisorsolják, hogy ki kezd, majd rendre hol az egyik hol a másik kerül sorra, és választhat, hogy egy vagy két gyufaszálat vesz el. Az veszít, aki a legutolsó gyufaszálat emeli el.)
    A servlet init paramétereként adjuk meg a játékpartner (a mi esetünkben a gép) nevét.
    Jelenítsük meg: Generáljuk véletlenszerűen, hogy ki kezd, illetve a gép döntéseit is generáljuk (lehet véletlenszerűen vagy vmilyen algoritmus alapján).
    A játék teljes menetét lehessen végigkövetni, azaz minden lépésben legyen kiírva, hogy az addigiakban melyik lépésben ki hány gyufaszálat vett el.
    Miután kiírtuk, hogy ki nyert, a játékot lehessen újrakezdeni.


  2. Hárombetűs szavak
    (Tudnivaló: a játék szerint egy hárombetűs szóból kiindulva el kell jutni egy másik hárombetűs szóhoz -értelmes szavakon keresztül- úgy, hogy mindig csak egyetlen betűt cserélhetünk ki)
    Kezdetben az oldalon az alábbiak jelenjenek meg: Játék indításra kérjük be a következő szót, illetve írjuk ki az addig beírt helyes szavak listáját.
    Megfelelő hibaüzenetet írjunk ki, ha a beírt szó nem hárombetűs vagy több, mint egy betűben különbözik az előzőtől.
    Ha eljutottunk az utolsó szóig, töröljük az eddigi listát és indulhasson újra a játék.


  3. Emberek és emberevők
    Az alábbi feladatot kell a bejelentkezett felhasználó megoldja az alkalmazásunk segítségével:
    egy folyóparthoz 3 ember és 3 emberevő érkezik és szeretnének (sértetlenül) átkelni a folyón. Egy (max.) két személyes csónak áll a rendelkezésükre, és az alábbi szabályok érvényesek:
    - amennyiben egy adott ponton valamelyik oldalon az emberevők száma (szigorúan) nagyobb, mint az embereké, akkor az emberevők megeszik az embereket...
    - a csónakban max. ketten férnek el, de üresen sem közlekedhet.
    Jelenítsük meg minden lépésben a folyó két oldalán levő személyeket (kezdetben minden szereplő a bal oldalon van), továbbá két legördülő listából lehessen kiválasztani, hogy ki vagy kik üljenek a csónakba. Egy submit gomb segítségével küldjük az adatokat (vagyis azt, hogy ki vagy kik üljenek a csónakba) a szerverre. A gombon mindig legyen feltüntetve a csónak iránya (pl. < vagy >), amit automatikusan módosítunk, amennyiben a lépés megengedett (azaz nem próbáljuk üresen küldeni a csónakot, illetve nem lép fel olyan helyzet, hogy az emberevők megegyék az embereket). Amennyiben a lépés hibás, jelezzük a hiba okát, ami pár másodpercig legyen látható (ezt pl. JavaScript segítségével oldhatjuk meg), majd állítsuk vissza a hibás lépés előtti állapotot.
    Egy számláló írja ki, hogy hányadik lépésnél tartunk. Ha sikerült az átkelés, egy gombnyomással lehessen elölről kezdeni a folyón való átkelést.


  4. Szövegcsere (replace)
    Az oldalon megjelenik egy nagyobb szövegdoboz (textarea), amelybe be lehet írni egy szöveget, alatta pedig két szövegmező. Egy submit gomb megnyomására az első szövegmezőben található szó összes előfordulását kell szerver oldalon kicserélni a második szövegmezőben található szóra.
    A kérésre válaszul küldött oldalon a szövegdobozban már a javított szöveg legyen, a szövegmezők pedig legyenek üresek. A szöveget az előzőekben leírtakhoz hasonló módon tovább lehet szerkeszteni. Három szintű művelet-visszavonási (undo) lehetőséget is kell biztosítani, egy undo gomb segítségével.


  5. Memóriajáték
    (A játék lényege: egy n számjegyű számot x másodpercig látunk, majd emlékezetből meg kell próbálni megismételni.)
    Legyen legalább három nehézségi fok, megadott n illetve x értékekkel, melyeket a servlet inicializáló paramétereiként adunk meg (egyre nagyobb n, illetve egyre kisebb x érték nagyobb nehézségi fokot jelent).
    Miután a játékos kiválasztotta a megfelelő nehézségi fokot, az indítás gombra kattint. Ekkor jelenítsük meg a szerver oldalon generált n számjegyű számot x másodpercig (az időzítés megoldható pl. a JavaScript setTimeout függvényét használva), majd kérjük a felhasználót, hogy emlékezetből írja be a korábban látott számot.
    Válaszként jelenítsük meg: Ezt követően lehessen újra próbálkozni (a nehézségi fok esetleges módosítása után): ismét az indítás gomra kattintva újabb szám jelenik meg, amit majd emlékezetből kell beírnunk, stb.

Hasznos hivatkozások: