Praktiskais darbs - MVC portāls

Termiņš:
24.12.2007
Vertēšana:
Darbs ir obligāts un dod 20 punktus no gala atzīmes
Termiņa nokavēšanas sods:
Par katru nokavētu dienu -0,7 punkti
Komandas:
Praktisko darbu var izstrādāt divu cilvēku komandā vai individuāli

Darba mērķis

Izstrādāt plānā klienta Web aplikāciju, kas attēlo iepriekšēja praktiskajā darbā savāktos resursus, kā arī dod iespēju modificēt esošu saturu un pievienot jaunus datus. Web aplikācijas izstrādei izmantot Spring Web MVC ietvaru (kontrolieri, validācija, failu augšupielāde, internacionalizācija u.c.). JSP lapu vai citu šablonu stils ir tīrs un minimālistisks.

Situācijas apraksts

Portāls ir domāts lietotāju grāmatzīmju saglabāšanai, organizēšanai un apmaiņai. Ideja ir līdzīga populāram del.icio.us portālam, aprakstu var apskatīties šeit http://del.icio.us/about/

Izņēmuma kārtā ir iespējams izstrādāt Web aplikāciju arī par citu tematu, bet tas ir savlaicīgi jāsaskaņo ar pasniedzējiem.

Projekta struktūra

Jūsu uzdevums ir izveidot Maven Web projektu (t.i. artifactType=war).

Izmantojot iepriekšējā praktiskā darba risinājumu var izveidot JAR failu, kas ir "persistence unit" - tas satur datu modeļa klases (ar JPA anotācijām) kā arī failu META-INF/persistence.xml. Maven Web projektam jābūt atkarīgam no augšminētā "persistence unit".

Instrukciju tādas Maven projektu struktūras izveidošanai var izlasīt šeit: "How do I build more than one project at once?"

Demo piemērs

Viens no iespējamiem direktoriju struktūras variantiem ir piedāvāts demo projektā "java-eim-lab02".

Projektu var izčekot no SVN repozitorija - http://java-eim.googlecode.com/svn/trunk

Funkcionalitāte

Iepriekšējā darbā minētais kešošanas robots savāca jau eksistējošas grāmatzīmes un pievienoja tās vienam konkrētam lietotājam ("robotuser" vai tml.).

Šajā Web aplikācijā ir uzdevums izveidot Web formas, ar kurām regjistrēts lietotājs var apskatīties savas un citu lietotāju grāmatzīmes, kā arī pievienot, anotēt ar "description", un notagot jaunas grāmatzīmes.

Formu apraksts

Aplikācijas ekrānu un formu minimālais saraksts:

register.htm
Regjistrē jaunu lietotāju, uzzinot viņa vārdu/uzvārdu/login/paroli/email un saglabājot informāciju datubāzē.

login.htm
Regjistrēts lietotājs var ielogoties aplikācījā.

post.htm
Jaunās grāmatzīmes pievienošana (sk. http://del.icio.us/post/).

pieprasījumu URL paraugi
Saņēmot pieprasījumu uz kādu no tālāk sekojošiem URL paraugiem aplikācija rāda pilnu pageable HTML (visi ieraksti tiek radīti pa lapām) vai arī RSS skatu (tikai ar nesen pievienotiem rezultātiem, teiksim, pēdējiem 30).

  • http://localhost:8080/lab02/list/tag/j2ee - parādīt HTML veidā visu lietotāju grāmatzīmes, kam ir tags "j2ee" (30 jaunākās, kā arī linku uz agrākajām).
  • http://localhost:8080/lab02/list/tag/j2ee?offset=60&limit=30 - parādīt HTML viedā visu lietotāju grāmatzīmes, kam ir tags "j2ee" - ierakstus no 61. līdz 90.
  • http://localhost:8080/lab02/rss/tag/j2ee - parādīt RSS veidā visu lietotāju grāmatzīmes (pēdējās 30), kam ir tags "j2ee"
  • http://localhost:8080/lab02/list/andris - parādīt HTML veidā visas lietotāja "andris" grāmatzīmes (30 jaunākās, kā arī linku uz agrākajām).
  • http://localhost:8080/lab02/rss/andris - parādīt RSS veidā 30 pēdējās lietotāja "andris" grāmatzīmes
  • http://localhost:8080/lab02/list/andris/j2ee - parādīt HTML veidā lietotāja "andris" grāmatzīmes, kam ir tags "j2ee" (30 jaunākās, kā arī linku uz agrākajām)
  • http://localhost:8080/lab02/rss/andris/j2ee - parādīt RSS veidā lietotāja "andris" grāmatzīmes (pēdējās 30), kam ir tags "j2ee"
  • http://localhost:8080/lab02/tags/andris - parādīt visus lietotāja "andris" izmantotos tagus.
  • http://localhost:8080/lab02/main/andris - parādīt ekrānu, kurš ir sadalīts divās daļās - vienā pārādīt nesenās grāmatzīmes, otrā - visus tagus (kuri savukārt būtu linki, kas pirmajā daļā ielādē attiecīgas grāmatzīmes).
  • Extra credit - query="tag1+tag2+tag3" - meklēt tagu kombinācijas.

Kā piemēru var skatīties del.icio.us, kas ir organizēts līdzīgā veidā.

Selenium testi

Web portāla funkcionalitātes nodrošināšanai un demonstrēšanai ir jāizveido Selenium testi. Katram normālām scenārijam (lietotāja reģistrācija, login, grāmatzīmes pievienošana, pieprasījumi utt) ir jābūt izveidotam attiecīgam Selenium testam. Arī nenormālām situācijām (nepareizo datu ievads utml) ir jāizveido sakarīgi testi.

Lietderīga informācija

Visu informāciju par Selenium var atrast web lapā http://www.openqa.org/selenium/

Lai veidot testus vajag uzlikt Selenium IDE, kas ir Firefox paplašinājums (http://www.openqa.org/selenium-ide/). Kad Selenium IDE ir uzlikts, tad to var atvērt izvēloties "Tools->Selenium IDE" Firefox pārlūkprogrammā. Izmantojot Selenium IDE var pierakstīt un izpildīt testus. Testus var saglabāt uz diska ar paplašinājumu .html.

Lai pievienot testus web aplikācijai un izpildīt tos tieši pārlūkprogrammā ir vajadzīgs Selenium Core (http://www.openqa.org/selenium-core/). Vajag augšupielādīt failu ar Selenium Core (selenium-core-0.8.3.zip) un atzipot to zem web aplikācijas "webapp" direktorijas.

Demonstrācijas piemērs

Viens vienkaršs tests ir pievienots demo projektam "java-eim-lab02" (sk. direktoriju \java-eim-lab02\java-eim-lab02-portal\src\main\webapp\tests\). Papildus zem "webapp" vajag izveidod direktoriju "selenium-core" un atzipot tur selenium-core-0.8.3.zip. Tad izpildot komandu "mvn package" no "\java-eim-lab02\" uzbūvēt WAR failu un palaist aplikāciju uz servera. Testiem var piekļūt pēc URL adreses: http://localhost:8080/java-eim-lab02-portal/tests/

Informācijas avoti

Spring MVC Web Framework

Spring MVC aplikāciju piemēri

Darba iesūtīšana

Gadījumā, ja projekta struktūra atbilst demonstrācijas piemēra "java-eim-lab02" direktoriju struktūrai, tad iesūtamo failu var iegūt sekojošā veidā:

  1. Izpildīt "mvn clean" komandu pamatprojektām "java-eim-lab02" (pārliecināties, ka "target" direktorijas ir izdzēstas visos apakšprojektos, ja tā nenotika, tad izpildīt "mvn clean" katram apakšprojektam atsevišķi).
  2. Gadījumā, ja tiek izmantots versiju kontroles rīks Subversion, izpildīt "ant clean-svn" komandu "java-eim-lab02" saknes direktorijā, lai izdzēst .svn direktorijas. Uzmanību! - gadījumā, ja Jūs vēlāties turpināt strādāt ar projektu ar Subversion ir ieteikts vispirms nokopēt projektu citā vietā un tur veikt visas iesūtīšanas faila sagatavošanas operācijas.
  3. Izpildīt komandu "ant submit" "java-eim-lab02" saknes direktorijā. Komanda uztaisīs failu /target/lab02-portal.zip.
  4. Failu lab02-portal.zip arī vajag nosūtīt uz Kalvja un Alinas gmail.com e-pasta adresēm.

Gadījumā, ja tiek izmantota cita direktoriju struktūra, tad līdzīga veidā uztaisīt projekta zip failu, kurš nesatur liekus failus (jar, zip, log utml) un nosūtīt pasniedzējiem.

Kļūdu labojumi

Šeit ievietojami datēti labojumi un precizējumi, kas pamanīti pēc praktiskā darba izziņošanas.