50
5/10/2018 IzradaWebaplikacijekorienjemJSF-aiHibernate-a-slidepdf.com http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a UNIVERZITET U NOVOM SADU PRIRODNO-MATEMATI ˇ CKI FAKULTET DEPARTMAN ZA MATEMATIKU I INFORMATIKU Damir Galas Web aplikacija za izbor teme diplomskog rada Diplomski rad Novi Sad, 2011

Izrada Web aplikacije korišćenjem JSF - a i Hibernate - a

Embed Size (px)

Citation preview

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

UNIVERZITET U NOVOM SADUPRIRODNO-MATEMATICKI

FAKULTETDEPARTMAN ZA MATEMATIKU I

INFORMATIKU

Damir Galas

Web aplikacija za izbor teme diplomskograda

Diplomski rad

Novi Sad, 2011

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

UNIVERZITET U NOVOM SADUPRIRODNO-MATEMATICKI

FAKULTETDEPARTMAN ZA MATEMATIKU I

INFORMATIKU

Damir Galas

Web aplikacija za izbor teme diplomskograda

Diplomski rad

Novi Sad, 2011

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

Predgovor

Tema diplomskog rada je Web aplikacija za izbor teme diplomskog rada.U radu je dat postupak razvoja, pocev od modeliranja pa do samog po-stupka implementacije. Najcesce korisceni koncepti bice prikazani prekoilustrativnih primera.

Kada se govori o razvoju web aplikacija u Java programskog jeziku, kaotehnologije cesto se izdvajaju Java Server Faces i Hibernate. Java ServerFaces (JSF) je framework za izradu web aplikacija okrenut ka komponen-

tama korisnickog interfejsa, dok Hibernate nudi servise za perzistenciju irad sa bazom podataka. To su upravo tehnologije koje su odabrane za ra-zvoj ove aplikacije i njihove prednosti ce biti istaknute u ovom radu.

Izbor odgovarajucih arhitektura za izradu aplikacije je od presudnogznacaja za njihovo odrzavanje i unapredivanje. Ukoliko se odgovornosti ifunkcije jasno rasporede medu slojevima, tako da slojevi dobro saraduju,a da ipak budu tehnicki nezavisni, aplikacija ce lako moci da se prosirinovim fukcionalnostima, unapredi zamenom tehnologija, prilagodi drugimbazama podataka i lako odrzava.

Rad sadrzi pet poglavlja:

1. Uvod

2. Modeliranje sistema

3. Implementacija

4. Prikaz rada aplikacije

5. Zakljucak

U prvom poglavlju je opisana motivacija za razvoj ove aplikacije kao ikratak pregled koriscenih tehnologija i alata.

U drugom poglavlju je opisano modeliranje sistema za izbor temediplomskog rada. Funkcionalni zahtevi sistema opisani su slucajevimakoriscenja a staticki model sistema preko dijagrama klasa.

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

U trecem poglavlju data je sema baze podataka web aplikacije, opisan je rad sa Hibernate perzistentnim klasama i implementacija korisnickog in-terfejsa koriscenjem Java Server Faces tehnologije.

U cetvrtom poglavlju je dat prikaz rada aplikacije.

Na kraju je dat zakljucak rada i mogucnosti daljeg razvoja aplikacije.

Da bi ovaj rad bio u vasim rukama zasluzno je vise osoba. Na samompocetku zelim da zahvalim Bojani Dimic-Surla, jer mi je pruzila prilikuda napisem ovaj rad pod njenim mentorstvom i strpljivo mi davala saveteprilikom njegove izrade. Zahvalnost dugujem i profesorima, clanovima ko-misije, dr Milosu Rackovicu i dr Draganu Ivanovicu, bez cijih saveta ovajrad takode ne bi bio u vasim rukama. Prijatelj i kolega Daniel Jankovic

  je svakom svojom kritikom povecavao kvalitet svega sto sam uradio dokzasluge za pravopis pripadaju prijateljici i koleginici Dragani Mandic.

Na samom kra ju ali po znacaju daleko ispred svega zahvalnost dugujemsvojim roditeljima, Janu i Mariji Galas, koji su nezaobilazni faktor citavogmog skolovanja.

Novi Sad 2011 Galas Damir

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

Sadrzaj

Predgovor i

Uvod 1

1.1. Motivacija . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2. Softversko okruzenje . . . . . . . . . . . . . . . . . . . . . . 2

1.2.1. MySQL . . . . . . . . . . . . . . . . . . . . . . . . . 21.2.2. Hibernate . . . . . . . . . . . . . . . . . . . . . . . . 21.2.3. Java Server Faces . . . . . . . . . . . . . . . . . . . . 31.2.4. Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . . 41.2.5. CSS . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

Modeliranje sistema 5

2.1. Use Case dijagram . . . . . . . . . . . . . . . . . . . . . . . 52.2. Class dijagram . . . . . . . . . . . . . . . . . . . . . . . . . 7

Implementacija 93.1. Sema baze podataka . . . . . . . . . . . . . . . . . . . . . . 93.2. Perzistentne klase . . . . . . . . . . . . . . . . . . . . . . . . 10

3.2.1. Mapiranje perzistentnih klasa . . . . . . . . . . . . . 103.2.2. Rad sa ob jektima . . . . . . . . . . . . . . . . . . . . 133.2.3. Skladistenje perzistentnih klasa . . . . . . . . . . . . 133.2.4. Pravljenje upita pomocu HQL-a . . . . . . . . . . . 15

3.3. JSF tehnologija . . . . . . . . . . . . . . . . . . . . . . . . . 153.3.1. Konfigurisanje faces-config.xml fajl - a . . . . . . . . 163.3.2. Implementacija konvertera . . . . . . . . . . . . . . . 193.3.3. Rad sa komponentama korisnickog interfejsa . . . . 21

3.4. Primer DataTable . . . . . . . . . . . . . . . . . . . . . . . 253.5. Stilovi i rad sa CSS-om . . . . . . . . . . . . . . . . . . . . 29

Prikaz rada aplikacije 31

Zakljucak 35

Biografija 37

Kljucna dokumentacijska informacija 39

Key words documentation 41

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

Poglavlje 1

Uvod

Tema diplomskog rada pripada oblasti razvoja obrazovnih informacionihsistema. Jedan od znacajnih delova obrazovnog procesa na univerzitetu jeizrada zavrsnog diplomskog ili master rada. Radovi se pisu na temu kojupredlaze nastavnik. Student bira temu i pocinje sa radom pri cemu je ustalnom kontaktu sa nastavnikom.

1.1. Motivacija

Cilj diplomskog rada je da se kreira web aplikacija za izbor teme di-plomskog rada preko koje bi profesori mogli da predlazu teme za masteri diplomske radove, a studenti da pregledaju predlozene teme i da se pri-

 jave za izradu teme. Takode postoji mogucnost komunikacije preko poruka.

Postojanje ovakvog sistema omogucilo bi studentima da pregledaju sve-ukupno dostupne teme preko interneta i da izaberu odgovarajucu temu.Pored toga, jedan deo komunikacije izmedu studenta i profesora podrzan

 je u aplikaciji i realizovan putem poruka. Na ovaj nacin student moze da

dobije blize informacije o nekoj temi ili da se u toku rada konsultuje samentorom. Koriscenje web aplikacija koja je tema ovog diplomskog radaomogucava profesorima efikasniji rad sa studentima i smanjuje vreme po-trebno za licni kontak. Iako samu licnu komunikaciju student - mentor nijemoguce u potpunosti izbaciti, neke radnje se mogu automaizovati i mogutu komunikaciju olaksati.

Za izradu aplikacije korisceni su savremeni open-source alati za razvojweb aplikacija u Java[1,2] okruzenju. Srednji sloj aplikacije radi na Apache

Tomcat Web serveru[3]. Implementacija perzistencije podataka realizovana  je koriscenjem paketa Hinernate[4], a podaci se skladiste u MySQL bazupodataka[5]. Za implementaciju korisnickog interfejsa aplikacije koriscena

 je Java Server Faces (JSF)[6] tehnologija, HTML[7] i CSS[8].

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

2 UVOD

1.2. Softversko okruzenje

Za svaki sloj viseslojne arhitekture koristi se vise tehnologija i punorazlicitih alata. U ovom poglavlju opisane su najznacajnije medu njima,koje su koriscene u razvoju aplikacije za izbor diplomskih radova.

1.2.1. MySQL

MySQL je besplatan open source sistem za upravljanje bazom poda-taka[5]. MySQL je cest izbor baze za projekte otvorenog koda, te se di-stribuira kao sastavni deo serverskih Linux distribucija, no takode postojevarijante i za ostale operativne sisteme poput Mac - a, Windows - a itd.MySQL baza je slobodna za vecinu upotreba. MySQL baze su relacionogtipa, koji se pokazao kao najbolji nacin skladistenja i pretrazivanja velikih

kolicina podataka i u sustini predstavljaju osnovu svakog informacijonogsistema, tj. temelj svakog poslovnog subjekta koji svoje poslovanje bazirana dostupnosti kvalitetnih i brzih informacija.

Relacione baze podataka - Kada govorimo o bazama podataka na jce-sce podrazumevamo da se radi o relacionim bazama podataka. Postale sunajpopularnije pre svega zbog svoje jednostavnosti i robusnosti. One nisuvezane ni za jedan programski jeziki ili bilo koju tehnologiju sto jeste njihovavelika prednost. Relaciona baza podataka radi sa tabelama za reprezenta-ciju podataka. Svaka tabela sadrzi skup kolona i svaka kolona ima svojeime. Za ovaj model je razvijen deklarativni jezik SQL.

SQL - Najcesce koriscen upitni jezik koji koristi logiku relacione al-gebre. SQL je ipak mnogo vise od toga, u njemu je moguce definisatistrukturu podataka u bazi, modifikovati podatke, brisati podatke, unositinove itd.

1.2.2. Hibernate

Hibernate je open source implementacija objektno relacionog mapiranja(ORM)[4]. Hibernate je jako uspesan projekat koji tezi da postane kom-pletno resenje za problem upravljanja perzistentnim podacima u Javi[9].On posreduje u interakciji aplikacije i relacione baze podataka, omogucavaju-ci programeru da se koncentrise na problem resavanja poslovne logike. APIkoji koristi je potpuno prirodan, kao i interfejs upita (query interfaces) iupitni jezik (query language).

Perzistencija objekata znaci da pojedinacni objekti mogu nadziveti pro-

ces aplikacije u kojoj su nastali. Oni se mogu cuvati u bazi podataka i po-

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

1.2. Softversko okruzenje  3

novo kreirati u nekom trenutku. Perzistencija u Javi skoro uvek predstavljacuvanje podataka u relacionoj bazi, uz koriscenje SQL-a. Kao logicno pita-nje namece se zasto u upotrebi nisu objektno - orjentisane baze podataka,medutim iz mnogih razloga one nisu nikad ni zazivele u praksi. Relacione

baze podataka dominiraju danasnjom kompjuterskom industrijom i zbogprednosti koje su vec navedene skoro uvek predstavljaju uslov za razvojprojekta u Javi.

Hibernate obezbeduje perzistenciju objekata za vreme izvrsavanja pro-grama. Za svaku perzistentnu klasu potrebno je napraviti XML dokumentza mapiranje. Ovaj dokument se analizira prilikom pokretanja aplikacije iobezbeduje radnom okruzenju neophodne informacije o klasi[10,11].

1.2.3. Java Server Faces

Java Server Faces(JSF) je standardizovana tehnologija za pravljanjekorisnickog interfejsa web aplikacija[12]. Ranije su korisnicki interfejsi webaplikacija kreirani kao HTML korisnicki interfejsi koriscenjem servleta iJSP-a. Ipak problem HTML-a je sto je previse siromasan, pa pravljenjeslozenijih web aplikacija postaje komplikovano i jako produzava vreme ra-zvoja softvera.

Java Server Faces je tehnologija za razvoj web aplikacija sa slozenim

korisnickim interfejsima koji se izvrsavaju na serveru. Korisnicki interfejsse izvrsava na serveru i odgovara na sve dogadaje koje generise klijent.Poslovna logika je razdvojena od perzistencije i zbog toga JSF predstavljapotpuno novi sloj razvoja.

Osnovni elementi JSF tehnologije je API (aplikativni interfejs jsf-api.jar)sluzi za:

• predstavljanje koponenti

• upravljanje stanjem komponenti

• obradu dogadaja

• validaciju i konverziju

• inicijalizaciju

Korisnicki interfejs koji se kreira JSF tehnologijom izvrsava se na ser-veru, a sadrzaj se prikazuje na klijentu.

Tipicna JSF aplikacija sastoji se od sledecih elemenata:

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

4 UVOD

• skupa JSP strana koje se koriste za prezentaciju.

• skupa backing binova odnosno Java Bean komponenti koje definisusvojstva i funkcije UI komponenti na stranici.

• Konfiguracioni fajl za aplikaciju koji definise pravila navigacije i sluziza konfiguraciju binova.

1.2.4. Eclipse

Eclipse je popularno, besplatno i open source integrisano razvojno okruze-nje za Javu, pisano je vecinom u Java programskom jeziku[13]. Namenjen

  je Java programerima, ali postoje verzije i za druge jezike. Ima izuzetnorazvijene Java alate. Korisnici mogu prosirivati njegove mogucnosti insta-liranjem raznih dodataka, mogu pisati i sopstvena prosirenja. Dostupni sui jezicki paketi koji prevode Eclipse na vise desetina svetskih jezika. Jednaod velikih prednosti Eclipse, koja se cesto istice jeste mogucnost rada narazlicitim operativnim sistemima.

1.2.5. CSS

CSS (eng. Cascading Style Sheets) je jezik formatiranja pomocu kojegse definise izgled elemenata web stranice[8]. Prvobitno HTML je sluzio zadefinisanje citavog izgleda, strukture i sadrzaja web stranice, ali od verzije

HTML 4.0 je uveden CSS koji bi definisao konkretan izgled, dok je HTMLostao u funkciji definisanja strukture i sadrzaja[7].

CSS sintaksa se sastoji od opisa izgleda elemenata u dokumentu. Opismoze da definise izgled vise elemenata i vise opisa moze da definise jedanelement. Na taj nacin se opisi slazu jedan preko drugog da bi definisalikonacan izgled odredenog elementa.

Svaki opis se sastoji od tri elementa: definicija ciljnih elemenata, svoj-

stva i vrednosti. Nakon definisanja ciljnih elemenata, odnosno elemenatana koje se opis odnosi, nizom parova svojstvo - vrednosti definise se izgledsvakog ciljnog elementa.

CSS u JSF-u - Ako web stranica ima jedinstvene stilove, oni se mogudefinisati u zaglavlju koriscenjem taga style. Takode moguce je definisati stilza pojedinacnu JSF komponentu koristeci istoimeni style atribut u kom-ponenti. U vecini slucajeva se ipak koristi poseban CSS fajl u kojem sunavedeni stilovi koje je moguce ubaciti u vise stranica.

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

Poglavlje 2 

Modeliranje sistema

U ovom poglavlju opisan je model sistema za administraciju tema ma-ster i diplomskih radova. Model je dat preko UML 2.0 dijagrama. Funk-cionalni zahtevi sistema opisani su preko dijagrama slucajeva koriscenja, astaticki model sistema dat je preko dijagrama klasa.

Za modeliranje koriscen je alat Power Designer[14]. To je alat za mode-liranje, dizajniranje, i opsivanje objektno - orjentisanih sistema i aplikacijapomocu UML-a (Unified Modeling Language)[15]. UML sluzi kao jezik zaspecifikaciju, vizuelno predstavljanje, konstrukciju i dokumentovanje ele-

menata softverskih sistema. Ovaj jezik je nastao sredinom 90-tih. Anali-zom koncepata obuhvacenih objektno - orjentisanim metodama doslo se doskupa modela i elemenata modela koji se koriste pri analizi, projektovanjui dokumentovanju elemenata sistema[16].

2.1. Use Case dijagram

Prva faza razvoja sistema jeste definisanje zahteva koji mogu biti pred-stavljeni dijagramom slucajeva koriscenja. Na slici 2.1 prikazan je dijagramslucajeva koriscenja sistema za izbor teme diplomskog rada.

Na dijagramu su prikazana dva ucesnika, a to su profesor i student.Profesor je povezan sa slucajem koriscenja Prijavljivanje Profesora , na ko-

 jem se profesor prijavljuje na sistem tako sto unosi e-mail adresu i lozinku.Sistem proverava validnost unetih podataka i ako je sve u redu, profesor

  je uspesno prijavljen na sistem. Ukolko profesor prvi put koristi ovaj si-stem, neophodno je da se pre toga registruje. Sto je realizovano slucajemkoriscenja Registracija Profesora . Analogno svemu navedenom student jeucesnik koji se prijavljuje na sistem tako sto unosi broj indeksa i lozinku.

O tome brine slucaj koriscenja Prijavljivanje Studenta . Dok o funkciji re-gistracije brine slucaj koriscenja Registracija Studenta .

Nakon prijavljivanja profesor ima vise mogucnosti. Jedna od njih jepredstavljena slucajem koriscenja Predlog Tema , gde profesor ima mogucnostpredlaganja neke teme navodeci naslov teme, opis, oblast. Jos jedna mogu-cnost, koja se pruza, prikazana je slucajem koriscenja Pregled naloga . Ovdese nalaze informacije o prijavljenom ucesniku, kao i mogucnost promenelozinke ukoliko ucesnik to zeli. Treca mogucnost je da profesor pregleda

teme koje su vec punudene i to je prikazano slucajem koriscenja Pregled 

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

6 MODELIRANJE SISTEMA

tema . Teme mogu da se pregledaju sveukupno ili po odredenim oblastima.

Student takode pregleda teme s tom razlikom sto se njemu pruza jednadodatna mogucnost, a to je da odabere temu, naravno samo pod uslovom

da to vec predhodno nije uradio. Isto tako ima mogucnost pregledanjanaloga. Studentu nije data mogucnost predlaganja teme, ali mu se pruzanova mogucnost, a to je da pregleda odabranu temu prateci sve informacijeo njoj, ili eventualno moze da odustane od iste. To sve je na slici predsta-vljeno sluca jem koriscenja Pregled odabrane teme.

Slika 2.1: Use Case dijagram

Slanje poruka  je slucaj koriscenja kojem mogu da pristupe oba ucesnika.Iz skupa svih ucesnika se bira jedan kome se salje poruka. Kada se porukaposalje, njena sadrzina se prikazuje u tabeli poslatih poruka sto je posebnislucaj koriscenja definisano imenom Pregled poslatih poruka . Profesor moze

slati poruke studentima i student moze da salje poruke profesorima, dok

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

2.2. Class dijagram 7

slanje poruka izmedu ucesnika iste vrste nije moguce. Kada ucesnik primiporuku, ona se prikazuje u tabeli primljenih poruka. Primljene poruke suna slici prikazane slucajem koriscenja Pregled primljenih poruka .

2.2. Class dijagram

MVC (skraceno od Model-View-Controller) je arhitekturni obrazac kojiorganizuje aplikaciju u tri dela. Jedan deo sluzi kao aplikacioni model saprikazom podataka, drugi za perzistenciju podataka dok treci sluzi za pro-sledivanje, zahteve i kontrolu toka. Ovakva arhitektura se koristi za razvojaplikacije sa grafickim interfejsom. Model je nosilac informacija i sadrziperzistentne objekte, View je vizuelna prezentacija podataka najcesce naekranskoj formi, Controller vodi racuna o funkcionalnosti sistema. I to jeupravo pristup koji je koriscen kod implementacije aplikacije u ovom di-

plomskom.

Na slici 2.2 prikazan je dijagram klasa aplikacije za izbor teme diplom-skog rada. Ovaj dijagram sadrzi cetiri klase entiteta: Profesor , Student ,Tema  i Poruka .

Svaka od tih klasa sadrzi atribute osnovnih podataka za upravljanje iskladistenje. Npr. klasa Student  sadrzi atribute ime, prezime, email , broj-telefona  i brojindeksa .

Postoje tri kontrolera: ControlerTema , ControlerRegistracija  i Contro-lerPoruka . Glavni zadatak prvog kontrolera je da vrsi komunikaciju izmedupredlozenih tema i ekranskih formi, drugi kontroler se bavi registracijomucesnika, a uloga treceg kontrolera jeste slanje poruka, primanje poruka,njihovo skladistenje itd.

Ekranske forme, koje su ovde predstavljene kao view klase, su: Predlog-TemaView , PrikazTemaView , RegistracijaView , PrijavaView , PrikazPoru-

kaView  i SlanjePorukaView . Njihovi nazivi su prilicno intuitivni, a ulogaim je da prikazuju rezultate na ekranskoj formi u zavisnosti od toga da liucesnik zeli da predlozi temu, da se registruje, da posalje neku poruku itd.

Izmedu klasa postoje veze, medu njima najznacajnije su veze izmeduklasa entiteta i kontrolera. Sve veze su navedene na slici 2.2, pri cemutreba obratiti paznju na kardinalitet veze i na njihove uloge. Npr. vezaizmedu klase Profesor  i klase Tema  je takva da profesor predlaze ni jednuili vise tema dok je jedna tema predlozena od strane samo jednog profesora.

Takode se moze posmatrati veza izmedu klase Student  i klase Poruka . Stu-

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

8 MODELIRANJE SISTEMA

dent salje nula ili vise poruka, a jedna poruka je poslata od strane jednogstudenta.

Slika 2.2: Class dijagram

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

Poglavlje 3 

Implementacija

Ovo poglavlje se bavi implementacijom. Najpre je data sema baze poda-taka koja ja bila osnov za implementaciju aplikacije za izbor teme diplom-skog rada. Nakon toga sledi opis implementacije srednjeg sloja aplikacije uzpomoc Hibernate paketa i implementacije korisnickog interfejsa koriscenjemJSF, JSP, HTML i CSS tehnologije sa konkretnim primerima koji ilustrujunavedene tehnologije.

3.1. Sema baze podataka

Slika 3.1: Sema baze podataka

Na slici 3.1 prikazana je sema baze podataka koja se koristi u aplika-ciji za izbor teme diplomskog rada. Dato je pet tabela od kojih su cetirisustinski bitne a to su tabele Student , Profesor , Tema  i Poruka .

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

10 IMPLEMENTACIJA

Tabela koja nosi naslov Student , sadrzi podatke o studentima koji seregistruju na sistem i cuva sve relevantne podatke o njima. U ovoj tabelinema stranih kljuceva, a primarni kljuc je brojIndeksa . Od ostalih podatkadati su ime, prezime, e-mail, broj telefona i lozinka studenta.

Tabela Profesor  cuva informacije o profesorima koji se registruju nasistem. Ni ova tabela nema strani kljuc. Primarni kljuc je idProfesora .Ostale kolone su ime, prezime, email , lozinka , brojTelefona  i zvanje.

Tabela Tema  cuva podatke o temama koje predlaze profesor a birastudent. Ova tabela ima dva strana kljuca a to su rezervisaoBrIndeksa  iidProfesora . Prvi strani kljuc je vrednost broja indeksa studenta u slucajuda je neko od studenata odabrao temu, u suprotnom vrednost ovog stranogkljuca je null . Drugi strani kljuc je primarni kljuc profesora koji predlazetemu. Primarni kljuc u ovoj tabeli je idTeme. Ostale kolone su datum (kada je tema predlozena), naziv  (naslov teme), opis (blizi opis teme) ivrsta  (diplomski ili master).

Tabela Poruka  cuva podatke o porukama koje profesor i student salju  jedan drugom. Isto kao kod tabele Tema  su data ista dva strana kljucaidProfesora  i brIndeksa . Primarni kljuc je idPoruke a ostale kolone susmerProfStud  (da li salje profesor studentu ili student profesoru ), tekst-Poruke (tekst koji se salje), datumVreme (vreme kada je poruka poslata),Rad  (tekst rada), procitana  (logicki tip koji cuva podatak da li porukaprocitana) i naslov  (naslov poruke).

3.2. Perzistentne klase

Perzistencija u Hibernate-u se postize pomocu perzistentnih klasa. Uaplikaciji azuriranja tema korisceno je vise perzistentnih klasa. Perzistentneklase rade sa perzistentnim podacima. U Hibernate-u perzistentna klasa

  ja klasa koja implementira interfejs java.io.Serializable koji nema polja i

metode. Perzistentna klasa ima atribute koji predstavljaju kolone u bazipodataka. Za svaki od tih atributa neophodno je imati set i get metode usuprotnom kompajler javlja gresku. Perzistentna klasa mora imati podra-zumevani konstruktor.

3.2.1. Mapiranje perzistentnih klasa

Za svaku perzistentnu klasu postoji odgovarajuci XML fajl koji sluzi zamapiranje klase u semu baze podataka. Ime fajla je isto kao i ime klase

kojoj se dodaje jos ekstenzija hbm.xml. Ekstenzija hbm oznacava da je u

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

3.2. Perzistentne klase  11

pitanju Hibernate mapiranje. Dakle ovaj fajl sluzi za preslikavanje izmedjuperzistentnih klasa i tabela baze podataka.

Korenski element svake datoteke za mapiranje je hibernate-mapping .

Pomocu atributa ovog elementa podesavaju se podrazumevane (default)vrednosti koje moraju biti definisane. Element class je rezervisan za de-klaracuju perzistentnih klasa. Zapravo sva mapiranja izmedu perzistentnihklasa i tabela se vrse unutar ovog elementa. Svaka klasa koja se direktnodefinise mora da ima id  element. Ovim elementom se postize da je za svakuklasu definisan primarni kljuc tako sto Java klase imaju atribut koji sadrzi

 jedinstveni identifikator koji se povezuje sa kolonom primarnog kljuca u ta-beli. U telu id  elementa definise se generator  element kojem se prosledujeinformacija na koji nacin se vrsi generisanje primarnog kljuca. Mogu dabude prosledene konstante sa razlicitim znacenjem:

• sequence - Sekvencialno generisanje identifikatora

• native - U zavisnosti od baze koristi hilo, sequence ili identity. Obez-beduje maksimalnu prenosivost.

• increment - Cita maksimalnu vrednost primarnog kljuca, pa je poveca-va za jedan prilikom svakog sledeceg ponavljanja.

• assignet - Dobija identifikator objekta pre poziva save() metoda.Ovo je i podrazumevana strategija ako se ne navede generator .

• foreign - Koristi identifikator drugog objekta.

Za svaki atribut koji je potrebno sacuvati u bazi se koristi element pro-perty . Perzistentni atributi moraju da imaju set i get metode. Elementproperty  poseduje vise atributa od kojih je neophodno definisati atributname cija vrednost mora da pocne malim slovom.Pod pojmom asocijacije se podrazumevaju veze izmedu ob jekata perzistent-

nih klasa. Postoji vise vrsta asocijacija: jedan naprema jedan (one-to-one),vise naprema vise (many-to-many ), jedan naprema vise (one-to-many ) itd.Veze u klasama se definisu preko atributa objekata. U dvosmernoj vezi obaobjekta imaju referencu na objekat na drugoj strani, dok jednosmerna veza

 je veza izmedu dva objekta kod koje samo jedan od objekata ima referencuna drugi objekat.

Na listingu 1 prikazan je XML fajl za mapiranje klase Student  u semubaze podataka. Deklarise se perzistentna klasa koja ima primarni kljuc

brojindeksa . Dato je nekoliko atributa cija je namena da cuvaju osnovne

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

12 IMPLEMENTACIJA

informacije o studentu, a to su ime, prezime, email , brojtelefona  itd. Na-ravno, data su i mapiranja asocijacija sa drugim klasama.

<h i b e r n a t e−mapping><

c l as s name=”dbm odel . Student” ta bl e=” s tude nt ”c a t a l o g=” d am ir ” l a z y=” f a l s e ”><i d name=” b r o j i n d e k s a ” t y p e=” s t r i n g ”><col umn name=”BROJINDEKSA” l e n g t h=” 20 ” /><g e n er a t o r c l a s s =” a s s i g n ed ” /></ i d><prop erty name=”ime” ty pe=” s t ri ng ”><colu mn name=”IME” not−n u l l = ” t r u e ” /></ p r o p e r t y><p r o p e r t y name=” p r e z i m e ” t y p e=” s t r i n g ”><column name=”PREZIME” no t−n u l l = ” t r u e ” /></ p r o p e r t y><p r o p e r t y name=” e m a i l ” t y p e=” s t r i n g ”><col umn name=”EMAIL” no t−n u l l = ” t r u e ” /></ p r o p e r t y><p r o p e r t y name=” b r o j t e l e f o n a ” t y pe=” s t r i n g ”><column name=”BROJTELEFONA” l e n g t h=”50 ” /></ p r o p e r t y><p r o p e r t y name=” l o z i n k a s t u d e n t a ” t y pe=” s t r i n g ”><column name=”LOZINKASTUDENTA” not−n u l l = ” t r u e ” /></ p r o p e r t y>

<s e t name=” p o r u k a s ” i n v e r s e =” t r u e ”><key><col umn name=”BROJINDEKSA” l e n g t h=” 20 ” /></key><one−to−many c l a s s=”dbmodel . Poruka” /></ s e t><s e t name=” t e m a s F o r P r e d l o z i o b r i n d e k s a ” i n v e r s e =” t r u e ”><key><co lu mn name=”PREDLOZIOBRINDEKSA” l e n g t h=”20 ” /></key><one−to−many c l a s s=”dbmodel .Tema” /></ s e t><s e t name=” t e m a s F o r R e z e r v i s a o b r i n d e k s a ” i n v e r s e =” t r u e ” ><key><co lu mn name=”REZERVISAOBRINDEKSA” l e n g t h=”20 ” /></key><one−to−many c l a s s=”dbmodel .Tema” /></ s e t></ c l a s s></ h i b e r n a t e−mapping>

Listing 1

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

3.2. Perzistentne klase  13

3.2.2. Rad sa objektima

Neophodno je razumeti rad sa objektima i na koji nacin se vodi racunao njima. Hibernate podrzava i definise sledeca stanja objekata:

• Transientno (Transient) - Objekat je transientan ako se tek kreirakoriscenjem operacije new  i jos uvek nije povezan sa Session  objek-tom, pri cemu objekat jos uvek nema vezu za bazom podataka.

• Perzistentno - Ovi objekti imaju svoju reprezentaciju u bazi poda-taka. Objekat moze da bude prethodno ucitan iz baze ili snimljen ubazu, ali pri tome mora biti povezan sa Session  objektom. U tom sta-nju se detektuju sve promene na objektu i sinhronizuju se sa bazompodataka.

• Odvojeno (Detachet) - Objekat se nalazi u odvojenom stanju ako je bio u perzistentnom, ali je u meduvremenu Session  objekat zatvo-ren. Naravno, ovaj objekat moze da se vrati u perzistentno stanjeako se poveze sa novim Session  objektom.

3.2.3. Skladistenje perzistentnih klasa

Hibernate se najcesce inicijalizuje kreiranjem SessionFactory  objekta izConfiguration  objekta. Configuration  je reprezentacija Hibernateovih kon-

figuracionih datoteka. Prilikom poziva metoda configure(), Hibernate trazidatoteku hibernate.cfg.xml  u src direktorijumu projekta i izbacuje izuzetakako ga ne nade. Glavna uloga hibernate.cfg.xml  datoteke je da cuva lokacijedatoteka za mapiranje i daje informacije o bazi podataka kao sto su URLbaze, korisnicko ime, pasword i dijalekt SQL-a koji se koristi.

Za pristup bazi korite se Hibernate-ovi interfejsi:

• Session - Nedejiv objekat u jednoj programskoj niti, koji predsta-

vlja nedeljiv skup operacija sa bazom podataka. Poseduje API zaupravljanje perzistencijom koji se poziva prilikom citanja ili cuvanjaobjekata u bazi.

• Transaction - Koristi se za programsko postvljanje granica transak-cije, i nije obavezno. Umesto njega mogu se koristiti JDBC razdvaja-nje transakcija, JTA (Java transaction API) interfejs, ili kontejnerskiupravljanje transakcije u EJB-3.

Cuvanje objekata u bazi podataka i njihovo citanje se u Hibernate-u

obavljaju promenom njihovih stanja, sto se odigrava pomocu nedeljivog

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

14 IMPLEMENTACIJA

skupa operacija koje se uvek izvrsavaju zajedno. Na pocetku rada aplika-cije kreira se Session  objekat.

U istom nedeljivom skupu operacija je takode inicijalizovan i kontekst

perzistencije koji ce upravljati svim objektima u okviru datog Session -a.Takode je potrebno otvoriti Transaction . Sve operacije nedeljivog skupa senalaze unutar jedne transakcije, bez obzira na to da li se podaci cuvaju ilicitaju.

Instanca perzistentne klase se cuva u bazi pozivom metode save(). Me-tod save() cini privremeni objekat trajnim, povezuje ga sa otvorenom se-sijom i njegovim kontekstom perzistencije. Izmene na trajnim objektimamoraju biti sinhronizovane sa bazom podataka u nekom trenutku. To sedogada prilikom poziva metoda commit(). U slicaju neuspeha izvrsavanjatransakcije nacinjene izmene se vracaju pozivom metoda rollback(). Ses-sion  na kraju pozivom metod close() zatvara kontekst perzistencije. Nalistingu 2 je dat metod cija je uloga da sacuva perzistentni objekat tipaStudent .

p u b l i c v o i d n o v i St u d e nt ( S t r i n g ime , S t r i n g p re zi me ,S t r i n g t e l , S t r i n g ma il , S t r i n g br , S t r i n g l o z ) {

S e ss io n s e s s i o n =H i b e r n a t e U t i l . g e t S e s s i o n F a c t o r y ( ) . o p e n S e s s i o n ( ) ;

T ra n sa ct i on t r a n s a c t i o n = n u l l ;t r y {

t r a n s a c t i o n = s e s s i o n . b e g i nT r a n sa c t i on ( ) ;S t u de n t s t u d = new S t u de n t ( ) ;stud . setIme (ime) ;s tud . s etP rezim e (prezim e ) ;s t ud . s e t B r o j t e l e f o n a ( t e l ) ;s tud . s etE m ail ( m ail ) ;s t u d . s e t B r o j i n d e k s a ( b r ) ;s tud . s etL o zin k as tud ent a ( lo z ) ;

s e s s i o n . s a v e ( s t u d ) ;t r a n s a c t i o n . commit ( ) ;

} c a t c h ( H i b e r na t e E xc e p t i on e ) {t r a n s a c t i o n . r o l l b a c k ( ) ;e . pri ntSt ack T race () ;

} f i n a l l y {s e s s i o n . c l o s e ( ) ;

}}

Listing 2

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

3.3. JSF tehnologija  15

3.2.4. Pravljenje upita pomocu HQL-a

Hiberane Query Language (HQL) je upini jezik razvijen u okviru Hiber-nate alata. Osnovna razlika izmedu HQL-a i SQL-a je u tome sto je HQLobjektno - orjentisan. Problem sa SQL-om je u tome sto razliciti sistemi za

upravljanje bazama podataka podrzavaju razlicite SQL dijalekte, tako daprelaskom sa jednog na drugi sistem moraju se vrsiti promene upita. Za-hvaljujuci HQL-u imamo neki vid apstrakcije i njime se obezbeduje objektnipogled na relacionu bazu podataka dok je Hibernate zaduzen za generisanjeSQL - a. Dakle, HQL omogucuje pisanje upita analognih onim u SQL -u, ali koriscenjem objektno - orjentisanih termina. Pored vec pomenutihinterfejsa Session  i Transaction , za pristup bazi se jos koristi i interfejs Qu-ery . Upiti se mogu pisati u HQL - u ili u obicnom SQL - u. Query  interfejsomogucava pisanje upita, povezivanje argumenata sa promenljivima u upi-

tima i razne nacine njihovog izvrsavanja.

Na listingu 3 dat je deo programskog koda za kreiranje i izvrsavanjeHQL upita. Dat je String  koji je zapravo tekst upita. U konkretnu slucaju”from Poruka”. To je tekst upita koji iz tabele Poruka  cita sve poruke.Posle ovoga neophodno je od teksta napraviti upit a to se radi otvaranjemsesije i kreiranjem upita koriscenjem metoda createQuery(tekstUpita). Nakraju se upit izvrsava pozivom metoda list(). Ovaj metod smesta sve po-ruke u jednu listu radi lakse manipulacije sa podacima.

// . . .t r a n s a c t i o n = s e s s i o n . b e g i nT r a ns a c t io n ( ) ;S t r i n g t e k s t U p i t a = ” f ro m Po ru ka ” ;Qu er y u p i t = s e s s i o n . c r e a t e Q u e r y ( t e k s t U p i t a ) ;L i s t r e z u l t a t = u p i t . l i s t ( ) ;

// . . .

Listing 3

Bitno je razlikovati tri faze, a to su priprema upita, povezivanje pa-rametra upita i izvrsavanje samog upita. Hibernate takode omogucava ipisanje obicnog SQL upita. Za pravljenje takvih upita se koristi metodcreateSQLQuery().

3.3. JSF tehnologija

JSF je kao sto je vec receno framework zasnovan na komponentamakorisnickog interfejsa. Bitno je naglasiti da se izvrsava na serveru.

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

16 IMPLEMENTACIJA

Na slici 3.2 je prikazana strana myform.jsp, to je JSP strana koja sadrziJSF tagove. Ova JSP strana prikazuje komponente koje su u njoj navedene.Web aplikacija tj. njen interfejs, prikazan na slici kao myUI, upravlja re-ferenciranim objektima JSP strane. Ona pored komponenti korisnickog

interfejsa moze da prikazuje osluskivace dogadaja, validatore, konvertere.

Slika 3.2: Korisnicki interfejs se izvrsava na serveru

Dva pojma koja se pominju u JSF tehnologiji su menaged beans i bac-king beans. Zapravo, menaged beans su obicni JavaBean objekti kojimaupravlja JSF framework. JSF brine o instanciranju binova i njihovom po-stojanju. Backing beans sadrze svojstva i metode vezane za komponentekorisnickog interfejsa. U backing binovima se nalaze i metode koje va-lidiraju unose korisnika i reaguju na neki dogadaj izazvan akcijama nadkomponentama. Uobicajeno je da iza svake stranice stoji jedan backingbin. Kako je instanciranje backing binova prepusteno frameworku, oni jesui menaged beans. O backing binovima se cesto govori kao o view ob jektimazato sto sadrze podatke o modelima podataka koji se prikazuju korisniku.

3.3.1. Konfigurisanje faces-config.xml fajl - a

Glavni konfiguracioni fajl za JSF je faces-config.xml . To je fajl koji sluziza mapiranje i neke od njegovih najosnovnijih uloga su:

• mapiranje Java binova

• mapiranje navigacije

• mapiranje validatora

• mapiranje konvertera

Java binovi - Moze da se mapira jedan ili vise Java binova koji cebiti korisceni u aplikaciji. Svakom moze da bude dato ime, opis, i oblastvazenja, a mogu se cak inicijalizovati i njihova svojstva. Na listingu 4 dato

 je mapiranje klase dbmodel.Student , tako da kod pozivanja ove klase u JSP

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

3.3. JSF tehnologija  17

fajlu, koristi se String  student (obratiti paznju da je ime isto kao ime binasa tom razlikom sto pocinje malim slovom).

<managed−bean>

<d e s c r i p t i o n>O pi s J av a b i n a</ d e s c r i p t i o n><managed−bean−name>s t u d e n t</managed−bean−name><managed−bean−c l a s s>dbmodel . Stud ent</managed−bean−c l a s s><managed−bean−s c o p e>r e q u e s t</managed−bean−s c o p e>

</managed−bean>

Listing 4

Navigacija - Navigacija je jednostavna koliko i deklaracija binova.Svaka JSF aplikacija moze da ima jedno ili vise navigacionih pravila. Na-

vigaciono pravilo predstavlja mogucu putanju sa jedne na drugu stranicu.Svaka putanja se naziva navigacioni slucaj(navigation case).

<n a v i g a t i o n−r u l e><from−view−i d>/ l o g i n . j s p</from−view−i d><n a v i g a t i o n−c a s e><from−outcome>p r e d l o g</from−outcome><to−view−i d>/inbox . j s p</ to−view−i d>

</ n a v i g a t i o n−c a s e><n a v i g a t i o n−c a s e>

<from−outcome>n a l o g</from−outcome><to−view−i d>/mojnalo g . jsp</ to−view−i d>

</ n a v i g a t i o n−c a s e></ n a v i g a t i o n−r u l e>

Listing 5

Na listingu 5 su dati stringovi predlog  i nalog , i u zavisnosti od togakoji String  je prosleden navigacija ce biti prebacena na stranicu inbox.jspili na mojnalog.jsp. Postoje dve vrste Action  osluskivaca. Oni koji uticu na

navigaciju i oni koje ne uticu. Oni koji ne uticu obicno manipulisu kompo-nentama unutar trenutne stranice, ali za navigaciju su bitni oni koji uticu.Ako se nekoj komponenti na primer dugmetu prosledi action vrednost nekogstringa to dugme ce onog trenutka kada bude aktivirano potraziti svoj na-vigacioni slucaj u faces-config.xml fajlu, a ukolko ga ne nadje, javice gresku.

<h:commandButton id=”dugme1” val ue=” P r i ja v i se ”action=”#{s t u d e n t . l o g i n }” />

Listing 6

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

18 IMPLEMENTACIJA

U primeru prikazanom na listingu 6, naveden je slucaj kada dugme(commandButton ) poziva metod login  koji se nalazi u klasi Student  (koja

  je naravno pre toga mapirana u faces-config.xml fajlu). Taj metod vracaString  pa tek zatim se trazi navigacioni slucaj u faces-config.xml fajlu. Ova-

kva navigacija je koriscena tokom izrade aplikacije.

Konverter - Komponente mogu biti predstavljene raznim svojsvimau backing binu, a ta svojstva mogu biti tipa String  koji predstavlja ime,tipa Date koji predstavlja datum rodjenja, mogu da budu lista objekatatipa Student , ili bilo kog drugog tipa. Zbog toga komponente moraju imatiodredeno znanje o podacima koje prikazuju. JSF sadrzi ugradene kon-vertere koje se ne moraju pisati. Konverteri takode sadrze i formatiranjeprikaza. Na primer ako je prikazan datum, moze biti prikazan samo dan imesec, a moze se prikazati i ceo datum. Takode, datum se razlicito prika-zuje u drugim delovima sveta. U listingu 7 je naveden primer jednostavneugradene konverzije, a nacin mapiranja slozenije konverzije ce biti ilustro-vana u sledecem poglavlju.

<h:outputT ex t v alue=”#{nekiBean . dat e }”><f : c o n v e r t D a t e T i m e t y p e=” d a t e ” d a t e S t y l e =” f u l l ” />

</ h : o u t p u t T e x t>

Listing 7

Kao ispis se prikazuje datum koji je ob jekat tipa Data. Takode je nave-den i stil ispisa. Naravno postoji mnogo vise ugradenih konvertera sa istomlogikom koriscenja gde se navodi vrsta konvezije, tip i stil. Ipak ono sto

 je mnogo interesantnije jeste korscenje konvertera koje programer sam pise.

Na stranici za slanje poruka je dat selectOneMenu  (listing 8) koji sekoristi za izbor jednog od profesora kojem ucesnik zeli da posalje poruku.U cilju toga potrebno je povuci podatke o profesorima iz baze i smestitiih u listu koja se prikazuje u selectOneMenu . Tu takode na scenu stupa

konverzija koja brine o tome da se na komponenti prikazuje String , a kodpovlacenja informacije o tome koji je element selektovan radi se sa objek-tom tipa Profesor .

<h:selectOneMen u val ue=”#{s l a n j e . s e l e c t e d I t e m }”>< f : s e l e c t I t e m s v al u e=”#{s l a n j e . s e l e c t I t e m s }” />< f : c o n v e r t e r c o n v e rt e r I d=” f o o Co n ve r te r ” />

</h:s electO neMenu>

Listing 8

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

3.3. JSF tehnologija  19

Rad sa samom komponentom je ilustrovan nesto kasnije. Za sada jekonverzija u prvom planu. Iz koda se vidi da se koristi konverzija fooCon-verter . To naravno mora da bude mapirano u faces-config.xml  fajlu sto jeprikazano na listingu 9.

<c o n v e r t e r><c o n v e r t e r−i d>f o o C o n v e r t e r</ c o n v e r t e r−i d><c o n v e r t e r−c l a s s>dbmodel . FooCo nvert er</ c o n v e r t e r−c l a s s>

</ c o n v e r t e r>

Listing 9

Potrebno je mapirati converter-id  koji predstavlja naziv konvertera inavesti klasu kovertera. U klasi konvertera kod konkretnog primera Foo-

Converter  postoje dva metoda: getAsObject  i getAsString . Oni prebacujuobjekat u String  i obrnuto. Metod getAsObject  vraca objekat a metod ge-tAsString  vraca String .

Validator - JSF podrzava validatore cija je odgovornost da brine otome da li je korisnik uneo ispravnu (validnu) vrednost. Svaka ulazna kom-ponenta moze da ima jedan ili vise validatora. Koristan i cesto koriscenvalidator je f:validateLogRange, on brine o duzini inputa HtmlInputText komponente, tj. proverava da li je unet broj izmedu 1 i 500. Ako se unesebroj izvan domena, validator ce obrisati unos i strana ce biti ponovo ucitana.Jos jedan primer bi bio validacija duzine unosa koja je jako ucestala kodinput komponenti.

<h : i n p u tT e x t r e q u i r e d =” t r u e ” s i z e =” 20 ”><f : v a l i d a t e L e n g t h minimum=”5 ” maximum=”30 ”/>

</ h : i n p u t T e x t>

Listing 10

U kodu listinga 10 dat je inputText  cija ce velicina imati dvadeset karaktera(size=”20”). Atribut required  je postavljen na vrednost true sto znaci da

  je unos neophodan. Unutar tela inputText  nalazi se validator koji brineo tome da unos bude duzine izmedu pet i trideset karaktera. JSF ima imogucnost pravljenja novih validator.

3.3.2. Implementacija konvertera

Vec je opisan rad sa ugradenim konverterima, ali u aplikaciji su pisanii novi konverteri. Dat je primer konverzije objekta Profesor  gde je u selec-

tOneMenu  prikazano ime i prezime profesora, a kada se odabere odredena

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

20 IMPLEMENTACIJA

vrednost onda se radi sa objektom tipa Profesor . Uloga metoda getAsObject i getAsString  je da konvertuju iz objekta Profesor  u String  ime+prezime iobrnuto (listing 11).

package dbmodel ;import jav ax . f a c e s . component . UIComponent ;/ / . . . o s t a t a k i m p o rt a  p ub li c c l a s s FooConverter implements C onv erter {

p ri va te s t a t i c Konv k o n v e r z i j a = new Konv() ;public O b j ec t g e t A sO b j e ct ( F a c es C on t e xt c o n t e x t ,

UIComponent component , St ri ng val ue ) {return k o nv er zi j a . f in d ( v alue ) ;

}public S t r i n g g e t A s S t r i n g ( F a ce s Co n te x t c o n te x t ,

UIComponent component , Obje ct va lu e ) {return ” ” +(( P r o f e s o r ) v a l u e ) . g e t I d p r o f e s o r a ( ) ;

}}

Listing 11

FooConverter  implementira interfejs Convert  sto je obavezno za svekonvertere koji nisu ugradeni. Konverzija je uradena koriscenjem klaseKonv . To je klasa (listing 12) koja ucitava parove String-Profesor , tj. na-lazi odgovarajuceg profesora na osnovu kljuca. U ovom slucaju kljuc je

idprofesora  koji je tipa Integer , ali se on svejedno prebacuje u String  zbogtoga sto komponente rade sa stringovima. Treba obratiti paznju na metodloadMap() koji iz baze cita potrebne informacije.

package dbmodel ;// . . . i mport  p ub li c c l a s s Konv {

p ri va te s t a t i c Map<S t r i n g , P r o f e s o r> mapkon ;s t a t i c {

loadMap ( ) ;}public P r o f e s o r f i n d ( S t r i n g ke y ) {

return mapkon. g et ( key ) ;}public L i s t<P r o f e s o r> l i s t ( ) {

return new Array L is t<P r o f e s o r>(mapkon . va l ue s () ) ;}public Map<S t r in g , P r o fe s o r> map() {

return mapkon ;

...

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

3.3. JSF tehnologija  21

}p ri va te s t a t i c v oi d loadMap() {

mapkon = new LinkedHashMap<S t r in g , P r o fe s o r >() ;S e ss io n s e s s io n =

H i b e r n a t e U t i l . g e t S e s s i o n F a c t o r y ( ) . o p e n S e s s i o n ( ) ;T ra n sa ct i on t r a n s a c t i o n = null ;t r a n s a c t i o n = s e s s i o n . b e g i nT r a ns a c t io n ( ) ;St ri ng HQL QUERY = ” from Pr of es or ” ;Query query = s e s s i o n . cre ate Que ry (HQL QUERY) ;L i s t r e s u l t = q ue r y . l i s t ( ) ;

f or ( I t e r a t o r i t = r e s u l t . i t e r a t o r ( ) ;i t . hasNext () ; ) {

P r o f e s o r p r o f e s o r = ( P r o f e s o r ) i t . n ex t ( ) ;S t r i n g s t r =” ”+p r o f . g e t I d p r o f e s o r a ( ) ;mapkon . put( s tr , pr of es or ) ;

}}

}

Listing 12

3.3.3. Rad sa komponentama korisnickog interfejsa

JSF sadrzi veliki broj ugradenih komponenti. Ovde je navedena ilustra-

cija najcesce koriscenih u aplikaciji za izbor teme diplomskog rada: com-mandButton, inputText, outputText, selectOneMenu, form i panelGrid.

1. commandButton prikazuje HtmlCommandButton komponentu kojaprikazuje HTML formu dugmeta. Dogadaj se salje aplikaciji kada sepritisne dugme. Moze da se koristi svojstvo actionListener  kome seprosleduje vrednost #{helloBean.addContrlos} sto je izraz koji kazeJSF - u da treba da nade helloBean  objekat i onda da pozove metodaddControls koji izvrsava dogadaj. Takode, postoji i svojstvo action kome se prosleduje vrednost #{helloBean.goodbye} koji je specifici-ran za navigaciju sto je vec ranije opisano.

<h:commandButton ac ti on=”#{s l a n j e . p o s a l j i }”v a l u e = ” P o s a l j i ”>

</h:commandButton>

Listing 13

Svojstvo value u primeru navedenom u listingu 13 predstavlja String 

koji ce biti prikazan na povrsini dugmeta. Poziva se metod posalji()

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

22 IMPLEMENTACIJA

koji ima ulogu da u bazu upise podatke koji su navedeni u drugimkomponentama na toj stranici.

2. inputText koristi HtmlInputText  komponentu koja prima vrednost.Svojstvo value je i ovde najbitnije, jer se njemu prosleduje vrednost#{slanje.naslov } koja predstavlja atribut nalov (listing 14).

<h:inp utT ex t v alu e=”#{s l a n j e . n a s l o v}”/>

Listing 14

3. inputTextarea je komponenta analogna komponenti inputText  satom razlikom sto se ovde navode svojstva cols i rows koja predsta-

vljaju velicinu HtmlTextArea  komponente.

4. outputText koristi jednostavnu ali jako cesto koriscenu komponentuHtmlOutputText  cija je jednostavna uloga da prikaze tekst na ekranu.Poseduje svojstvo value koje je jedino svojstvo koje je obavezno uovoj komponenti i u njega se stavlja tekst koji se prikazuje (listing15). Postoji jos puno svojstva koja mogu da se daju ovoj komponentii uglavnom su vezana za stil teksta, font itd.

<h:outputT ex t v alue=”Nas lov ”></ h : o u t p u t T e x t>

Listing 15

Malo slozeniji primer bi bio da vrednost koja se prikazuje bude pro-menljiva u zavisnosti od nekih parametara sto je prikazano na listingu16.

<h:outputT ex t

value=”#{s l a n j e . n a s l o v }”><

/ h : o u t p u t T e x t>

Listing 16

Prikazuje se atribut naslov, a u slucaju da se vrednost atributa odredenaakcijom promeni, dolazi do promene vrednosti na ekranu.

5. selectOneMenu prikazuje HtmlSelectOneMenu  komponentu, kojasadrzi listu elemenata koji se ubacuju pomocu UIselectItems ele-menta.

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

3.3. JSF tehnologija  23

<h:selectOneMe nu val ue=”#{s l a n j e . s e l e c t e d I t e m }”>< f : s e l e c t I t e m s v al u e=”#{s l a n j e . s e l e c t I t e m s }” />< f : c o n v e r t e r c o n v er t e r I d=” f o oC o nv e rt e r ” /></h:s electO neMenu>

Listing 17

Kod prikazan u listingu 17 je opisan kod konvertera . Vrednost value uselectOneMenu  predstavlja vrednost trenutno selektovanog elementa.Koriscenjem atributa selectedItem  uvek se moze na lak nacin pristu-piti selektovanom elementu. Kada se koriste komponente ovog tipa,postoji potreba da se prikaze dinamicka lista elemenata. U svrhutoga se koristi UISelectItems komponenta. Ova komponenta predsta-vlja slozeniju verziju UISelectItem  komponente koja ima mogucnost

da prikaze samo jedan element.

package dbmodel ;// . . . im po rt p ub li c c l a s s S l a n j e {

p ri va te s t a t i c Konv mapkon = new Konv() ;private L i s t<S e l e c t I t e m> s e l e c t I t e m s ;private P r o f es o r s e l e c t ed I t e m ;// . . .{

f i l l S e l e c t I t e m s ( ) ;}/ / . . . K o n s t r u k t o r + s e t , g e t m e t od i . . .private void f i l l S e l e c t I t e m s ( ) {

s e l e c t I t e m s = new Array L is t<S e l e c t I t e m >() ;for ( P r o f e s o r p r o f : mapkon . l i s t ( ) ) {

s e l e c t I t e m s . add (new S e l e c t I t e m ( p r o f ,pr . ge tP re zi me ()+” ”+pr . get Ime () ) ) ;

}}

}

Listing 18

Postavlja se pitanje kako se prikazana lista popunjava. To je ilustro-vano kodom u listingu 18 gde se popunjava lista profesora pozivommetoda fillSelectItems(). String pr.getPrezime()+pr.getIme() pred-stavlja vrednost koja ce biti prikazana u komponenti, u konkretnomprimeru u selectOneMenu . Za svaku od tih vrednosti postoji ”ve-zan”objekat Profesor  tako da moze da se manipulise i sa objektima,

a o svemu brine konverter.

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

24 IMPLEMENTACIJA

6. form predstavlja HtmlForm  komponentu koja je kontejner za drugekomponente i koristi se za vracanje informacija serveru. Ona morada sadrzi barem jednu komponentu. Bitno je naglasiti da sve inputkomponente moraju biti unutar ovih tagova.

7. panelGrid koristi HtmlPanelGrid  komponentu, predtavlja kontejnerza druge komponente. Koristi se za pravljenje rasporeda komponenti.Jedan od vaznih svojstava jeste broj redova koji oznacava kolko ce bitikomponenti u jednom redu.

Navedene komponente su neke od najcesce koricenih . Na listingu 19 je naveden kod koji prikazuje jednu tipicnu stranicu iz radene aplikacije.Uloga ovog koda je da prikaze formu za slanje poruke kao i da informacijesmesti u predvidene atribute dok se samo slanje vrsi u pozadini, tj u Java

kodu.

<h : f o r m><h : fo r m s t y l e C l a s s =” t o do ”><c e n t e r><h:pa nelG rid colum ns=”2”><h:o utp utT ext va lu e=”Kome”></ h : o u t p u t T e x t><h:selectOneMe nu val ue=”#{s l a n j e . s e l e c t e d I t e m }”>< f : s e l e c t I t e m s v a lu e=”#{s l a n j e . s e l e c t I t e m s }” />< f : c o n v e r t e r c o n v e r t e r I d=” f o o C on v e r te r ” />

</h:s electO neMenu><h:outputT ex t v alue=”Nas lov ”></ h : o u t p u t T e x t><h:inp utT ex t v alue=”#{s l a n j e . n as}” /><h : o u t p u t Te x t v a l u e=” T e k st p o r uk e ”></ h : o u t p u t T e x t><h : i n p u t T e x t a r e a v a l u e=”#{s l a n j e . t e k s t }” c o l s =” 4 0 ”

rows=”10”></ h : i n p u t T e x t a r e a>

</ h : p a n e l G r i d><h:panelGroup><h:commandButton ac ti on=”#{s l a n j e . p o s a l j i }”

v a l u e = ” P o s a l j i ”>

</h:commandButton></h:panelGroup></ c e n t e r></ h : f o r m></ h : f o r m>

Listing 19

Svojstvo styleClass poziva fajl todo.css u kome su navedeni stilovi zaprikaz forme. Broj kolona u panel gridu je dva (columns=”2”), pa se sve

komponente redaju u dve kolone. Redom je dat prikaz teksta a zatim prikaz

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

3.4. Primer DataTable  25

komponente u tri reda. Na kraju se navodi commandButton  koji pokupisve podatke i upisuje poruku u bazu.

3.4. Primer DataTable

U ovom odeljku prikazan je jedan JSF DataTable primer tipico koriscenu aplikaciji za izbor teme diplomskog rada. Takode prikazan je primer kakose manipulise sa formama, ali pre svega na koji nacin je pravljenje tabelasa dinamickim podacima u JSF-u jako zgodno. Neke koriscene komponentesu ranije navedene, ali takode se uvode i neke nove.

1. dataTable je slozena komponenta, za razliku od svih vec prikazanihkomponenti. Komponenta HtmlDataTable je u osnovi Html tabela.Osnovna razlika je u tome sto je osposobljena da radi sa skupovima

podataka koji su smesteni u liste, nizove ili skupove. U sustini Html-DataTable ne moze da se koristi bez dinamickih podataka. Moze dase koristi samo za prikaz podataka ili mogu da se dodaju neke ulaznekontrole. U aplikaciji za izbor teme diplomskog rada koriste se liste.

2. column koristi UIColumn  komponentu koja ima samo tri svojstva i jedina standardna komponenta za koju se vezuje jeste HtmlDataTable.S obzirom da je HtmlDataTable najmocnija standardna komponenta,nije cudno sto postoji puno nacina na koje moze da se koristi. UI-

Column  sluzi za pravljenje sablona za svaku kolonu ispisa kako bi sedefinisalo zaglavlje (header ) svake kolone i da bi se sadrzaj svih vred-nosti ponavljao u kolonama. Za davanje konteksta koloni koristi setag facet  koji u konkretnom primeru navodi zaglavlje.

3. commandLink slicno dugmetu koristi se za izvrsavanje neke akcije,samo sto se ta akcija prosleduje linku, a ne dugmetu.

Primer implementacije komponenti: DataTable za inbox

Dobar primer za prikazivanje rada HtmlDataTable komponente jestepravljenje inbox - a (listing 20). U inboxu su date cetiri kolone. U prvojkoloni navodi se od koga je poruka primljena. Druga kolona sluzi da prikazenaslov poruke. Treca kolona je rezervisana za informaciju o tome od koga

 je poruka primljena. Dok se u poslednjoj koloni nalazi komanda za brisanjeporuke. Iz koda se vidi, da su prva i treca kolona HtmlOutputText  kopo-nente a druga i cetvrta su HtmlCommandLink  - ovi. Ideja je da se klikomna naziv neke od poruka forma koja prikazuje poruke skloni, a na njenomesto dodje forma koja je zaduzena za tekst poruke ciji je naslov odabran.

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

26 IMPLEMENTACIJA

Bitno je razumeti svojstvo binding  koje se pojavljuje na vise mesta. Ovosvojstvo sluzi za vezivanje UI komponente sa odredenim dogadajem. Naprimer, u prvoj formi dat je binding=”# {inbox.form }”, ovo je zapravo izrazkoji kaze da se forma u kojoj je definisan binding povezuje sa komponentom

UIForm form  deklarisanom u binu Inbox  tako da sve manipulacije koje sevrse nad tom komponentom se automatski reflektuju na ekranu. Isto vazi zadataTable koji je povezan sa HtmlDataTable komponentom. Bitno je obra-titi paznju da postoje dve forme koje se sustinski razlikuju u tome da je svoj-stvo rendered  postavljeno na true kod prve forme dok kod druge forme tavrednost je postavljna na false. To zapravo znaci da je default vrednost prveforme takva da se ona prikaze dok je druga nevidljiva. Upravo je to nacinna koji se moze manipulisati sa formam. Po potrebi se jedna forma sklanja,a druga prikazuje. Postoje jos dva bitna svojstava vezana za dataTable kojase moraju razumeti. Prvo je value=”#{inbox.poruke}” koje prosleduje ta-beli vrednosti koje se prikazuju. Moze da bude niz, skup ili lista. Drugobitno svojstvo je svojstvo var=”todo” koje pokazuje na listu deklarisanu usvojstvu value, pa svaki put kod ispisa podataka iz liste koristi se ta vred-nost (”#{todo.profesor.prezime} #{todo.profesor.ime}”,”#{todo.naslov }”itd.).

< f i e l d s e t><l e g e n d>P r i m l j e n e p or u ke</ l e g e n d><h:f orm bindi ng=”#{inb ox . form}” r e n d e r e d=” t r u e ”

s t y l e C l a s s = ” t o d o ”><h:data T able bind ing=”#{inbox . dataTable }”

value=”#{inb ox . poruke }”var=”todo” >

<h:column>< f : f a c e t name=” h e a d e r ”><h:column><h:out putTe xt val ue=”Od”></ h : o u t p u t T e x t>

</h:colum n></ f : f a c e t><h:outputT ex t v alu e=”#{todo . pro f e s o r . prezim e}

#{todo . pr of es or . ime}”></ h : o u t p u t T e x t></h:column><h:column>< f : f a c e t name=” h e a d e r ”><h:column><h:outputT ex t v alu e=”Nas lov ”></ h : o u t p u t T e x t>

</h:colum n></ f : f a c e t><h:commandLink va lu e=”#{todo . na slo v }”

...

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

3.4. Primer DataTable  27

action=”#{inbox . tek s t }” /></h:column><h:column>< f : f a c e t name=” h e a d e r ”>

<h:column><h:o utp utTe xt va lu e=”Datum”></ h : o u t p u t T e x t>

</h:colum n></ f : f a c e t><h:outputT ex t

value=”#{tod o . datumvreme}”></ h : o u t p u t T e x t></h:column><h:column>< f : f a c e t name=” h e a d e r ”><h:column><h : o ut p u tT e xt v a l u e=” B r i s a n j e ”></ h : o u t p u t T e x t>

</h:colum n></ f : f a c e t><h:commandLink va lu e=” Ukl oni ”

action=”#{i n b o x . d e l e t e }” /></h:column></ h : d a t a T a b l e>

</ h : f o r m><h:f orm bindi ng=”#{inbo x . form2}” r e n d e r e d=” f a l s e ”

s t y l e C l a s s = ” t o d o ”><h:pa nelG rid colum ns=”1”>

<h:out putTe xt val ue=”OD:#{inb ox . odKoga}”></ h : o u t p u t T e x t>

<h:outputT ex t v alu e=”T ek s tp o r u k e : ”></ h : o u t p u t T e x t>

<h:outputT ex tvalue=”#{inbox . tek s tP oru k e }”></ h : o u t p u t T e x t>

<h:commandLink val ue=”Nazad na inbox ”action=”#{inbo x . nazad}” />

</ h : p a n e l G r i d></ h : f o r m>

<

/ f i e l d s e t>

Listing 20

Sada su postavljene ekranske forme ali ostaje onaj interesantniji deokoji se desava u pozadini (listing 21). Deklarise se lista poruka i odmah napocetku pozive metod izlistaj() cija je uloga da popuni listu i da je azurirakada dode do promene. Za sve promenljive koje su na bilo koji nacin po-vezane sa ekranskim formama neophodno je imati set i get metode.

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

28 IMPLEMENTACIJA

U poslednjoj koloni nalazi se vrednost Ukloni  koja je konstantna za sveredove. Ta vrednost predstavlja akciju action=”#{inbox.delete}”. Pozivommetoda delete() brise se red u tabeli i poruka iz baze koja je predstavljenatim redom. Zahvaljujuci tome sto je korisceno svojsvo binding , sada na lak

nacin, koristeci metod getRowData() se moze videti koji red je odabran ida se izvuce informacija o tome koju je poruku potrebno obrisati.

U drugoj koloni dat je link koji poziva action=”#{inbox.tekst }”, tekstovog linka se razlikuje u svakom redu i predstavlja naslov primljene poruke.Klikom na neki od tih linkova, poziva se metod tekst() koji prvu formu ren-deruje na false, a drugu na true. To za cilj ima sklanjanje prve formedok druga forma postaje vidljiva. Takode, ovaj metod uzima informacijuo tome koji red je odabran na analogni nacin kako to radi metod delete(),a zatim u promenljive odKoga  i tekstPoruke smesta potrebne informacijekoje druga forma prikazuje na nacin naveden u JSP fajlu. Metod nazad()ima ulogu da vrati prvu formu i ponovo skloni drugu kada se odabere taakcija, koja je smestena u linku druge forme.

package dbmodel ;// . . . im po rt 

p ub li c c l a s s Inbox {private HtmlDataTable data Tabl e ;private L i s t<Poruka> poruke ;

private UIForm form ;private UIForm for m2 ;private S t r i n g t e k s t Po r u k e ;private S t r i n g odKoga ;//pomocne pro me n lj i v e . .{i z l i s t a j ( ) ;}public Inbox ( ) {

i z l i s t a j ( ) ;

}// . . . OBAVEZNI ! ! ! s e t i ge t meto di public void i z l i s t a j ( ) {

p o r u k e = new Array L is t<Poruka>() ;// . . . C it a i z b az e l i s t u p or uk a  

}public S t r i n g d e l e t e ( ) {

poruka = ( Poruka) dataTable . getRowData () ;b r i s i (poruka . getI d poru k e () ) ;i z l i s t a j ( ) ;

...

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

3.5. Stilovi i rad sa CSS-om 29

return ” d e l e t e ” ;}public void b r i s i ( in t idporu k e ) {

// . . . priprema HQL up it a 

S t r i n g h q l = ” d e l e t e fr om Poruka whe re i d po r uk e =: idporuk e ” ;Query q uery = s e s s io n . createQ uer y ( hq l ) ;// . . . O b ri s e i z b a ze p or uk u s a k l ju c em i d p o ru k e

}public S t r i n g t e k s t ( ) {

form . setRen dered ( f a l s e ) ;form2 . setRen dered ( true ) ;poruka2 = ( Poruka) dataTable . getRowData () ;tek s tP oruk e = poruka2 . getT ek s tpor uk e () ;odKoga= poruka2 . ge tP ro fe so r () . getPrezi me ()+”

”+poruka2 . ge tP ro fe so r () . getIme () ;return null ;

}public S t r i n g n az ad ( ) {

form2 . setRen dered ( f a l s e ) ;form . setRen dered ( true ) ;return null ;

}}

Listing 21

Kada se svi podaci obrade na ekranskoj formi se prikazuje tabela kaona slici 3.3. Za lepsi i jasniji prikaz podataka neophodno je koristiti CSSsto je prokazano na slici 3.4.

Slika 3.3: Primer tabele

3.5. Stilovi i rad sa CSS-om

Cascading Style Sheets ili skraceno CSS jezik koji se na suptilan nacinbavi oblikovanjem HTML komponenti. JSF ima jako dobru podrsku zaCSS tako sto se razni atribti u koponente bave time. Time se bave atributikoji u sebi sadrze podrec Class ili Style (styleClass, headerClass, rowClas-

ses, captionStyle itd). CSS kod je najcesce u posebnom fajl-u i odvojen od

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

30 IMPLEMENTACIJA

JSP-a, a potrebne klase se po potrebi pozivaju.

<h:data T able v alue=”#{send boxp rof . poruke}” v ar=”todo”s t y l e C l a s s =” t o do ” c o l u mn C l as s e s=” f i r s t , r e s t ”>

. . . . .</ h : d a t a T a b l e>

Listing 22

U primeru navedenom u listingu 22 data je tabela koja prikazuje di-namicku listu poruke. Atribut styleClass poziva skup CSS klasa koje seucitaju kada se tabela renderuje. Atribut headerClass ucitava CSS stilovekoji vaze za zaglavlje tabele. Atribut columnClasses ucitava stilove kijiuticu na kolone tabele. U dataTable postoji jos ovakvih atributa: captionC-

lass, footerClass, columnClasses. Svaka komponenta sadrzi skup atributakoji su zaduzeni za stilove sto cini JSF otvorenim za lakse koriscenje ovetehnologije. Jedan primer tabele uz korscene CSS-a prikazan je na slici 3.4.

Slika 3.4: Primer tabele sa CSS-om

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

Poglavlje 4

Prikaz rada aplikacije

U ovom poglavlju je dat opis rada web aplikacije za izbor teme di-plomskog rada. Najpre je dat prikaz koriscenja aplikacije kada je ucesnikprofesor. Na slici 4.1 je prikazana prva stranica za prijavljivanje profesorana sistem. Ukoliko profesor nije registrovan postoji dugme koje putanjuprebacuje na stranicu predvidenu za registraciju. Ako je profesor registro-van onda samo unese adresu i lozinku i prelazi na stranicu predvidenu zapredlog teme (slika 4.2). Cim je ucesnik registrovan, on ima laku navigacijukroz citav sistem, a precice(meni) za prelaz na bilo koji deo sistema se uveknalaze na vrhu.

Slika 4.1: Prijava profesora na sistem

Slika 4.2: Predlog tema

Na stranici za predlog teme postoji mogucnost da se predlozi neka tema

ili da se obrise vec predlozena tema. Kada se predlaze tema, unosi se

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

32 PRIKAZ RADA APLIKACIJE 

vise informacija kao sto se i vidi na slici 4.2. Pregled tema je prikazanna slici 4.3. Ovde profesor moze videti sve teme koje su predlozili drugiprofesori. Takode, profesor ima mogucnost da pregleda teme samo iz jedneod navedenih oblasti, ili ako to zeli, moze da vidi i sve teme. Na slici 4.3

  je prikazan pregled tema iz oblasti informacionih sistema. Na slici 4.4 jeprikazan nalog ucesnika koji je trenutno prijavljen na sistem, a jedna odmogucnosti koja se ovde pruza jeste da se promeni lozinka.

Slika 4.3: Pregled tema

Slika 4.4: Nalog

Kod slanja poruka iz liste se bira student kome se salje poruka (na slici4.5 to je student Kostic Laza), zatim se unese naslov poruke, tekst porukei pritiskom na dugme ”posalji”, poruka se salje. Primljene i poslate porukese citaju odnosno brisu na posebnim stranicama predvidenim za to. Naslici 4.6 je prikazana stranica sa poslatim porukama prijavljenog profesora.

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

33

Slika 4.5: Slanje poruke

Slika 4.6: Primljene poruke

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

34 PRIKAZ RADA APLIKACIJE 

Prijavljivanje studenta na sistem (slika 4.7), je analogno prijavljivanjuprofesora. Jedina razlika je u tome sto student unosi broj indeksa umestoe-mail adrese. Kada je student prijavljen na sistem razlikuju se dva slucaja.Prvi slucaj je kada student jos uvek nije odabrao temu, u tom slucaju sistem

ga prebacuje na stranicu gde ima mogucnost da odabere neku od tema.Biranje teme se vrsi klikom na link ”Odaberi”(slika 4.8). Drugi slucaj jekada je student vec odabrao temu i prijavljuje se na sistem zato sto zelida izvrsi neku drugu radnju. U ovom slucaju on vise nema mogucnost daodabere temu, iako i dalje moze da ih pregleda.

Slika 4.7: Prjava studenta na sistem

Slika 4.8: Prikaz tema

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

Poglavlje 5 

Zakljucak

U ovom diplomskom radu opisan je razvoj web aplikacije za izbor temadiplomskih i master radova. Aplikacija omogucava profesorima na jednomfakultetu da predlazu teme, da pregledaju teme i da vrse komunikaciju sastudentom. Aplikacija omogucava studentima da pregledaju teme, izaberutemu i da komuniciraju sa profesorom.

Dat je model aplikacije preko UML dijagrama. Funkcionalni zahtevidati su preko dijagrama slucajeva koriscenja. Staticki model sistema reali-zovan je koriscenjem Model View Control dizajn paterna i u radu je opisan

preko dijagrama klasa. Prednost koriscenja navedenog paterna je dobramodularnost sistema i razdvajanje korisnickog interfejsa od modela poda-taka.

Aplikacija je implemtirana u programskom jeziku Java uz koriscenjesavremenih open-source tehnologija. Komponente korisnickog interfejsaimplementirane su koriscenjem Java Server Faces tehnologije. Prednostkoriscenja ove tehnologije je u tome sto nudi bogatu biblioteku komponentikorisnickog interfejsa i olaksava razvoj kompleksnih web aplikacija. Perzi-

stencija podataka implementirana je upotrebom Hibernate alata.

Arhitektura aplikacije omogucava njeno dalje unapredivane i prosirivanjedodatnim funkcionalnostima. Neke od korisnih fukcionalnosti koji bi mo-gli da se ukljuce su: uvodenje indeksa za pretrazivanje, slanje obavestenjastudentima kad se objavi nova tema, izvrsiti proveru da li je student kojise prijavljuje upisan na fakultet itd.

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

Reference[1] Java, http://www.java.com/en/(pregledano 5.4.2011.)

[2] Eckel B., Misliti na Javi , Mikro knjiga, Beograd, 2007.

[3] Tomcat, http://http://tomcat.apache.org/ (pregledano 5.4.2011.)

[4] Hibernate, http://www.hibernate.org/ (pregledano 5.4.2011.)

[5] My SQL, http://www.mysql.com/ (pregledano 5.4.2011)

[6] Java Server Faces, http://www.javaserverfaces.org/ (pregledano 5.4.2011.)

[7] HTML, http://www.w3schools.com/html/default.asp (pregledano 5.4.2011.)

[8] CSS, http://www.w3schools.com/css/default.asp (pregledano 5.4.2011.)

[9] Bauer K., King G., Hibernate In Action , Manning Publications CO.,209 Bruce Park Avenue Greenwich, 2005.

[10] XML, http://www.w3schools.com/xml/default.asp (pregledano 5.4.2011.)

[11] Dimic B., Skladistenje XML bibliografskih zapisa , Diplomski rad, Pri-

rodno matematicki fakultet, Novi Sad, 2010.

[12]Kito D. Mann, Java Server Faces In Action , Manning PublicationsCO., 209 Bruce Park Avenue Greenwich, 2004.

[13] Eclipse, http://www.Eclipse.org (pregledano 5.4.2011.)

[14] Power Designer, http://www.sybase.com/products/modelingdevelopment/powerdesigner, (pregledano 5.4.2011.)

[15] UML, http://www.uml.org/, (pregledano 5.4.2011.)

[16] Surla D., Stanojevic I.; Uvod u objedinjeni jezik modeliranja , Grupaza informacione tehnologije, Novi Sad, 1999.

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

Biografija

Damir Galas roden je 3. maja 1985. godine u Pancevu, R. Srbija.Osnovnu skolu je zavrsio 2000. godine u Padini, a Srednju elektrotehnicku

i gradevinsku skolu ”Nikola Tesla”u Zrenjaninu 2004. godine gde stice zva-nje elekrotehnicar racunara. Studiranje je zapoceo iste godine u NovomSadu na Prirodno - matematickom fakultetu gde se opredelio za studije in-formatike, smer C1(diplomirani informaticar). Do septembra 2010. godine

 je polozio je sve ispite predvidene planom i programom smera i time stekaouslov za odbranu diplomskog rada.

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

UNIVERZITET U NOVOM SADUPRIRODNO-MATEMATICKI FAKULTET

KLJUCNA DOKUMENTACIJSKA INFORMACIJA

Redni broj:

RBRIdentifikacioni broj:

IBRTip dokumentacije: Monografska dokumentacija

TDTip zapisa: tekstualni stampani materijal

TZVrsta rada: Diplomski rad

VR

Autor: Damir GalasAUMentor: dr. Bojana Dimic Surla

MNNaslov rada: Web aplikacija zaNR izbor teme diplomskog radaJezik publikacije: srpski(latinica)JPJezik izvoda: srpski/engleski

JIZemlja publikovanja: SrbijaZPUze geografsko podrucje: VojvodinaUGPGodina: 2011GOIzdavc: Autorski reprintIZ

Mesto i adresa: Prirodno-matematicki fakultet,MA Trg Dositeja Obradovica 4, Novi Sad

Fizicki opis rada: (5/38/4/0/12/0/0)

FO (broj poglavlja/strana/lit. citata//tabela/slika/grafika/priloga)

Naucna oblast: InformatikaNO

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

Naucna disciplina: Informacioni sistemiNDPremetna odrednica/ Java, Hibernate, JSF,kljucne reci JSP, CSS, HTML,PerzistencijaPOUDKCuva se Biblioteka departmana

za matemaiku i informatikuPMF-a u Novom Sadu

Vazna napomena Nema

VNIzvod U radu je opisan razvoj

aplikacije za izbor temediplomskog rada uz pomoc

kojeg profesori mogu daobjavljuju teme, a studentida pregledaju i izaberu.Dato je modeliranje prekoUML dijagrama i opisimplementacije koja jeizvrsena korscenjem tehnologijaHibernate i Java Server Faces.

IZ

Datum prihvatanja teme od NN veca 10.5.2011DPDatum odbraneDOClanovi komisije:KOPredsednik: Dr. Milos Rackovic, red. prof.,

PMF, Novi Sad

clan: Dr. Dragan Ivanovic, docent,FTN, Novi Sad

clan: Dr. Bojana Dimic Surla, docent,PMF, Novi Sad

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

UNIVERSITY OF NOVI SADFACULTY OF SCIENCE

KEY WORDS DOCUMENTATION

Accession number:

ANOIdentification number::

INODocument type: Monograph publication

DTType of record: Textual printed material

TRContent code: Graduation thesis

CC

Author: Damir GalasAUMentor/comentor: dr. Bojana Dimic Surla

MNTitle: Web application for selecting themeTI for graduation thesisLanguage of text: EnglishLTLanguage of abstract: srpski/engleski

LACountry of publication: SerbiaCPLocality of publication: VojvodinaLPPublication year: 2011PYPublisher: Author’s reprintPU

Publication place: Faculty of Science and Mathematics,PP Trg Dositeja Obradovica 4, Novi Sad

Physical description: (5/38/4/0/12/0/0)

PD (chapters/pages/literature/tables/pictures/graphs/appendix)

Scientific field: InformaticsSF

5/10/2018 Izrada Web aplikacije kori enjem JSF - a i Hibernate - a - slidepdf.com

http://slidepdf.com/reader/full/izrada-web-aplikacije-koriscenjem-jsf-a-i-hibernate-a

Scientific discipline: Information SystemsSDSub ject/Key words: Java, Hibernate, JSF,

JSP, CSS, HTML,PersistentSKWUCHolding data: Library of DepartmentHD of Mathematics and Informatics,

Trg Dositeja Obradovica 4Note: NoneNAbstract: The paper describes development

of a Web application for selectingtopics for graduate thesis.

The application enables professorsto publish available topics andstudents to searchand select topics.The paper provides UML modeland details of the systemimplementation using Hibernateand Java Server Faces technologies.

AB

Accepted by the Scientific Board: May 10,2011ASBDefended on:DEThesis defend board:DBPresident: Ph.D. Milos Rackovic, full proffesor,

Faculty of Sciences, Novi Sad

Member: Ph.D. Dragan Ivanovic,assistent professor,Faculty of Technical Sciences, Novi Sad

Member: Ph.D. Bojana Dimic Surla,assistent professor,Faculty of Science, Novi Sad