You are on page 1of 6

INFOTEH-JAHORINA Vol. 12, March 2013.

Implementacija MVC arhitekture u JSP tehnologiji

Jelena Ćosović, Miljan Radojičić


studenti drugog ciklusa studija
Elektrotehnički fakultet
Istočno Sarajevo, Bosna i Hercegovina
e-mail: jelena-cosa@hotmail.com, miljan.radojicic@yahoo.com

Sadržaj—Na početku rada biće predstavljen WWW i klijent- pristupaju podacima koji se nalaze na hipertekstualnim
server arhitektura koja je najzastupljenija arhitektura u Web serverima.[1]
aplikacijama. Na osnovu ove arhitekture izvršena je podjela Web
tehnologija koje se izvršavaju na klijentskoj i na serverskoj B. Klijent-server arhitektura
strani. U radu će biti riječi o JSP tehnologiji i MVC arhitekturi Kao što se može vidjeti iz prethodnog, klijent-server
kao i primjeni te arhitekture u JSP-u, tj. kako je izvršena podjela arhitektura je usko vezana za Web još od samog početka
na model (upotrebom klasičnih Java klasa), kontroler razvoja. Klijent-server predstavlja vezu među procesima koji s
(upotrebom servleta) i view (upotrebom standardnih JSP pokreću na istim ili različitim mašinama koje su mrežno
stranica). U radu će biti dati primjeri Web aplikacije koju su povezane.[2]
autori kreirali, a koja komunicira sa alumni bazom
Elektrotehničkog fakulteta u I. Sarajevu i omogućava Klijent najčešće predstavlja Web pretraživač na lokalnom
manipulisanje podacima koji se nalaze u toj bazi podataka. računaru. Pretraživač kontaktira Web server i šalje mu zahtjev
za određeni resurs koji se nalazi na serveru. Pretraživač prima
Ključne riječi-JavaServer Pages, Java, Model-View-Controller, informaciju koja stiže kao odgovor od servera na zahtjev koji
JDBC mu je prethodno klijent poslao, i pretraživač prikazuje
informaciju na korisničkom računaru.[2] Serveri predstavljaju
I. UVOD
računare na kojima su pokrenuti procesi koji su odgovorni za
U današnje vrijeme Interneta i ubrzane modernizacije, sve obradu HTTP klijentskih zahtjeva i za slanje HTTP odgovora
više kompanija, organizacija i pojedinaca žele da povećaju klijentima koji najčešće predstavljaju HTML stranice. Serveri
svoj udio na tržištu i reklamiraju i popularizuju svoje usluge i su zaduženi i za obradu ne samo statičkog već i dinamičkog
proizvode. Kao najefikasnije rješenje nameće se izrada Web sadržaja (kreiranih pomoću JSP-a, PHP-a, ASP-a, ASP.NET-a
stranica upotrebom različitih tehnologija koje su danas i slično). [2]
dostupne. Svakako, na samom početku, potrebno je postaviti
ciljeve, analizirati sve dostupne podatke, naći odgovarajuću III. WEB TEHNOLOGIJE
strategiju, kako željeni rezultat na kraju ne bi izostao. Nakon Komunikacija na Internetu se može podijeliti na dva
ovih koraka, prelazi se na implementaciju, tj. izradu Internet odvojena dijela: klijente i servere. Upravo ovakva podjela
prezentacije. Da bi se napravilo kvalitetno rješenje, mora se omogućila je da aplikacije budu sastavljene iz više
poznavati tehnologija i alati koji se koriste za izradu. komponenti. Ove komponente mogu da budu na različitim
U ovom radu predstavljeni su tehnički aspekti izrade Web mašinama, a koje rade zajedno komunicirajući putem mreže
aplikacije, tj. Internet softvera za informacione sisteme (Interneta). U skladu sa klijent-server arhitekturom i razvijanje
upotrebom JSP-a (eng. Java Server Pages) kao jedne od komponenti koje čine Web aplikaciju je podjeljeno na
najpopularnijih tehnologija za izradu Internet softvera. programiranje na klijentskoj strani i programiranje na
serverskoj strani. [3]
II. WWW I KLIJENT-SERVER ARHITEKTURA
Tehnologije koje su razvijene za programiranje na
A. WWW klijentskoj strani, tj. client-side tehnologije imaju jedan glavni
WWW (eng. World Wide Web) ili skraćeno Web cilj, a to je omogućavanje da se sadržaj Web stranica mijenja u
predstavlja svjetsku mrežu međusobno povezanih dokumenata skladu sa promjenama koje korisnik unosi. Dijelovi skripti se
napisanih posebnim jezikom HTML (eng. HyperText Markup ugrađuju u HTML dokumente ili se oni pozivaju iz dokumenta
Language) koji omogućava povezivanje sa drugim elementima i na taj način mogu da npr. procesiraju podatke koji se unose u
i uključivanje svih elemenata multimedije. Tim Berners-Lee uz forme, kako bi se provjerilo da li podaci koji su unijeti
pomoć Robert Cailliau-a napisao prijedlog za projekat nazvan odgovaraju zadanim šablonima ili da se ponašanje određenih
“WorldWideWeb” (skraćeno W3) koji je predstavljao objekata unutar HTML dokumenta određuje skriptama koje
“hipertekstualni sistem” u kojem su jasno bili odvojeni dijelovi reaguju na događaje koje generišu ti objekti. Najpoznatije
za pohranjivanje i dijelovi za prikazivanje informacija [1]. tehnologije koje se koriste na klijentskoj strani su: JavaScript,
Pomoću klijentskih programa tj. pretraživača (eng. browsers), Ajax (eng. Asynchronous JavaScript and XML) i jQuery kao
koji se mogu pokrenuti na različitim platformama, korisnici posebna JavaScript biblioteka.[3]

- 1244 -
Tehnologije za programiranje na serverskoj strani, tzv. bean-ovima i pružaju više kontrolisan pristup podacima u
server-side tehnologije uključuju skripte unutar HTML koda aplikaciji. JSP 2.0 specifikacija je dodala i mehanizam kojim
koje rezultuju obradom klijentskog zahtjeva od strane skripti autori mogu pisati akcije koristeći direktno JSP tehnologiju.
koje se pokreću na serverskoj stani prije nego što server Ovo znatno pojednostavljuje proces pisanja akcija.
pošalje odgovor klijentu. Obrada na serverskoj strani obuhvata
dinamičko dodavanje ili promjenu sadržaja Web stranica. Ove V. MVC ARHITEKTURA
skripte se koriste za pristupanje podacima u bazi, za obradu MVC (eng. Model-View-Controller) predstavlja softversku
podataka HTML formi, za uređivanje Web stranica kao i za arhitekturu ili dizajn šablon koji se koristi u softverskom
zaštitu, pošto se serverski kod ne može vidjeti iz klijentskog inženjerstvu a čiji je osnovni princip baziran na ideji da logika
pretraživača. Najzastupljenije server-side tehnologije danas aplikacije treba biti razdvojena od njene prezentacije, tj. logika
su: PHP (eng. Hypertext Preprocessor), ASP (eng. Active je podjeljena na tri odvojene jedinice: model, prezentacioni
Server Pages) i JSP (eng. Java Server Pages).[3] nivo (eng. view) i kontroler (eng. controller) koji komuniciraju
IV. JSP jedni sa drugima.[6]
JSP predstavlja jednu od najpopularnijih tehnologija koje Model se bavi ponašanjem i podacima aplikacije, odgovara
se pokreću na serverskoj strani. . U JSP je predstavljena JSTL na zahtjeve za informacijama o svom stanje (koji najčešće
(eng. JSP Standard Tag Library) biblioteka koja pruža dodatne šalje pogled) i odgovara na instrukcije za promjenom stanja
tagove koji su bili veoma korisni i doveli su do značajnog (koje najčešće šalje kontroler). Model je zadužen za
porasta interesovanja za ovu vrstu tehnologije. JSTL izvršavanje upita nad tabelama u bazi podataka i obavljanje
biblioteka je kolekcija tagova koji enkapsuliraju fukcionalnost računanja u zavisnosti od ulaznih promjenljivih.[7]
mnogih standardnih JSP tehnologija i na taj način uklanjaju Pogled (eng. view) je zadužen za prikaz informacija koje
eventualna ponavljanja i kreiraju mnogo kompaktniju je dobio od modela. Pogled ili prezentacioni sloj nije zadužen
aplikaciju. Zajedno sa JSTL predstavljen je i JSP EL (eng. za obradu podataka koji se unose, već je jedino zadužen za
Expression Language), koji je služio za kreiranje prilagođenih renderovanje podataka koje dobije od modela i slanje
komponenti. [4]. podataka na odgovarajuće mjesto.[7]
JSP je stekla popularnost uvođenjem određenih novina i Kontroler (eng. controller) je zadužen za interpretaciju
alata koje su umnogome učinile jednostavnijim i efikasnijim ulaza koje korisnik unosi putem miša i tastature, na osnovu
proces izrade Web aplikacija. Prednosti koje JSP tehnologija čega informiše model i/ili pogled da izvrše ažuriranje, ukoliko
pruža su [5]: je to potrebno. Kontroler je zadužen za obradu zahtjeva koje
a) Osobina da se jednom napiše, a svugdje pokreće – šalje klijent, na osnovu kojih učitava ili ažurira prezentacioni
JSP tehnologija je nazavisna od platforme, Web servera i nivo tj. poglede. Na slici 1. prikazana je komunikacija između
osnovnih serverskih komponenti. JSP stranice se mogu dijelova MVC arhitekture.[7]
pokrenuti na bilo kojoj platformi i bilo kom Web serveru i
može im se pristupati sa bilo kog Web pretraživača.
b) Visokokvalitetna podrška alatima – Nezavisnost od
platformi dozvoljava JSP korisnicima da izaberu nabolje alate.
Takođe, jedan od ciljeva dizajna JSP-a je taj da se naprave
visokokvalitetni prenosivi alati.
c) Ponovna upotreba komponenti i biblioteka za tag-ove
– JSP tehnologija naglašava ponovnu upotrebu komponenti
kao što su JavaBean komponente i biblioteke za tag-ove. Ove
komponente se mogu koristiti sa interaktivnim alatima za
razvoj komponenti i kompoziciju stranice, pružajući tako
nezavisnost od platformi i fleksibilnost jezika.
d) Odvajanje dinamičkog i statičkog sadržaja – JSP
tehnologija pruža mogućnost odvajanja statičkog sadržaja od
dinamičkog sadržaja. Ovo u mnogome pojednostavljuje proces Slika 1. MVC arhitektura
kreiranja sadržaja. Odvajanje podržavaju i tzv. bean
komponente, koje su posebno dizajnirane za interakciju sa VI. IMPLEMENTACIJA MVC ARHITEKTURE U JSP
objektima na serverskoj strani i mehanizam za tag-ove. TEHNOLOGIJI
e) Podrška akcijama, izrazima i skriptovanju – JSP Web aplikacija, koju su autori kreirali u praktičnom dijelu
tehnologija podržava i skriptne elemente i akcije. Akcije rada, predstavlja softver kreiran upotrebom JSP tehnologije
enkapsuliraju korisne funkcionalnosti u veoma pogodnu formu koji omogućava komunikaciju sa alumni bazom
kojom alati mogu da manipulišu. Izrazi se koriste za Elektrotehničkog fakulteta u Istočnom Sarajevu. Korisniku
pristupanje podacima. JSP 2.0 verzija je dodala i EL (eng. aplikacije je omogućeno da manipuliše podacima u bazi, tj. da
expression language) Java-baziranim skriptama. Izrazi u EL-u unosi nove zapise, mijenja postojeće zapise kao i da ima uvid
direktno izražavaju autorove koncepte kao svojstva u tzv. u postojeće zapise u bazi podataka. Aplikacija je krerana

- 1245 -
upotrebom MVC arhitekture, pa su u nastavku predstavljeni a) Statement - objekat koji se koristi za slanje
svi dijelovi aplikacije, prema MVC arhitekturi. jednostavnih SQL naredbi
A. Model b) PreparedStatement – objekat koji se koristi za
izvršavanje naredbi više puta
Model u okviru MVC arhitekture je predstavljen samim
podacima koji se nalaze u bazi podataka i obavljanjem CRUD c) CallableStatement – objekat koji se koristi za
operacija nad tim podacima. izvršavanje SQL uskladištenih procedura.

1) JDBC API 4) Manipulacija rezultatima SQL naredbi

Za pristupanje podacima u bazi podataka koristi se je Nakon što se izvrši SQL upit, rezultati formiraju
JDBC (eng. Java DataBase Connectivity) API koji pruža Java pseudotabelu koja sadrži sve redove koji zadovoljaju
aplikacijama pristup većini sistema baza podataka pomoću kriterijum upita. Tekstualna reprezentacija koja nastaje ovim
SQL-a (eng. Structured Query Language). Različiti DBMS putem i koja sadrži podatke nije pogodna za Java programe.
(eng. Database Management Systems) imaju veoma malo Umjesto toga, JDBC koristi java.sql.ResultSet interfejs za
zajedničkog: samo sličnu svrhu i većinom kompatabilan upitni enkapsuliranje rezultata upita kao Java primitivne tipove i
jezik. Pored toga, svaka baza podataka ima svoj API koji se objekte. ResultSet se može predstaviti kao tabela rezultata
mora proučiti kako bi se mogli napisati programi koji upita u kojoj se mogu koristiti metode za navigaciju kroz
komuniciraju sa tom bazom. [8] redove i preuzimanje vrijednosti određenih kolona. [9]

JDBC predstavlja pokušaj kompanije Sun da se kreira Podaci se preuzimaju iz ResultSet-a upotrebom getter
platformski nezavisan interfejs između baza podataka i Java-e. metoda koje referenciraju kolone sa podacima. ResultSet
Osnovne tri funkcije JDBC-a su [9]: ostvarivanje konekcije sa getter metode omogućavaju uzimanje podataka odgovarajućeg
bazom podataka, slanje SQL komandi bazi podataka i obrada tipa iz kolona u trenutnom redu. Podaci u kolonama se u
rezultata. Sa JDBC-om se pruža mogućnost korištenja trenutnom redu mogu uzeti u bilo kojem redoslijedu.
standardnog seta metoda za pristup bazi. JDBC API definiše Preuzimanje podataka iz kolona se može obaviti na dva načina
set interfejsa koji enkapsuliraju veći dio funkcionalnosti baze, referenciranjem imena tabele ili referenciranjem broja kolone
uključujući izvršavanje upita, obradu rezultata i slično. [9]:
Programeri pišu tzv. JDBC driver, koji predstavlja set klasa ResultSet rs = stmt.executeQuery(query);
koje implementiraju ove interfejse za određeni DBMS. System.out.println(“Ime” + rs.getString(“Ime”) +
Aplikacija koristi JDBC za interakciju sa jednom ili više baza “Starost” + rs.getInt(3));
podataka, a da pritom ne posjeduje informacije o
implementaciji driver-a [8]. 5) Uskladištene procedure
2) Povezivanje sa bazom podataka Uskladištena procedura predstavlja kolekciju T-SQL (eng.
Transact-SQL) naredbi koje mogu da prime i vrate parametre
Da bi se ostvarila konekcija sa određenom bazom koje dobijaju od korisnika. T-SQL predstavlja proširenje SQL-
podataka, prvo je potrebno registrovati JDBC driver pomoću a koje omogućava upotrebu uskladištenih procedura.
JDBC Driver Manager-a. Driver Manager pruža osnovne Uskladištene procedure se mogu predstaviti kao metode ili
servise za upravljanjem JDBC driver-ima [9]: funkcije napisane u T-SQL-u. [9]
Class.forName("com.microsoft.sqlserver.jdbc.SQLServ
erDriver");
Web aplikacija za alumni bazu visokoškolske ustanove,
prilikom komunikacije sa bazom podataka i manipulisanja
Nakon registracije odgovarajućeg driver-a, pomoću podacima u bazi, se oslanja na pozivanje uskladištenih
Connection objekta, koji enkapsulira konekciju na procedura.
odgovarajuću bazu podataka, formira se osnova za upravljanje
podacima: 6) DAO
Connection con = DriverManager. getConnection ("url", Direktno manipulisanje podacima koji se nalaze u bazi
"user", "password"); podataka u aplikaciji se obavlja Java klasama upotrebom Data
Access Object (DAO) šablona. DAO šablon je standardni
Metodi getConnection() se prosljeđuju tri parametra:
šablon koji se koristi za enkapsuliranje pristupa podacima.
JDBC URL, korisničko ime i lozinka. Kada se pozove ova
Umjesto pozivanja JDBC-a ili nekog drugog API-ja direktno
metoda, Driver Manager poziva sve registovane driver-e i
iz svih Java klasa koje pristupaju podacima, vrši se
provjerava koji od njih razumije URL. Ukoliko driver
enkapsuliranje pristupa podacima u jedan ili više objekata za
razumije URL, on vraća Connection objekat.[9]
pristup podacima (eng. data access objects - DAO). DAO
3) Kreiranje SQL naredbi tipično sadrži metode za kreiranje, ažuriranje, uzimanje i
brisanje objekata iz baze podataka, kao i metode za pristup
Jednom kada se ostvari konekcija na bazu, ona se koristi za bazi podataka koje vraćaju kolekcije objekata. [10]
slanje SQL upita bazi podataka. Pošto ne postoje ograničenja
koja se odnose na vrstu SQL naredbi koja se šalju pomoću a) Primjena DAO šablona u Web aplikaciji za alumni
JDBC-a, korisnik ima mogućnost da koristi upite specifične za bazu
bazu ili ne-SQL upite. JDBC API pruža tri klase za kreiranje U aplikaciji za alumni bazu visokoškolske ustanove,
SQL naredbi nad bazom podataka [9]: pomoću Java klasa, obavljena je cjelokupna komunikacija sa

- 1246 -
bazom podataka. Naime, za svaku CRUD operaciju (osim Da bi se prikazali podaci o trenutno prijavljenom
DELETE operacije) kreirane su posebne Java klase. Tako je korisniku, JSP stranica mora da uzme podatke iz zahtjeva koji
za dobijanje podataka iz tabele, tj. izvršenje SELECT naredbe, je poslao servlet, a to obavlja upotrebom jsp:useBean akcije:
kreirana klasa SelectService klasa, za promjenu podataka <jsp:useBean id="trenutniKorisnik" class="model.UserBean"
kreirana je UpdateService klasa i za dodavanje novog zapisa scope="session">
kreirana je CreateService klasa. </jsp:useBean>
Na primjeru klase za unos novog zapisa u bazu podataka,
U prethodnom kodu instancira se objekat klase UserBean
može se prikazati primjena DAO šablona i pozivanje
koji se nalazi u sesiji a čiji je naziv trenutniKorisnik. Ovom
uskladištenih procedura. U create() metodi se poziva se
objektu se može pristupati bilo gdje unutar JSP stranice, kao
poziva sljedeća procedura:
npr:
SP = conn.prepareCall("{ call add" + naziv + "('" +
<tr>
parametri+ "') }",
<td><img src="images/user.png"></td>
SQLServerResultSet.TYPE_SCROLL_INSENSITIVE,
SQLServerResultSet.CONCUR_READ_ONLY); <td width="164" height="43" class="tabela">
&nbsp;Ime
</td>
Varijabla parametri predstavlja vrijednosti podataka koje <td width="164" height="43" class="tabela">
se prema odgovarajućem redoslijedu upisuju u tabelu. <%=trenutniKorisnik.getIme() %>
</td>
Nakon što se izvrše uskladištene procedure, potrebno je </tr>
sačuvati informaciju o tome da li su se procedure uspješno
izvršile. U create() metodi se u heš mapu upisuje podatak o Iz ovog primjera se vidi način uzimanja podatka o imenu
uspješnosti i prebacuje u json format: korisnika koji je prijavljen u sistem i prikazivanja tog podatka
try { u okviru tabele sa ostalim podacima o korisniku.
...
SP.executeUpdate(); Osnovna komponenta koja se koristi u aplikaciji u JSP
kon.put("Result", "OK"); stranicama, JTable komponenta, kreirana je pomoću jQuery
... tehnologije i vrši Ajax pozive prema serveru. Pošto je kreirana
kon.put("Record", red); pomoću jQuery tehnologije, sve akcije i informacije u vezi sa
} catch (SQLException e) { poljima tabele se navode u okviru <script
kon.put("Result", "ERROR"); type="text/javascript"> </script> tagova i
kon.put("Message", "Nije moguće dodavanje novog
zapisa"); $(document).ready() funkcije, kako bi se obezbijedilo da se
e.printStackTrace(); akcije obavljaju prije učitavanja sadržaja stranice:
} <script type="text/javascript">
json = gson.toJson(kon); $(document).ready(function () {
$('#Tabela').jtable({
B. Pogled
title: 'Radno Mjesto',
Dio pogled u okviru MVC arhitekture predstavljen je JSP paging: true,
stranicama. JSP stranica predstavlja Web stranicu koja sadrži pageSize: 10,
elemente HTML-a, tj. HTML tag-ove. Pored HTML-a, JSP defaultSorting: 'DR_OZNAKA ASC',
actions: {
stranica može sadržati i JSP tag-ove koji dozvoljavaju serveru
...
da ubaci dinamički sadržaj u stranicu. JSP elementi se mogu },
koristiti u različite svrhe, kao što je povrat informacija iz baze fields: {
podataka. Kada korisnik zatraži određenu JSP stranicu, server ...
izvršava JSP elemente i spaja rezultate sa statičkim dijelovima },
stranice i tako dinamički kreiranu stranicu šalje nazad Web ...
});
pretraživaču.
});
Kada je riječ o komunikaciji između pogleda i kontrolera u </script>
okviru MVC arhitekture, podaci se razmjenjuju u oba smjera. Odavde se vidi da se na samom početku statički navodi
U prvom slučaju, kada se vrši slanje podataka od pogleda ka naziv tabele i maksimalan broj redova koji se prikazuju na
kontrolerima, kreira se request objekat koji sadrži informacije jednoj strani. Pored toga, navodi se i inicijalni poredak
o podacima koje je unio korisnik i dodatne informacije koje se podataka koji se uzimaju iz baze, što je u ovom slučaju po
implicitno kreiraju. Ovaj objekat se dalje obrađuje u nazivima u koloni DR_OZNAKA, i to u opadajućem
servletima, kako bi se dobili željeni podaci. redoslijedu. Kada korisnik vrši neku od CRUD operacija nad
U drugom slučaju, kada se podaci šalju od kontrolera ka tabelom, JTable komponenta šalje Ajax poziv odgovarajućem
pogledima, JSP stranica koristi jsp:useBean akciju kako bi servletu, a to je u ovom slučaju ProcessServlet:
dobila podatke iz zahtjeva koji je pristigao. Stranica za prikaz actions : {
informacija o korisniku koji je trenutno prijavljen na sistem listAction : 'ProcessServlet?akcija=select',
daje najbolji primjer upotrebe ove akcije. updateAction : 'ProcessServlet?akcija=update',
createAction : 'ProcessServlet?akcija=create'
},

- 1247 -
Na osnovu vrijednosti parametra “akcija”, ProcessServlet ...
poziva odgovarajuće metode za obavljanje CRUD operacija. SelectService select2 = new SelectService((String)
request.getSession().getAttribute("imeTabele"),
Na slici 2, prikazan je izgled JSP stranice sa tabelom: startIndex,pageSize, sorting, filterName, filterValue);
String json = select2.uzmiPodatkeTabele();
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(json.toString());
}

Odavde se može vidjeti da nakon određivanja vrste CRUD


operacije, koja je u ovom slučaju SELECT operacija, uzimaju
podaci o rednom broju prvog reda i ukupnom broju redova
koji se prikazuju na jednoj strani. Na osnovu tih podataka
poziva se konstruktor SelectService() i metoda
uzmiPodatkeTabele() koja uzima podatke iz tabele i vraća ih u
formatu json-a. Te podatke ProcessServlet pomoću Response
objekta vraća odgovarajućoj JSP stranici.

Slika 2. Izgled JSP stranice sa podacima iz baze podataka

C. Kontroler
Kontroler unutar MVC arhitekture predstavlja HTTP
servlet, koji nasljeđuje javax.servlet.http.HttpServlet klasu.
Servleti predstavljaju Java programe koji se pokreću na Web
ili aplikacionim serverima i koji se ponašaju kao srednji sloj
između zahtjeva koji dolaze od Web pretraživača ili drugih
HTTP klijenata i baza podataka na HTTP serverima. [11]
Kada se klijent poveže sa serverom i kreira HTTP zahtjev,
taj zahtjev može biti različitog tipa tj. može biti u različitim
metodama. Servlet posjeduje sljedeće metode: doDelete(),
doGet(), doPost(), doHead(), doOptions(), doPut(),
doTrace(), getLastModified() i service(). Najčešće
korištene metode su doGet() i doPost() metode. Ove metode Slika 3. Izgled JSP stranice u slučaju uspješne promjene zapisa
dozvoljavaju servlet-u da izvrši više različitih zadataka u
zavisnosti od načina na koji je pozvan, obrađujući klijentske U aplikaciji su UPDATE i INSERT operacije dozvoljene
zahtjeve koji pristižu POST ili GET metodom. [11] samo administratorima, dok ostali korisnici nemaju dozvolu za
Unutar realizovane Web aplikacije nalaze se četiri servleta, njihovo izvršenje. Ukoliko korisnik unese podatke za
koji zajedno predstavljaju kontrolerski dio aplikacije. Glavni dodavanje ili promjenu zapisa u tabeli, ProcessServlet
dio kontrolera je predstavljen ProcessServlet-om u kojem je provjerava da li je korisnik administrator. Ukoliko jeste,
realizovana osnovna logika za obavljanje CRUD operacija u uzimaju se podaci koje je korisnik unio i pozivaju se metode
bazi podataka. Kada korisnik obavi određenu CRUD koje će se povezati sa bazom i izvršiti odgovarajuće
operaciju, informacija o operaciji se POST metodom šalje uskladištene procedure:
servletu. Prvo što je potrebno da ProcessServlet uradi je da UserBean user = (UserBean)request.getSession().
uzme podatak o obavljenoj operaciji i da na osnovu te getAttribute("trenutniKorisnik");
vrijednosti pozove odgovarajuće metode koje komuniciraju sa String json = "";
bazom. if (user.getNivo().intValue() == 9) {
Enumeration<?> parametri = request.getParameterNames();
U slučaju kada korisnik želi da otvori stranicu za prikaz ...
podataka neke od tabela iz alumni baze, kreira se klijentski UpdateService updateS = new UpdateService();
json = updateS.update((String) request.getSession()
zahtjev za obavljanje SELECT operacije. ProcessServlet iz .getAttribute("imeSP"), parametri);
Request objekta uzima podatak o CRUD operaciji i dalje }
poziva odgovarajuće metode: else {
json = "{\"Result\":\"ERROR\",\"Message\":\"Nemate
String akcija = request.getParameter("akcija");
dozvolu da izvrsite ovu operaciju\"}";
if (akcija.equals("select")) {
}
int startIndex =
response.setContentType("text/html");
Integer.parseInt(request.getParameter("jtStartIndex"));
response.setCharacterEncoding("UTF-8");
int pageSize =
response.getWriter().write(json.toString());
Integer.parseInt(request.getParameter("jtPageSize"));
String sorting = request.getParameter("jtSorting");

- 1248 -
Podaci koje vraća metoda update() su u formatu json-a, i opisane u okviru view dijela, gdje je akcenat stavljen na
u zavisnosti od ishoda izvršenja UPDATE operacije, vraćaju metode koje JSP stranice koriste za uzimanje i predstavljanje
se podaci o uspješnom ili neuspješnom izvršenju. Ukoliko podataka koje dobiju od kontrolera.
korisnik koji želi da izvrši promjenu zapisa nije administrator,
u json podatak koji se vraća JSP stranici se upisuju podaci o ZAHVALNICA
nepostojanju dozvole za izvršenje te operacije. Na slikama 3. i Veliku zahvalnost dugujemo prof. dr Branku Perišiću, koji
4. je prikazan izgled iste stranice za slučaj uspješne i je ujedno i mentor ovog rada, i asistentu Vladimiru Vujoviću
neuspješne promjene zapisa u bazi podataka, respektivno. na neiscrpnoj pomoći tokom izrade teorijskog i praktičnog
dijela u okviru projekta-2 i završnog rada.
LITERATURA
[1] Tim Barners-Lee. “Information Management: A Proposal” Internet:
http://www.w3.org/ Proposal.html, Novembar 1990. god.
[27.Nov.2012.].
[2] S.C. Yadav i S.K.Singh. “Introduction,” u An Introduction To Client
Sever Computing, vol. 1, New Delhi, India: New Age International
Publishers, 2009, pp. 1-25.
[3] R. Orfali, D. Harkey i J. Edwards. “Web Client/Server: The Hypertext
Era,” u Client/Server Survival Guide, vol. 3, New York, United States:
John Wiley & Sons, 1999.
[4] G. Zambon i M. Sekler. “Introducing JavaServer Pages and Tomcat” u
Beginning JSP, JSF, and Tomcat Web Development: From Novice to
Professional, vol. 1, New York, United States: Apress, 2007.
[5] P. Delisle. “Overview” u JSP Specification, vol. 2, Santa Clara, United
States: Sun Microsystems, Inc., 2009.
[6] Trygve Reenskaug. “Applications Programming in Smalltalk-80 (TM):
How to use Model-View-Controller (MVC)” Internet: http://st-
Slika 4. Izgled JSP stranice u slučaju neuspješne promjene zapisa www.cs.illinois.edu/users/smarch/ st-docs/mvc.html, 1979. god.
[01.Jan.2013.].
Prilikom INSERT operacije, ProcessServlet obavlja istu [7] Microsoft. “Model-View-Controller” Internet:
provjeru kao i u prethodnom primjeru, a jedina razlika je što http://msdn.microsoft.com/en-us/library/ff649643.aspx, 2012. god.
će se umjesto update() metode pozvati create() metoda: [01.Jan.2013.].
[8] Jim Farley i William Crawford. “JDBC” u Java Enterprise in a Nutshell,
CreateService add = new CreateService(); vol. 3, Sebastopol, United States: O’Reilly Media, 2005.
json = add.create((String)
[9] John O’Donahue. “Introduction to JDBC” u Java Database
request.getSession().getAttribute("imeSP"),
Programming Bible, vol. 1, , New York, United States: John Wiley and
imenaKolona, parametri);
Sons, 2005.
[10] S.Brown, S.Dalton i drugi. “Data Access Options for Web Applications”
I ovdje će se u slučaju da korisnik nije administrator, u u Pro JSP 2, vol. 4, New York, United States: Apress, 2005.
json podatak koji se vraća JSP stranici upisati informacija o [11] Marty Hall i Larry Brown. “Servlet basics” u Core Servlets and
nepostojanju dozvole za izvršenje INSERT operacije. JavaServer Pages, vol. 2, Santa Clara, United States: Prentice Hall,
2003.
VII. ZAKLJUČAK
ABSTRACT
Danas se može reći da se JSP tehnologija manje koristi u
odnosu na druge Web tehnologije, a jedan od razloga je i At the beginning of the paper will be presented the World
način realizacije aplikacije koja nameće upotrebu MVC Wide Web and client-server architecture, which is the most
arhitekture. Osnovni cilj aplikacije je bio da se prikaže, kako common architecture in Web applications. Based on this
se razdvajanjem na dijelove sa definisanim zadacima architecture, it is made distribution of Web technologies that
pojednostavljuje izrada Web aplikacije. are executed on the client and on the server side. This paper
U radu je pažnja posvećena realizaciji dijelova MVC will address the JSP technology as one of the technologies that
arhitekture u JSP tehnologiji u Web aplikaciji za alumni bazu. are executed on the server side. After that will be discussed the
Kada je riječ o modelu, prikazano je kako se, primjenom DAO MVC architecture and implementation of this architecture in
the JSP, i.e. how is made the division on model (using the
šablona, realizuju tzv. JavaBeans klase, tj. klasične Java klase
classic Java classes), controller (using servlets) and view (using
zadužene za povezivanje sa bazom podataka i obavljanje
standard JSP pages). The paper will give examples of practical
CRUD operacija nad podacima u bazi. Pošto se Web realization of Web application for alumni database of the
aplikacija povezuje sa udaljenom bazom podataka, u ovom university.
dijelu prikazan je i način povezivanja aplikacije i baze
upotrebom JDBC driver-a. U dijelu za kontrolere, IMPLEMENTATION OF MVC ARCHITECTURE IN
predstavljeni su servleti i njihove dvije najznačajnije metode JSP TECHNOLOGY
doPost() i doGet() koje pružaju servlet-ima mogućnost da Jelena Ćosović, Miljan Radojičić
usaglase rad svih dijelova MVC arhitekture. JSP stranice su

- 1249 -

You might also like