ex02: Web datubāzu aplikācija ar Spring MVC

Sk. sagatavi uz FTP servera "students" - "pasn/JavaUnXml/luweb05/spring-library"

Šajā uzdevumā tiks veidota ļoti vienkārša Web datubāzu aplikācija (datubāzē ir tikai viena tabula!). Ar tās palīdzību ilustrēsim servletus un JSP, svarīgākos Spring MVC jēdzienus, Hibernate datu piekļuves iesaistīšanu Web aplikācijās, lietotāju sesijas un servletu filtrus.

Dotais aplikācijas prototips

Dots vienkāršs Spring MVC aplikācijas prototips, kurā ir implementēta lietotāju pielogošanās lapā login.htm (lietotāja vārdu un paroli salīdzina ar datubāzes ierakstu); ir dota arī jaunu lietotāju reģistrācijas forma un uz ekrāna izvadīts lietotāju saraksts no datubāzes.

Implementētā funkcionalitāte jau ir apgādāta ar "handle...()" metožu komponentu testiem, kuri notiek ārpus konteinera izmantojot imitācijobjektus (mock objects); un arī integrācijas testiem, izmantojot automātiskā HTTP klienta API-interfeisu - HttpUnit.

Šajā uzdevumā tiek piedāvāts papildus uzprogrammēt sekojošas prasības:

  • Lietotāju datubāze tiek inicializēta tādējādi, ka pirmais reģistrētais lietotājs kļūst par administratoru, bet visi turpmāk reģistrētie lietotāji - par parastiem lietotājiem.
  • Katrs reģistrēts lietotājs var redzēt navigācijas joslā visu lietotāju sarakstu display_users.htm un piekļūt tam. Iespējamie risinājumi - jāpievieno aplikācijai navigācijas josla, piemēram ar jsp:include palīdzību, vai arī ar Spring karkasa tēmām.
  • Tikai administrators var redzēt navigācijas joslā visu lietotāju sarakstu ar rediģēšanas iespējām update_users.htm. Tajā aiz katra lietotāja datiem ir doti linki "Edit" un "Delete", (adreses edit_dialogue.htm un delete_dialogue.htm). Abām šīm adresēm nodod vienu parametru - userName (lietotāja vārdu). Iespējamie risinājumi -
  • edit_dialogue.htm ielādē attiecīgā lietotāja datus un ļauj tos izlabot (lietotāja vārds un viņa datubāzes IDs tiek attēloti, bet tos labot nevar). Pēc datu ievadīšanas dialogā, tiek izdarītas izmaiņas un notiek pārsūtīšana uz login.html. Vai arī (nepareizas lauciņu aizpildīšanas gadījumā) - lietotāju atsūta atpakaļ uz edit_dialogue.htm
  • delete_dialogue.htm parāda dialogu:
    Vai Jūs vēlaties izmest lietotāju [lietotāja vārds]? [Jā] [Nē]. Atkarībā no atbildes, lietotāju vai nu dzēš vai nedzēš un nosūta viņu atpakaļ uz update_users.htm lapu.
  • Lapā display_users.htm lietotājus piedāvāt rādīt arī pa lappusēm, kur vienā lappusē ir 20 lietotāji.
  • Aplikācija arī Tomcat/JBoss vidē pareizi saņem un apstrādā Unikoda simbolus, ko ievada no HTML formām. Iespējamie risinājumi - pārkodēšanas filtrs, vai arī manuāla saņemto HTTP pieprasījuma parametru pārkodēšana.
  • Aplikācijā notiek lietotāju autentifikācija; lietotājus, kuri nav pielogojušies, aplikācija redirektē uz login.htm lapu. Iespējamie risinājumi - autentifikācijas filtrs vai arī pārbaude ar redirektu katrā aplikācijas notikumu apstrādes metodē "handleXxx()".
  • Visus lietotāja notikumus un kļūdas kopā ar atbilstošajiem izņēmumu stekiem aplikācija reģistrē (t.i. raksta logfailā). Logfaila ieraksts satur precīzu laiku un vietu, kur ziņojums radies. Iespējamie risinājumi - konfigurēt Log4J funkcionalitāti priekš Web aplikācijas uz Tomcat un JBoss.
  • Aplikācijā var pārslēgt 2 valodas - latviešu un angļu, izmantojot navigācijas joslā esošus linkus "EN" un "LV", kurus apstrādā Spring karkasa pieprasījumu pārtvērējs (interceptor).