Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
OTVORENO RA^UNARSTVO MVC, JSP, JAVABEANS
MARIO @AGAR
Otvoreno računarstvo
Otvoreno računarstvo
Mario Žagar
o Tehnologije za izradu aplikacija Weba (nastavak)
o Aplikacije iz svijeta Jave EEo Model-View-Controller (MVC) o JavaServer Pages (JSP)o JavaBeans
Model-View-Controller (MVC)
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba4
Uzorci dizajna (design patterns)o Uzorci dizajna (design patterns) pripadaju u skupinu
arhitekturalnih uzorakao Arhitekturalni uzorci su programski predlošci – koncepti
koji predočavaju dobro-poznata rješenja arhitekturalnih problema u programskom inženjerstvu
o Opisuju elemente i njihove relacije te ograničenja korištenja
o Uzorak dizajna nije arhitektura već koncepto Primjeri najbolje prakse kako treba graditi arhitekturu
o Isti uzorak dizajna se može implementirati u nizu raznih arhitektura koje ispoljavaju iste karakteristikeo Definirani kao “striktno opisani i široko dostupni”
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba5
Model-View-Controller uzorak dizajnao Izolacija poslovne logike od korisničkog sučelja
o Razdvajanje korisničke interakcija, prezentacije podataka, poslovne logike i pristupa podacima
o Smanjenje međuzavisnosti slojeva aplikacijeo Jednostavnije promjene vizualnog dizajna aplikacije, ali i
poslovnih pravila, bez utjecaja promjene jednog na doradu drugog
o Povećanje mogućnosti ponovnog korištenja dijelova aplikacije
o Jednostavnije dorade novih funkcionalnostio Smanjenje ponavljanja dorada prilikom promjena
o Nema copy-paste, jer je kôd na jednom mjestu
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba6
MVC uzorak dizajnao MVC dijelovi:
o Model – predstavlja poslovnu logiku i podatkeo Pogled (View) – predstavlja korisničko sučelje
o Može postojati više korisničkih sučeljao Kontroler (Controller) – komunikacija modela i pogleda
o Povezuje korisničko sučelje i poslovnu logikuo MVC – konkretne koristi:
o Ponovno korištenje kôda – poslovna logika uvijek na jednom mjestu
o Kraće vrijeme programiranjao Paralelni razvoj (timski rad)o Moguće velike promjene jednog sloja (bilo kojeg) bez
utjecaja na druge
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba7
MVC – prikaz
o Više na: http://java.sun.com/blueprints/patterns/MVC-detailed.html
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba8
MVC – proširenje prikazao Uz 3 osnovna MVC sloja, dodan četvrti sloj
o sloj postojanosti (persistence)o ostvaruje se najčešće bazom podataka
o U Java EE arhitekturio Pogled i kontroler: JavaServer Pages (JSP) i Servleto Model: JavaBean i Enterprise JavaBean (EJB)o Postojanost: pohrana podataka (relacijska baza
podataka i sl.)
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba9
MVC – primjena na Java EE
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba10
Sadržaj dinamičke Web straniceo Web stranica (HTML kôd) se generira iz:
o Statičkog, ne-personaliziranog sadržaja – uvijek istio Dinamičkog – ovisnog o trenutnom stanju aplikacije
o Osnovni izgled stranice - najčešće potpuno statičan:o Razmještaj (layout)o Dizajn – CSSo Stalni grafički elementi – slike i sl.
o Sadržaj stranice - dinamičan:o Tekst, podacio Moguće korištenje XML + XSL
Java Server Pages(JSP)
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba12
JavaServer Pages (JSP) - idejao Miješanje statičkog HTML kôda s dinamički
generiranim HTML kôdom pomoću oznakao Statički kôd je čisti HTML ili XMLo Dinamički kôd se generira skriptnim jezikom
o Dozvoljava uporabu skriptnog jezika na poslužiteljskoj strani (server-side scripting)
o JSP datoteka (.jsp) posljedično sadrži:o HTML ili XML oznakeo JSP sintaksu
o JSP specifikacijao Prvo izdanje 1999.g.o Aktualna inačica JavaServer Pages 2.1
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba13
JSP – sintaksao Sadrži:
o Direktiveo naredbe JSP stroju ili prevodiocu
o Skriptao Deklaracije – dodatne metode i varijable kreirane u JSP
Servletuo Skriptleti – ugrađeni Java kôdo Izrazi – Java kôd koji rezultira znakovnim nizom (String)
o Alternativa: JSP Expression Languages (JSP EL)o Danas: unified expression language (unified EL)
o Akcijeo Standardne: korištenje beanova, tok procesao Dodatne korisničke akcije
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba14
Razlike JSP – Servleto JSP se koriste za:
o prikaz sadržaja generiranog Web aplikacijomo određivanje vrste procesiranjao validaciju ulaznih podatakao rad s poslovnim objektima za pristup podacima i izvođenje
procesao kontrolu toka Web aplikacije
o JSP i Servleti sadržavaju niz istih značajkio JSP se zapravo (neprimjetno) prevode u Servlete
o JSP ograničenje – samo za tekstualne podatkeo Servleti se i dalje koriste kao sučelje prema aplikacijama,
appletima, kao i za binarne podatkeo Primjer: proizvesti i isporučiti PDF datoteku može samo Servlet
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba15
JSP – prednosti o Odvajanje statičkog i dinamičkog sadržaja
o Logika za generiranje dinamičkog sadržaja odvaja se u vanjske JavaBeans komponente
o Promjena prezentacijskog predloška JSP stranice uzrokuje automatsko prevođenje i ponovno učitavanje stranice
o Jednostavno prenošenje između raznih platformio Java EE standardiziranost
o Preporuka za prezentaciju dinamičkih podataka izgrađena na (poznatoj) Servlet tehnologiji
o Ponovno korištenje komponenata i biblioteka oznakao Podrška vrhunskim dizajnerskim/programerskim alatima
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba16
JSP – izvršni modelo JSP stranice se izvršavaju u Web sadržniku
o Sadržnik preusmjera zahtjeve klijenta prema odgovarajućoj JSP stranici i vraća odgovora klijentu
o JSP stranice se prevode u Servlete i izvršavajuo Proces zvan PageCompilationo JSP izvorna stranica – dizajnerski model pisan oznakamao Prevedeni JSP Servlet (Servlet nastao iz JSP) – izvršni
modelo Koraci izvođenja:
o Parsiranje JSP izvorne straniceo Generiranje izvršnog kôda JSP Servletao Prevođenje JSP Servleta, učitavanje i izvršavanje
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba17
JSP – životni cikluso JSP se prevodi u Servleto JSP Servlet ima isti životni
ciklus kao i Servleto Pri prvom zahtjevu za
stranicom se kreira novi JSP Servlet
o Pri svakom sljedećem zahtjevu se koristi postojeća instanca JSP Servletao Osim ako se JSP izmijenio
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba18
JSP Servlet – primjer o JSP izvorna stranica
<%@ page import="hr.fer.or" %>
<html><head> <%! int temp = 1;%> <% int temp2 = 2; %> </head> <body> <h1><%= toString( "tekst" + 1 ) %></h1> </body></head>
o JSP Servletpackage jsp_servlet; import ... import hr.fer.or; class _myservlet implements javax.servlet.Servlet,
javax.servlet.jsp.HttpJspPage { int temp = 1; ... public void _jspService( javax.servlet.http.HttpServletRequest
request, javax.servlet.http.HttpServletResponse response ) throws javax.servlet.ServletException, java.io.IOException { ... javax.servlet.jsp.JspWriter out = pageContext.getOut(); try { out.print( "<html><head>\r\n" ); ... int temp2 = 2; ... out.print( "</head>\r\n" ); out.print( "<body>\r\n" ); out.print( "<h1>" ); out.print( toString( "tekst" + 1 ) ); out.print( "</h1>\r\n" ); ...
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba19
JSP – vidljivost atributao Pristup atributima – 4 razine vidljivosti:
o Stranica (page) – samo trenutna JSP stranicao Gubi se kod povratkao Gubi se prilikom prosljeđivanja na drugu stranicuo Koriste se set/getAttribute metode
o Poziv (request) – trenutni HttpServletRequest objekto Ostaje vidljiv kod prosljeđivanja ili uvlačenja straniceo Gubi se kod povratnog odgovora
o Sjednica (session) – trenutni HttpSession objekto Vidljivost za vrijeme trajanja sjednice
o Aplikacija (application) – trenutni ServletContext objekto Vidljivost kroz cijelu aplikaciju
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba20
JSP – dobre strane i mogući problemio Dobre strane:
o Uporaba dizajnerskih vizualnih alata za dizajn straniceo Uporaba programerskih alata za programsku logikuo Izrada sadržaja u skladu s MVC uzorkom dizajnao Nema miješanja Java kôda i HTML kôda
o Mogući problemi:o N(en)amjerno stavljanje programske logike u JSP stranicuo Moguće dodati mnogo Java kôda u JSP stranicu koji služi
za promjenu izgleda stranice (straničenje, filtari, sort)o JSP stranice više ne služe samo za prezentaciju (Pogled)
o Rješenje: o Korištenje drugih tehnologija i korisničkih oznaka
o npr. JavaBeans i Custom Tags
JavaBeans
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba22
Komponentna arhitekturao Definicija:
o A Java Bean is a reusable software component that can be visually manipulated in builder tools. To understand the precise meaning of this definition of a Bean, clarification is required for the following terms: o Software component o Builder Toolo Visual manipulation
P ro p e rtyC h a n g e E ve n t
g e tP ro p e rtyN a m e ()g e tN e w Va lu e ( )g e t Old Va lu e ()
(from b eans)
S o m e B e a n
P ro p e r tyC h a ng e L is t e n er
p ro p e rtyC h a n g e ( )
(from beans)
< < In te r fa c e > >P ro p e rtyC h a n g e S u p p o r t
a d d P ro p e r ty C h a ng e L i s t e n er ()re m o ve P ro p e rtyC h a n g e L is te n e r( )f ir e P ro p e rt yC ha n g e ()
(from beans)
in h e ri ts fro m
n o ti fie s
S o m e O b je c tre g is te r s to
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba23
Komponentna arhitekturao Komponenta:
o Samostalni (self-contained), ponovno iskoristiv (reusable) dio programske podrške koja se može ugraditi i koristiti u složenim modulima
o Pakirani programski objekt s normiranim (poznatim) sučeljem
o Komponentna arhitektura:o Skup specifikacija o detaljima suradnje komponenata
o Međusobne i s drugim programima
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba24
JavaBeanso JavaBeans označava:
o Specifikaciju i implementaciju programskog komponentnog modela
o Naziv tehnologijeo JavaBean (ili bean)
o Referenca na objekt izgrađen po JavaBeans specifikacijio Napisani (opet) u Javi – platformska neovisnost
o JavaBeans arhitekturao Temeljena na komponentnom modeluo Omogućava programerima izradnju komponenata
o JavaBeanovio Korištenje u aplikacijama, Servletima, appletima...
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba25
JavaBean – konceptio Alati za izgradnju otkrivaju značajke Beana:
o Svojstva, metode, događajeo Metoda introspekcije
o Istraživanje pridržavanjem određenih pravila (uzorci dizajna)o Eksplicitnim uvidom u značajke preko informacija u BeanInfo
o Svojstva su karakteristike događaja i ponašanjao Mogu se mijenjati i dorađivati u trenutku dizajna:
o Pomoću uređivača svojstava (properties editor)o Korištenjem dorađivača (bean customizer)
o Beanovi međusobno komuniciraju događajimao Osluškivač (listener) Bean i izvorišni (source) Beana
o Alati istražuju Bean i uočavaju koje događaje Bean može poslati i primitio Postojanost omogućava pohranu stanja Beana
o Pohranjuje se i restaurira se – serijalizacija (Serialization)o Metode Beanova - standardne javne Java metode
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba26
JavaBean – karakteristikeo JavaBean je (samo) instanca (objekt) Java razredao Sadrži skup javnih svojstava:
o Svojstva (atribute, varijable), metode, događajeo Tipovi:
o Vizualni:o Grafički (GUI) – npr. graf, animacija, ...
o Nevizualni:o Poslovna logika – npr. sadržaj košarice u Internet trgovinio Programski kod – npr. zbroj prometa, provjera pravopisao Podaci (baza) – npr. dohvat ranga na OR
o JavaBeans APIo API opisuje komponentni model za programski jezik
o Specifikacija – JavaBeans komponentnu arhitekturu
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba27
JavaBean – značajke i APIo Značajke Beanova:
o Dinamički, mogu se mijenjati i prilagođavatio Vizualni alati (npr. NetBeans)mogu mijenjati Beano Na Properties karticama se podešavaju značajke Beana
o Niz promjenjivih svojstavao Vizualna manipulacija (Drag'n'Drop), promjena izgledao Promjena izgleda i ponašanjao Definiranje interakcije s drugim komponentama
o Sintaksa i konvencije imenovanja: o Konstruktor bez argumenatao Svojstva (varijable) dostupne samo putem pristupnih
metodao Korištenje getter i setter metoda
o Implementira sučelje Serializable
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba28
JavaBean – tipovi značajkio Tipovi značajki:
o Jednostavne – jedna jednostavna značajkao Logičke – istinosna vrijednost (istina/laž)
o Metode:o public boolean isNaziv()o public void setNaziv( boolean vrijednost )o Ne sadrže getNaziv metodu
o Indeksirane – nizovi vrijednostio Korisne kad treba pohraniti niz značajki istog tipao Kao nizovi u Javi, cjelobrojni indeksio Metode:
o public String getNazivi(int indeks)o public void setNazivi(int indeks, String naziv)o public String[] getNazivi()o public void setNazivi(String[] nazivi)
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba29
JavaBean i MVCo MVC:
o Model – jedan, poslovna logika, rješava problemo JavaBean
o Pogled – višestruk, "pogled" na model, prezentacija, interakcija s korisnikomo Web stranica – Servlet, JSPo Klijent – GUI JavaBean
o Kontroler – jedan ili više, obrađuje zahtjeve i parametreo Ideja: enkapsulacija dinamičkog sadržaja u JavaBeano JavaBeanovi se održavaju neovisno od straniceo JSP stranice pristupaju JavaBeanu putem
<jsp:useBean> oznake
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba30
JavaBean – primjer – student public class Student implements java.io.Serializable { private String firstName; private String lastName; private boolean active; public Student() { }
public String getFirstName() { return this.firstName; } public void setFirstName(String name) { this.firstName = name; } public String getLastName() { return this.lastName; } public void setLastName(String name) { this.lastName = name; }
public boolean isActive() { return this.active; } public void setActive(boolean active) { this.active = active; }}
public class TestBean { public static void main(String[] args) { Student student = new Student(); student.setFirstName("Ivo"); student.setLastName("Ivić"); student.setActive(true); System.out.print(student.getFirstName() + " je "); System.out.println(student.isActive() ? "neaktivan"
: "aktivan"); }}
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba31
JavaBean - koristio Zašto koristiti JavaBeanove?
o Programiranje korištenjem vizualnih programskih alatao Pouzdan model učahurivanjao Standardiziran u Java EE Connector Architecture (JCA)
Napomena: Ne miješati JavaBean s Enterprise JavaBeans (EJB)!
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba32
Servlet-JSP-JavaBean cjelina1) Klijent šalje HTTP Request Web poslužitelju koji ga prosljeđuje aplikacijskom
poslužiteljuPoziva se service() metoda odgovarajućeg Servleta
2) Servlet stvara / pokreće odgovarajuće JavaBeans komponente i prosljeđuje poziv odgovarajućoj JSP stranici.
JavaBeans komponente mogu pristupati drugim sustavima ili bazi podataka i posčkedično sadrže podatke za izradu dinamičkog sadržaja u JSP stranici
12
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba33
Servlet-JSP-JavaBean cjelina3) Servlet prosljeđuje poziv JSP stranici.
Pri prvom pozivu JSP stranica se prevodi, inače nePoziva se service() metoda prevedenog JSP Servleta
4) JSP Servlet čita sadržaj JavaBean komponente5) JSP Servlet izrađuje sadržaj Web stranice te ga prosljeđuje Web
poslužitelju koji ga prosljeđuje Web pregledniku (klijentu)
12
34
5
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba
Pitanja ?