JSP

Nov. 15- 20.
Határidő: Dec. 4.

Laborházik | Dokumentáció


E laborházi lényege:
- JSP használata
- MVC elv alkalmazása kisméretű Web-alkalmazás esetén


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. Írjuk át az előző (servlet-es) laborfeladatot MVC elv alapján.
Írjuk át a bejelentkező oldalát JSP-re. Az elküldött adatokat (submit) továbbra is servlet dolgozza fel.

A II. pontra vonatkozó megjegyzés: az adatok megosztása (a JSP és a servlet között) történjen standard Web-es nyilvános hatókörbe helyezett bean-eken keresztül, melyeknek mezőit a vezérlő servlet-ben állítjuk be és a JSP-ben csak megjelenítjük.
Az elküldött adatok (submit) feldolgozása a vezérlő servletben történjen, a megjelenítés pedig JSP-ben.
A vezérlő servletben az átirányítás szerver oldalon történjen (RequestDispatcher forward metódusával).
Helyezzünk el az oldalon egy logout/kijelentkezés gombot, melynek hatására érvénytelenítjük a szesszió-adatokat.


II. (idézve a servlet-es laborházi szövegéből:)
  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:
    • a gyufaszálak számát és magukat a gyufaszálakat is
    • a bejelentkezett felhasználó választási lehetőségét (1 vagy 2 gyufaszálat szeretne elvenni): rádiógomb
    • döntés: submit gomb
    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:
    • kiinduló szó (ha nincs megadva, akkor a servlet megfelelő init paraméteréből vegye)
    • végső szó (ha nincs megadva, akkor a servlet megfelelő init paraméteréből vegye)
    • Játék indul (submit gomb)
    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:
    • a generált számot és az emlékezetből beírt számot egymás alatt, piros színnel jelölve a hibás értékeket (csak az a számjegy számít helyesnek, amelynek a pozíciója és az értéke is megegyezik). Pl.:
      2134
      2314
    • hogy hány százalékos volt a legutóbbi találat (Pl. az előző példa 50%-os találatnak számít)
    • nehézségi fokonként elért eddigi átlageredmény
    • a kipróbált legmagasabb nehézségi fokon elért eddigi legjobb találat (nehézségi fok, illetve hány százalékos volt a találat)
    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: