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:
- W04_nn_xxxxxxx.zip : A forráskódot tartalmazó projekt
- W04_nn_xxxxxxx.war : a webalkalmazásnak megfelelő telepíthető egység
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:
- "alkalmazasnev/login.do" URL-re egy felhasználónevet és jelszót bekérő oldalt jelenít meg
- az adatok elküldésére (submit gomb) leellenőrzi a felhasználónév és jelszó helyességét, melyek a servlet
init paramétereiként vannak megadva
- helyes adatok esetén továbbít a II. pontnál megadott servletre
- helytelen beviteli adatok esetén ismét a bejelentkező oldalt jelenítse meg a megfelelő hibaüzenetekkel és a form
tartalmazza a már bevitt -helytelen- adatokat.
A következő hibalehetőségeket ellenőrizzük:
- hiányzó felhasználónév
- hiányzó jelszó
- helytelen felhasználónév/jelszó
- sikeres bejelentkezés esetén tároljuk el a szesszióban a felhasználó nevét
- ha már sikeresen bejelentkezett a felhasználó, akkor az "alkalmazasnev/login.do" URL irányítson át a II. pontnál megadott
servletre
Az átirányításokat (ezúttal) a servlet végezze (NE szűrőt használjunk).
II.
-
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.
-
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.
-
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.
-
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.
-
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: