Upload
phungkiet
View
226
Download
3
Embed Size (px)
Citation preview
OTVORENO RA^UNARSTVOo TEHNOLOGIJE WEBA I APLIKACIJSKI POSLU@ITELJI
MARIO @AGAR
Otvoreno računarstvo
Otvoreno računarstvoo Tehnologije Weba i aplikacijski poslužitelji
Mario Žagar
Tehnologije Weba i aplikacijski poslužiteljio Skalabilni svijet Jave i aplikacijski poslužiteljio Tehnologije za izradu aplikacija Weba
o Servleto Model-View-Controller (MVC)o JavaServer Pages (JSP)o JavaBeans
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba4
Skalabilnosto Može li se ista programska platorma primijenit na
razne uređaje i razne razine kompleksnost?o mikro aplikacije - na pametnim kartcama (smart card)
o npr. aplikacija za digitalno potpisivanje podatakao male aplikacije - na pametnim telefonima (smartphone)
o npr. aplikacija za pohranu lozinki ili igricao aplikacije srednje kompleksnost na ugrađenim
računalima ili specijaliziranim uređajimao npr. aplikacija na igraćoj konzoli ili dlanovniku
o samostalne klijentske aplikacije (ili klijent-poslužitelj)o npr. GUI aplikacija s bazom podataka
o aplikacije na poslužiteljima (višestrukim)o npr. trgovina na Webu ili Internet bankarstvo
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba5
Skalabilnost #2o Naravno da se ista programska platorma može
primijenit na razne uređaje i razne razine kompleksnost o načelno, razlika je samo u količini funkcionalnost
o Primjer – “svijet Jave”
o “Inačice” platforme:o Java MEo Java SEo Java EE
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba6
Java ME – Java SEo Java ME (Micro Editon)
o robusna, mala, prilagodljiva platorma za aplikacije na mobilnim i ugrađenim uređajima o npr. mobilni telefon, PDA, TV set-top box …
o naglasak na prenosivost, mrežnu povezivost i prikaz na raznorodnim uređajima (zaslonima)
o Java SE (Standard Editon)o izvedbena platorma za razvoj Java aplikacijao namjena - izrada samostalnih (standalone) aplikacijao sadrži sučelje za pristup bazama podataka, sigurnosne i
mrežne tehnologije, te tehnologiju za izgradnju korisničkih sučelja
o osnova platorme Java
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba7
Java SE - Java EEo Java EE (Enterprise Editon)
o “nadogradnja” Java SE – sagrađena na istoj osnovio izvedbena platorma za razvoj, primjenu i upravljanje
višeslojnim poslužiteljskim aplikacijama na razini enterprise
o sadrži: o raspodijeljenu komunikacijuo upravljanje procesimao skalabilnu arhitekturuo sigurnosne mehanizme o upravljanje transakcijama
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba8
Mala promjena naziva o Nekad se zvalo: J2SE, J2EE i J2MEo Java Platorm, Enterprise Editon
o prošlost: Java 2 Platorm Enterprise Editon ili J2EE je zapravo bila “Java EE v1.2”
o u međuvremenu izašle nove inačice: J2EE 1.3, J2EE 1.4 i Java EE 5 (Java Platorm, Enterprise Editon 5)
o danas: Java EE 6 ili Java Platorm, Enterprise Editon 6o Java Platorm, Standard Editon
o prošlost : prvo J2SE 1.2, J2SE 1.3.1 i J2SE 1.4.2 a onda J2SE 5.0 (to je zapravo “J2SE 1.5”)
o danas: Java SE 6 ili Java Platorm, Standard Editon 6o uskoro: Java SE 7 ili Java Platorm, Standard Editon 7
o Danas se sve zove: Java SE, Java EE i Java ME
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba9
Java SE – dijelovi standardnog API-jao Spoj na baze podataka i upravljanje pohranom podataka
o JDBC i ekstenzije za upravljanje podacima (javax.sql)o Imenici podataka – imenovanje resursa (za dohvat)
o Java Naming and Directory Interface (JNDI)o Usluge za manipulaciju XML-om (DOM, SAX)
o Java API for XML Parsing (JAXP)o Usluge za sigurni pristup podacima i obradi
o Java Authentication and Authorization Service (JAAS)o Udaljeni pristup komponentama
o Remote Method Invocation Internet Inter-ORB Protocol (RMI-IIOP)
o Jezik za opis sučeljao Java Interface Definition Language (Java IDL)
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba10
Pregled Java SE platorme
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba11
Specifikacija Java Enterprise Editiono Dijelovi specifikacije:
o Java EE Platormo platorma koja definira komponente, usluge i komunikaciju
o Java EE Compatbility Test Suite (CTS)o skup testova (~ 5000) koji osiguravaju kompatbilnost
aplikacije s normom Java EE (po specifikaciji)o Java EE Reference Implementaton
o izrada prototpova aplikacija i definicija operacija platormeo Java EE Blueprints
o najbolja praksa izrade aplikacija
o Specifikaciju osmislili i podržavaju “najveći igrači”o Oracle (Sun, BEA), IBM ...
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba12
Java Community Processo Java Community Process (JCP) - jcp.org
o osnovan 1998. g.o otvoreni proces raznih sudionika
o razvoj i revizija specifikacija Java tehnologija, referentnih implementacija i skupina testova
o promiče evoluciju Javine platorme o u suradnji s internacionalnom razvojnom zajednicom za Javu
o Članstvo:o više od 1200 članovao potpis Java Specification Agreement (JSPA)
o između Sun-a i pojedinca, tvrtke ili organizacijeo godišnje $5000 za tvrtke, $2000 za edukacijske, državne
i neprofitne insttucije i $0 za pojedince
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba13
JCP – sudjelovanje i JSRo Sudjelovanje u JCP uključuje:
o predstavljanje JSR i izražavanje mišljenja o JSRo sudjelovanje u razvojnim i nadglednim grupacijama
o JSR (Java Specification Request)o zahtjev za specifikacijom temeljenom na tehnologijama
Javeo dokument koji se predstavlja PMO-u
o (Program Management Office kod Sun-a) kao prijedlog razvoja nove specifikacije (ili revizije postojeće)
o trenutno više od 90 tehnoloških specifikacija za Javuo uključuju nove inačice Java ME, Java SE i Java EE
o popis svih JSR na http://jcp.org/en/jsr/all
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba14
Java EE kao norma o Java EE 6 je definirana specifikacijom JSR 316
o smatra se neformalnom, de facto normomo ne postoji kao ISO ili ECMA norma
o korisnik Java EE licence (licensee) potpisuje komercijalnu distribucijsku licencuo posjeduje testove kompatbilnost i obvezao se na
kompatbilnost, ali njegovi produkt (još) ne moraju bit kompatbilni
o Java Compatble, Enterprise Editon oznakao proizvodi koji su prošli skupinu testova (CTS - Compatbility
Test Suite) smiju iskazat oznakuo aplikacije kompatbilne s normom Java EE moraju se moći
izvodit na bilo kojem Java EE kompatbilnom poslužitelju http://java.sun.com/javaee/overview/faq/javaee_faq.jsp
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba15
Korist od Java EEo Normiranost
o mnogo normiranih komponenata, usluga i alatao prenosivost aplikacija na druge Java EE aplikacijske poslužitelje
o Skalabilnosto učinkovitost i dostupnost – skalabilnost
o Standardne uslugeo već ugrađene (podržane) kod Java EE aplikacijskih poslužiteljao transakcije, sigurnost, postojanost
o Komponentni modelo razdvajanje razvojnih odgovornosto ponovno korištenje programskog kodao dijeljenje kôda između aplikacija
o Sposobnost zajedničkog radao standardni komunikacijski protokoli
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba16
Aplikacijski poslužiteljo Programska platorma za izvođenje poslužiteljskih
aplikacijao analogija - kao operacijski sustav na osobnom računalu
o Svrhao programska osnova za kompleksne aplikacije ili cijele
sustaveo isporuka aplikacija ili dijelova aplikacija klijentmao sadrži (većinu) poslovne logike i upravlja pristupom
podacima (bazi podataka) – centralizacijao Najčešće korišteni protokol HTTP (Internet)
o ne miješat s poslužiteljima Weba, jer oni “samo” isporučuju statčki sadržaj
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba17
Aplikacijski poslužitelj #2o Poslužitelj Weba obično postoji dodatno uz
aplikacijski poslužitelj i služi za: o isporuku statčnih sadržaja
o prema klijentu (npr. dizajn stranica, slike ...)o prosljeđivanje dinamičkih sadržaja
o primljenih od aplikacijskog poslužitelja prema klijentuo Neke najčešće uporabe aplikacijskih poslužitelja:
o aplikacije Webao upravljanje sadržajemo elektroničko poslovanje (e-business)o integracijska infrastruktura i povezivanja (interfacing) s
drugim aplikacijama/sustavimao posredničke tehnologije i međuprogrami (middleware)
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba18
Poznatji aplikacijski poslužiteljio Komercijalni Java EE aplikacijski poslužitelji:
o WebSphere Applicaton Server (IBM)o Oracle Applicaton Server (Oracle)o WebLogic Server (BEA, kupio Oracle)o SAP Web Applicaton Server (SAP)o JRun (Adobe)
o Open-source Java EE aplikacijski poslužitelji:o JBoss (Red Hat)o WebSphere Applicaton Server Community Editon (IBM)o Glassfish Applicaton Server (Oracle/Sun Microsystems)o Apache Geronimo (Apache Software Foundaton)
o Ostali aplikacijski poslužitelji (koji nisu temeljeni na Javi):o .NET framework (Microsoft)o ...
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba19
Aplikacijski poslužitelj - prednosto Prednost:
o korištenje niza postojećih funkcionalnost koje su već ugrađene na samom aplikacijskom poslužitelju
o aplikacije se grade od postojećih (ponovno korištenje) i novih funkcionalnih (programskih) blokova
o integritet podataka i programskog kôda - jedno mjestoo centralizacija poslovne logike na poslužiteljuo praktčki nepotrebna instalacija na klijentuo praktčki nepotrebna administracija klijentao centralizirana konfiguracijao centralizirane promjeneo sigurnost pristupa i promjena podatakao povećana učinkovitost (cluster, high-availability)
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba20
Java EE – prethodna specifikacijao Java Platorm, Enterprise Editon 5 Specificaton
o Java EE 5 Specificaton – JSR 244o dovršena 11.05.2006. o ekspertni tm:
o Bill Shannon - vođa (Sun Microsystems) + niz pojedinacao Niz tvrtki: BEA, Borland, E.piphany, Hewlett-Packard, IBM,
Inria, Ironfare, Novell, Oracle, Pramat, Red Hat, SAP, SeeBeyond, Sun Microsystems, Sybase, Tmax Soft, Trifork
o prethodne specifikacije: o J2EE 1.2 (prosinac 1999.) - razvijena od Sun-ao J2EE 1.3 (rujan 2001.) i J2EE 1.4 (studeni 2003.) - razvijene pod JCP
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba21
Java EE – aktualna specifikacijao Java Platorm, Enterprise Editon 6 Specificaton
o Java EE 5 Specificaton – JSR 316o dovršena 10.12.2009. o ekspertni tm:
o Bill Shannon i Roberto Chinnici (Sun Microsystems) + niz pojedinaca i insitucija (npr. Peking University)
o Niz tvrtki: BEA, Ericsson, IBM, NCsoft, Oracle, OW2, Pramat, RedHat, SAP SpringSource, Sun Microsystems, Sybase, TmaxSoft, TongTech
o Dio navedenih aplikacijskih poslužitelja je Java EE 6 ili Java EE 5 kompatbilano posjeduje Java Compatble, Enterprise Editon oznakuo prošli su skupinu testova (CTS)
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba22
Java EE aplikacijski poslužiteljio Trenutno kompatbilne implementacije Java EE 6:
o GlassFish Enterprise Server v3o TmaxSof TMAX JEUS 7
o Kompatbilne implementacije Java EE 5:o Apache Geronimoo Oracle (BEA) WebLogic Server 10g R3o IBM WebSphere Applicaton Server Community Editon (WASCE) 2.0o IBM WebSphere Applicaton Server v7o JBoss Applicaton Server 5.0o Kingdee Apusic Applicaton Server v5.0o NEC WebOTX 8.1o Oracle Applicaton Server 11o OW2 JonAS 5.1 o SAP NetWeaver 7.1o Sun Glassfish Enterprise Server Platorm 9.1o TmaxSof JEUS 6o TongTech TongWeb Applicaton Server 5.0 o GlassFish Applicaton Server v2
http://java.sun.com/javaee/overview/compatbility.jsp
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba23
Java EE – komponente o Applet
o komponente s grafičkim korisničkim sučeljem najčešće izvođene unutar Web preglednika
o izvode se u JVM plug-inu preglednika Webao Klijentske aplikacije
o aplikacije koje se izvode na klijentma i mogu pristupat komponentama na poslužiteljima
o izvode se u JVM na klijentu – JREo Komponente Weba
o Servlet i JavaServer Pageso izvode se u JVM na Java EE aplikacijskom poslužitelju
o Enterprise JavaBeanso raspodijeljene transakcijske komponente poslovne logike i
pristupa podacimao izvode se u JVM na Java EE aplikacijskom poslužitelju
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba24
Java EE – komponente i sadržnici o Svaka komponenta se nalazi i izvodi u nekom
sadržniku (container)o Applet sadržnik
o izvodi Applete u JVM plug-inu preglednika Webao Sadržnik klijentske aplikacije
o izvodi klijentske aplikacije (GUI klijent) u JVM (JRE) na klijentuo Sadržnik komponenata Weba
o izvodi Servlete i JSP-ove u JVM na Java EE aplikacijskom poslužitelju
o Sadržnik Enterprise JavaBeanovao izvodi EJB komponente u JVM na Java EE aplikacijskom
poslužitelju
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba25
Java EE – komponente i sadržnici #2
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba26
Java EE dijelovi (paket)o Java EE platormao Tehnologije aplikacija Weba
o Java Servleto JavaServer Pages (JSP) i JSP Standard Tag Library (JSTL)o JavaServer Faces (JSF)
o Tehnologije upravljanja i sigurnosto Java EE Applicaton Deploymento Java EE Management
o Tehnologije usluga Weba (Web Services)o Enterprise Web Services o Java API for XML-Based Web Services (JAX-WS) o Java API for XML-Based RPC (JAX-RPC)o SOAP with Attachments API for Java (SAAJ)o JAXB, StAX ...
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba27
Java EE dijelovi (paket) #2o Tehnologije za enterprise aplikacije
o Enterprise JavaBeans (EJB)o Java Message Service (JMS)o Java Transacton API (JTA)o Common Annotatonso J2EE Connector Architecture (JCA)o JavaBeans Actvaton Framework (JAF)o JavaMailo Java Persistence API i Java Data Objects (JDO)
o Tehnologije za upravljanje i sigurnosto J2EE Applicaton Deploymento J2EE Managemento Java Authorizaton Contract for Containers
Tehnologije Weba i aplikacijski poslužiteljio Skalabilni svijet Jave i aplikacijski poslužiteljio Tehnologije za izradu aplikacija Weba
o Servleto Model-View-Controller (MVC)o JavaServer Pages (JSP)o JavaBeans
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba29
Odakle krenut u sve ovo??? o Mi ćemo krenut od
o tehnologija za izradu aplikacija Weba o Tehnologije za izradu aplikacija Weba mogu služit
o za izradu cijelih aplikacijao u prezentacijskom sloju se može pristupit bazi
podataka - ali nisu tako zamišljene!o Tehnologije za izradu aplikacija Weba služe
o za izradu prezentacijskog sloja i sloja interakcije s korisnikom putem korisničkog sučelja
o Dodatni razlogo trebaju nam za 5. lab. vježbu
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba30
Malo ponavljanjao Do sada smo naučili što je/su:
o stranice Weba u jeziku HTML i sjedišta Webao URL, resurs, HTTP protokolo preglednik Webao poslužitelj Webao statčke stranice Webao dinamičke stranice Weba (npr. PHP, CGI)
o A sada ćemo pogledat i kako to izgleda kod kompleksnih višeslojnih aplikacija
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba31
Malo ponavljanja – statčke straniceo Preglednik Weba (klijent)
o zatraži određenu stranicu Webao Protokol HTTP
o vrata (port) 80o Pitanje – odgovor
o HTTP Request – HTTP Responseo Poslužitelj Weba
o za traženi URL učita (s diska) stranicu datotečnog sustava
o pošalje stranicu pregledniku Weba
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba32
Dinamičke straniceo Početak komunikacije od preglednika Weba – isto Na poslužitelju:
o dodatni dinamički modul Weba o npr. Servlet engine ili Servlet container ili Web container
o odluka: je li zatražena dinamička ili statčka stranica?o ako statčka – isto kao i prijeo ako dinamička – poziv dinamičkom modulu Webao odluke su konfigurabilne – konfiguracijska datoteka
o “Posao” dinamičkog modula Webao generiranje dinamičke straniceo prosljeđivanje poslužitelju Weba
o Poslužitelj Weba vraća generiranu dinamičku stranicu pregledniku Weba – isto kao i prije
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba33
Dinamičke stranice #2
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba34
Što su Servlet?o Razredi u jeziku Java
o odnosno objekt, koji se nalaze na poslužiteljuo Odgovaraju na zahtjev (Request) odgovorom
(Response) korištenjem protokola HTTPo Alternatva “zastarjelim” programima CGIo Ovisno o ulaznim parametrima koje je poslao
preglednik Webao može se generirat različita stranicao povratna informacija je dinamički generirana HTML
stranicao stranica se stvara unutar programskog koda
o Java Servlet API – sučelje za rad sa Servletma
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba35
Servlet – definicija o Standardna poslužiteljska Java EE komponenta
o “A servlet is a Web component, managed by a container, that generates dynamic content. Servlets are small, platform-independent Java classes compiled to an architecture-neutral bytecode that can be loaded dynamically into and run by a Web server”
o Servlet sadrže poslovnu logiku koja odgovara na HTTP Request – odgovara na GET i POST metode
o Pokreće i održava ih poslužitelj – zapravo sadržnik (container) komponenata Weba poslužitelja
Napomena: sadržnik Servleta ili sadržnik komponenata Weba – oboje predstavlja dinamički modul Weba “spojen” na Web poslužitelj, odnosno dio aplikacijskog poslužitelja koji služi za upravljanje dinamičkim sadržajima (Servlet i JSP-ovi).
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba36
Servlet – koraci komunikacijeo Preglednik poziva Servlet na poslužitelju – URL
o ime Servleta je dio URL-ao Poslužitelj Weba prima zahtjev
o zaključuje da se radi o Servletuo Poslužitelj Weba prosljeđuje poziv dinamičkom
modulu Weba (sadržniku Web komponenata)o Pronalazi se postojeća ili se stvara nova instanca
(objekt) razreda Servlet istog imenao Poziva se metoda objekta Servletao Servlet generira HTML kôd
o i vraća ga poslužitelju Webao Poslužitelj Weba prosljeđuje HTML kôd pregledniku
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba37
Servlet - izgradnjao Izgradnja razreda koji nasljeđuje
javax.servlet.http.HttpServleto Izgradnja (nadjačanih) doGet() i/ili doPost() metoda
o procesiranje ulaznih parametara iz dobivenog HttpServletRequest objekta
o izgradnja odgovarajućeg poslovnog procesa o izvođenje metoda poslovne logikeo izgradnja HTML kôda
o postavljanje odgovarajućih vrijednost na HttpServletResponse objekt
o prosljeđivanje (generiranog) HTML kôda PrintWriter objektu
o hvatanje iznimaka (IOExcepton, ServletExcepton)
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba38
Servlet – primjer 1import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.ServletExcepton;import java.io.IOExcepton;import java.io.PrintWriter;
public class SearchServlet extends HttpServlet {public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletExcepton, IOExcepton {
String browser = request.getHeader("User-Agent");response.setStatus(HttpServletResponse.SC_OK);response.setContentType("text/html");
PrintWriter out = response.getWriter();out.println("<HTML><BODY>");out.println("Koristte preglednik: " + browser + "<BR>);out.println("Uvjet pretrage: " + request.getParameter("uvjet"));out.println("</BODY></HTML>");
}}
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba39
Servlet – primjer 1 – pretraga sadržajao Pretraživanje s obrascem stranice Webao Dohvat statčke stranice s obrascem pretrage
o Request: GET search.html
o Response: HTML dokument “search.html” s podatkovnog sustava poslužitelja (diska)
o Upis uvjeta pretrage u stranicu i potvrda na gumbo Request: POST/SearchServlet
o Response: generirani HTML dokument u ovisnost o ulaznim parametrima (uvjet pretrage)
PR
EG
LE
DN
IK W
EB
A
PO
SL
UŽ
ITE
LJ
WE
BA
S D
INA
MIČ
KIM
MO
DU
LO
M W
EB
A
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba40
Servlet – primjer 1 – HTML obrazaco HTML kod za poziv servleta:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitonal//EN"><html> <head>
<ttle>Pretraga</ttle> </head> <body> <form acton="/SearchServlet" method="POST">
<h1>Pretraga</h1><strong>Upišite uvjet pretrage:</strong><input type="text" size="30" name="uvjet"><br><input type="submit" value="Traži"><br>
</form> </body></html>
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba41
Servlet – primjer 1 – komunikacijao Komunikacija:
preglednik – poslužiteljo Request: POST metoda i
URL servletao Zaglavljeo Prazna linijao Predani podaci
(argument, parametri)
o Sadržaj poziva:
POST /SearchServlet HTTP/1.0Referer: http://www.fer.hr/search.htmlConnecton: Keep-AliveUser-Agent: Mozilla/4.0Host: localhost:8080Cookie: USERID=spotAccept: image/gif, image/x-xbitmap,
image/jpeg, */*Accept-Language: hrAccept-Charset: iso-8859-2,*,ut-8Content-type: applicaton/x-www-form-
urlencodedContent-length: 50
uvjet=Java
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba42
Servlet – primjer 1 – komunikacijao Komunikacija:
poslužitelj – pregledniko Response: statusna
informacijao Zaglavljeo Prazna linijao HTML dokument
o Sadržaj:HTTP/1.1 200 okContent-Type: text/htmlSet-Cookie:
sessionid=5H2HXGYAAAAAEWQAAAAZJCI;Path=/
Cache-Control: no-cache="set-cookie,set-cookie2"
Expires: Thu, 01 Dec 1994 16:00:00 GMTSet-Cookie: USERID=spot; Expires=Fri,
08-Jun-2001 21:54:37 GMTContent-Language: hr
<HTML><BODY>Koristte preglednik: Mozilla/4.0<BR>Uvjet pretrage: Java</BODY></HTML>
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba43
Servlet – općenito o Pokazano je da svaki Servlet nasljeđuje razred HttpServlet
o ali to se odnosi samo na Servlete koji komuniciraju HTTP protokolom s okolinom
o Općenito Servlet mora samo implementrat sučelje javax.servlet.Servlet koje definira 5 metoda:o void destroy() - zove je sadržnik kada uništava Servleto ServletConfig getServletConfig() - vraća ServletConfig object,
koji sadrži određene parametre potrebne za rad Servleta o java.lang.String getServletInfo() - vraća informaciju o Servletuo void init(ServletConfig config) - zove je sadržnik prilikom
učitavanja Servletao void service(ServletRequest req, ServletResponse res) - zove
je sadržnik kako bi omogućio Servletu da odgovori na zahtjev
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba44
Servlet APIo Skup Java razreda i (sučelja) koji definiraju
standardno sučelje između poziva preglednika Weba i odgovora poslužitelja Weba
o Paket:o javax.servlet – generična podrška za Servleteo javax.servlet.http – podrška za Servlete koji
komuniciraju protokolom HTTP o ServletConfig referenca
o prosljeđuje Servletu podatke o okruženju u kojem radio predaje se prilikom inicijalizacije - u metodi init()o sadrži podatke u obliku: naziv – sadržajo sadrži ServletContext referencu
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba45
Servlet API #2o Ostale korist od postojećih Servlet razreda:
o dekodiranje ulaznih podatakao npr. ime=predavanje+o+Javi&trajanje=3+sata se dekodira u
parove naziv - sadržaj:o ime – predavanje o Javio trajanje – 3 sata
o rješava duplikate vrijednost – višestruke vrijednost
o Nasljeđivanje:o sučelje javax.servlet.Servleto apstraktni razred javax.servlet.GenericServleto apstraktni razred javax.servlet.http.HttpServlet
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba46
HttpServleto Razred HttpServlet je apstraktni razred koji se mora
naslijedit kako bi se stvorio HTTP servleto Podklasa razreda HttpServlet mora nadjačat
(override) barem jednu od sljedećih metoda:o doGet() - ako Servlet treba podržat GET metodu o doPost() - ako Servlet treba podržat POST metoduo doPut() - ako Servlet treba podržat PUT metodu o doDelete() - ako Servlet treba podržat DELETE metodu o init() i destroy()- ako Servlet upravlja resursima
prije/nakon njegovo životnog vijekao getServletInfo() - ako Servlet mora isporučit
informaciju o sebi
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba47
Servlet – neka objašnjenja o Zašto se ne nadjačava metoda service()?
o nema potrebe za nadjačavanjem service() metode, jer ona prosljeđuje HTTP zahtjeve odgovarajućim doXXX() metodama ovisno o HTTP metodi u zahtjevu (npr. doPost() za POST metodu)
o Zašto postoji metoda init(), a ne konstruktor?o povijesno, konstruktori za dinamički stvorene objekte (kakvi su
Servlet) ne mogu primat argumente, a Servletu se prosljeđuje objekt koji implementra ServletConfig sučelje i sadrži informacije o okruženju
o javax.servlet.Servlet je sučelje, pa ne može deklarirat konstruktor sa ServletConfig argumentom, već deklarira metodu init()
o Zašto postoji metoda destroy()?o kako bi Servlet objekt mogao oslobodit sve resurse koji se ne
mogu/znaju automatski očistt (garbage collection), a mogu se i zapisat sve informacije koje je potrebno sačuvat.
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba48
Životni ciklus Servletao Servlet se po potrebi učitava, instancira, ali i
uništavao pri pokretanju poslužitelja ili o kad poslužitelj zaključi da je to potrebno
o Servlet se izvršavaju u JVM sadržniku komponenata Webao sadržnik komponenata Weba (a ne programer) brine
kad će stvorit novi objekt Servlet ili uništt postojeći o Zašto uopće imamo više instanci Servleta?
o zato jer istovremeno može više korisnika pristupit aplikaciji i svaki želi da se njegov zahtjev obradi (trenutno, odnosno čim prije može)
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba49
Servlet – višekorisnički rado Smisao svake Web aplikacije je da joj može istovremeno
pristupit veći broj korisnikao aplikacije i sustavi se “grade” kako bi zadovoljile
određeni (predviđeni) broj konkurentnih korisnikao svaki korisnik pristupa svom skupu resursa koji rješavaju
određenu funkcionalnosto Ako više korisnika pristupi istom Servletu, na poslužitelju,
odnosno na sadržniku je da svakom korisniku pruži jednu instancu Servleta te može:o iskoristt postojeću, ako je objekt stvoren i nitko ga ne
koristo stvorit novi objekt, ako nema dovoljno već stvorenih
o princip višenitnog poslužitelja i bazena (pool) resursa
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba50
Servlet – konfiguracija o Aplikacijski poslužitelj
o konfigurira se kako bi znao da Servlet postoji i kako bi ga mogao pokrenut
o konfiguracija zapisana kao XML datoteka web.xml o (tzv. Web Applicaton Deployment Descriptor)
Napomena: detaljnije će bit objašnjeno nešto kasnije … za sada samo ukratko <web-app> - korijenski element ... <servlet> - deklaracija Servleta(za svaki Servlet) ... </servlet> ... <servlet-mapping> - definicija mapiranja Servleta na URL ... </servlet-mapping> ...</web-app>
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba51
Servlet – konfiguracija #2o Deklaracija Servleta sadrži:
o naziv samog Servletao naziv razreda koji implementra Servleto upute za poredak učitavanja pri pokretanju (opcionalno)o naziv Servleta za prikaz (opcionalno)o niz drugih stvari (npr. inicijalizacijski parametri) (opcionalno)
<servlet> <servlet-name>MySearchServlet</servlet-name> <servlet-class>hr.fer.or.SearchServlet</servlet-class> <load-on-startup>1</load-on-startup> <display-name>Moj Servlet</display-name> </servlet>
Napomena: ovo postoji za svaki Servlet koji se nalazi u sadržniku
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba52
Servlet – konfiguracija #3o Definicija mapiranja Servleta sadrži:
o Naziv samog Servleta o Mora bit ist naziv kao u deklaraciji!!!
o URL koji odgovara pozivom Servletao Može bit proizvoljan (uobičajeno naziv razreda)o Kada dođe zahtjev za resursom koji je označen ovim URL-
om Web sadržnik prosljeđuje zahtjev tom Servletuo ...
</servlet-mapping> <servlet-name>MySearchServlet</servlet-name> <url-pattern>/servlets/SearchServlet</url-pattern> </servlet-mapping>
Napomena: ovo postoji za svaki Servlet koji se nalazi u sadržniku
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba53
Servlet – konfiguracija – ponavljanje <web-app> - korijenski element ... <servlet> - deklaracija Servleta <servlet-name>MySearchServlet</servlet-name> <servlet-class>hr.fer.or.SearchServlet</servlet-class> <load-on-startup>1</load-on-startup> <display-name>Moj Servlet</display-name> </servlet> ... </servlet-mapping> - definicija mapiranja Servleta na URL <servlet-name>MySearchServlet</servlet-name> <url-pattern>/servlets/SearchServlet</url-pattern> </servlet-mapping> ...</web-app>
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba54
Životni ciklus Servleta – stvaranjeo Kada će sadržnik komponenata Weba stvorit
instancu Servleta?o kada mu se eksplicitno naredi da unaprijed učita Servlet
o konfiguracija u web.xml o U oznaci <load-on-startup> upisat vrijednost veću od 0
o Servlet je učitan i spreman za uporabu kada dođe zahtjevo ako ne postoji učitani Servlet, onda će se stvorit
instanca kada dođe novi zahtjev za Servletomo Prilikom učitavanja Servleta u memoriju, sadržnik
komponenata Weba pokreće inicijalizaciju
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba55
Životni ciklus Servleta – inicijalizacija o Inicijalizacija – init() metoda
o poziva se samo jednomo služi za:
o učitavanje parametarao npr. opće postavke
o inicijalno konfiguriranjeo podešavanje kako će
Servlet radito npr. kodna stranica i sl.
o veze prema resursimao postoje 2 init() metode:
o bez parametarao s ulaznim parametrom
ServletConfigo dostup do okruženja u
kojem se Servlet izvodi
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba56
Životni ciklus Servleta – zahtjevo Ako je inicijalizacija uspješna Servlet je spreman za
uslugu (available for service)o ako nije, Servlet se odstranjuje iz memorije (unload)
o Upravljanje zahtjevomo kada sadržnik komponenata Weba dobije zahtjev za
Servletom, prosljeđuje ga service() metodi Servletao kod HTTP zahtjeva nadogradnja metode service() s
metodama doXXX() ovisno o HTTP metodi zahtjeva: o doGet() - odgovara na zahtjev poslan metodom GETo doPost() - odgovara na zahtjev poslan metodom POSTo doOptons() - odgovara na zahtjev poslan metodom OPTIONSo doPut() - odgovara na zahtjev poslan metodom PUTo doDelete() - odgovara na zahtjev poslan metodom DELETE
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba57
Servlet – obrada zahtjevao Servlet prihvaća zahtjev od klijenta u metodi
doXXX()o npr. doPost()
o Svaki zahtjevo nova nit
o Metoda doXXX() obrađuje zahtjev i vraća odgovoro preuzima ulazne parametreo odrađuje “posao”o vraća rezultat u HTML obliku
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba58
Životni ciklus Servleta – dostupnosto Servlet može bit
nedostupano kada uslužuje zahtjev o kada je nespreman za
uslugu iz nekog drugog razlogao npr. grješka
o Ako je Servlet privremeno nedostupan, on može postat ponovno dostupan kada:o usluži zahtjevo razriješi problem (grješku)
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba59
Životni ciklus Servleta – završetako Servlet se uništava kod:
o čuvanja memorijskih resursa
o gašenja poslužiteljao grješke koja onemogućava
njegovu dostupnosto Poziv metode destroy()
o provjera da li su sve nit (procesi) završili “posao”
o poništavanje svih promjena koje se nisu riješile automatski
o Uništavanje Servleta (unload)o zbrinjavanje memorije
(garbage collection)
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba60
Ograničenja Servletao Problem - Servlet služi za neki “pametni posao” ali i vraća
generirani HTML sadržaj – to je LOŠE: o u Servletu se miješa programski kôd (poslovna logika) i
HTML kôd same rezultantne stranice Weba (prezentacije)o programer mora bit i dizajner Weba (i obratno)
o realno su to dvije odvojene ulogeo miješanje toka programske logike s prezentacijomo otežano:
o ponovno korištenje kôda, o održavanjeo paralelni razvoj (u tmu)
o HTML kôd se uređuje unutar programskog (Java) kôdao nemogućnost korištenja specijaliziranih uređivača HTML kôdao dodatni problem s CSS, JavaScript kôdom i sl.
o Zaključak: HTML kôd ne bi trebao bit dio programskog kôda!
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba61
Rješenje Servlet problemao Odvajanje sloja poslovne logike od sloja prezentacije
o korištenje nekih drugih tehnologija osim Servleta:o JavaServer Pages (JSP) tehnologijao JavaBeans tehnologija
o Kako?o dolazni zahtjev se “čita” i ovisno o tpu zahtjeva se
prosljeđuje odgovarajućoj poslovnoj logicio poslovna logika odrađuje “pametni dio posla” i stvara
rezultate (podatke) koji će se vratt korisnikuo odlučuje se na koji način će se podaci prikazat korisniku i
odabire se predložak prikaza za prezentaciju korisnikuo predložak se “puni” s podacima i šalje natrag klijentu
Tehnologije Weba i aplikacijski poslužiteljio Skalabilni svijet Jave i aplikacijski poslužiteljio Tehnologije za izradu aplikacija Weba
o Servleto Model-View-Controller (MVC)o JavaServer Pages (JSP)o JavaBeans
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba63
Uzorci oblikovanja (design patterns)o Uzorci oblikovanja (design patterns) pripadaju u
skupinu arhitekturalnih uzorakao arhitekturalni uzorci su programski predlošci – koncept
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 oblikovanja nije arhitektura već koncepto primjeri najbolje prakse kako treba gradit arhitekturu
o Ist uzorak oblikovanja se može implementrat u nizu raznih arhitektura koje imaju iste karakteristkeo definirani kao “striktno opisani i široko dostupni”
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba64
Model-View-Controller uzorak oblikovanjao Izolacija poslovne logike od korisničkog sučelja
o razdvajanje korisničke interakcije, prezentacije podataka, poslovne logike i pristupa podacima
o Smanjenje međuzavisnost slojeva aplikacijeo jednostavnije promjene vizualnog oblikovanja aplikacije,
ali i poslovnih pravila, bez utjecaja promjene jednog na doradu drugog
o Povećanje mogućnost ponovnog korištenja dijelova aplikacije
o Jednostavnije dorade novih funkcionalnosto Smanjenje ponavljanja dorada prilikom promjena
o nema copy-paste, jer je kôd na jednom mjestu
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba65
MVC uzorak oblikovanjao MVC dijelovi:
o model – predstavlja poslovnu logiku i podatkeo pogled (View) – predstavlja korisničko sučelje
o može postojat više korisničkih sučeljao kontroler (Controller) – komunikacija modela i pogleda
o povezuje korisničko sučelje i poslovnu logikuo MVC – konkretne korist:
o ponovno korištenje kôda – poslovna logika uvijek na jednom mjestu
o kraće vrijeme programiranjao paralelni razvoj (tmski rad)o moguće velike promjene jednog sloja (bilo kojeg) bez
utjecaja na druge
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba66
MVC – prikaz
o Više na: http://java.sun.com/blueprints/patterns/MVC-detailed.html
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba67
MVC – proširenje prikazao Uz 3 osnovna MVC sloja, dodan četvrt sloj
o sloj postojanost (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: sustav pohrane podataka (npr. relacijska
baza podataka i sl.)
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba68
MVC – primjena na Java EE
Tehnologije Weba i aplikacijski poslužiteljio Skalabilni svijet Jave i aplikacijski poslužiteljio Tehnologije za izradu aplikacija Weba
o Servleto Model-View-Controller (MVC)o JavaServer Pages (JSP)o JavaBeans
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba70
Sadržaj dinamičke Web straniceo Stranica Weba (HTML kôd) se generira iz:
o statčkog, ne-personaliziranog sadržaja – uvijek isto dinamičkog – ovisnog o trenutnom stanju aplikacije
o Osnovni izgled stranice - najčešće potpuno statčan:o razmještaj (layout)o dizajn – CSSo stalni grafički element – slike i sl.
o Sadržaj stranice - dinamičan:o tekst, podacio moguće korištenje XML + XSL
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba71
JavaServer Pages (JSP) - idejao Miješanje statčkog HTML kôda s dinamički
generiranim HTML kôdom pomoću oznakao statčki kôd je čist 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 Weba72
JSP – sintaksao Sadrži:
o direktveo naredbe JSP stroju ili prevodiocu
o skriptao deklaracije
o dodatne metode i varijable kreirane u JSP Servletuo skriptleti
o ugrađeni Java kôdo izrazi
o Java kôd koji rezultra znakovnim nizom (String)o alternatva: 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 Weba73
Razlike JSP – Servleto JSP se koriste za:
o prikaz sadržaja generiranog aplikacijom Webao određivanje vrste procesiranjao validaciju ulaznih podatakao rad s poslovnim objektma za pristup podacima i izvođenje
procesao kontrolu toka aplikacije Weba
o JSP i Servlet sadržavaju niz isth značajkio JSP se zapravo (neprimjetno) prevode u Servlete
o JSP ograničenje – samo za tekstualne podatkeo Servlet se i dalje koriste kao sučelje prema aplikacijama,
appletma, kao i za binarne podatkeo Primjer: proizvest i isporučit PDF datoteku može samo Servlet
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba74
JSP – prednost o Odvajanje statč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 platormio 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 alatma
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba75
JSP – izvedbeni modelo JSP stranice se izvode u sadržniku Web
komponenatao sadržnik preusmjera zahtjeve klijenta prema
odgovarajućoj JSP stranici i vraća odgovore klijentuo JSP stranice se prevode u Servlete i izvode
o proces zvan PageCompilatono JSP izvorna stranica – dizajnerski model pisan
oznakamao prevedeni JSP Servlet (Servlet nastao iz JSP)
o Koraci izvođenja:o parsiranje JSP izvorne straniceo generiranje izvedbenog kôda JSP Servletao prevođenje JSP Servleta, učitavanje i izvođenje
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba76
JSP – životni cikluso JSP se prevodi u Servleto JSP Servlet ima ist životni
ciklus kao i Servleto Pri prvom zahtjevu za
stranicom se kreira novi JSP Servlet
o Pri svakom sljedećem zahtjevu se korist postojeća instanca JSP Servletao osim ako se JSP izmijenio
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba77
JSP Servlet – usporedba 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.ServletExcepton, java.io.IOExcepton { ... 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 Weba78
JSP – vidljivost atributao Pristup atributma – 4 razine vidljivost:
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 Weba79
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 oblikovanjao 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 dodat 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
Tehnologije Weba i aplikacijski poslužiteljio Skalabilni svijet Jave i aplikacijski poslužiteljio Tehnologije za izradu aplikacija Weba
o Servleto Model-View-Controller (MVC)o JavaServer Pages (JSP)o JavaBeans
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba81
Komponentna arhitekturao Definicija:
o A Java Bean is a reusable sofware 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 Sofware component o Builder Toolo Visual manipulation
P r o p e r t y C h a n g e E v e n t
g e t P r o p e r t y N a m e ( )
g e t N e w V a l u e ( )
g e t O l d V a l u e ( )
( f r o m b e a n s )
S o m e B e a n
P r o p e r t y C h a n g e L i s t e n e r
p r o p e r t y C h a n g e ( )
( f r o m b e a n s )
< < I n t e r f a c e > >P r o p e r t y C h a n g e S u p p o r t
a d d P r o p e r t y C h a n g e L i s t e n e r ( )
r e m o v e P r o p e r t y C h a n g e L i s t e n e r ( )
f i r e P r o p e r t y C h a n g e ( )
( f r o m b e a n s )
i n h e r i t s f r o m
n o t i f i e s
S o m e O b j e c tr e g i s t e r s t o
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba82
Komponentna arhitekturao Komponenta:
o samostalni (self-contained), ponovno iskoristv (reusable) dio programske podrške koja se može ugradit i koristt u složenim modulima
o pakirani programski objekt s normiranim (poznatm) 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 Weba83
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 jeziku Java – platormska neovisnost
o JavaBeans arhitekturao temeljena na komponentnom modeluo omogućava programerima izradnju komponenata
o JavaBeanovio korištenje u aplikacijama, Servletma, appletma...
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba84
JavaBean – koncepto Alat za izgradnju otkrivaju značajke JavaBeana:
o svojstva, metode, događajeo metoda introspekcije
o istraživanje pridržavanjem određenih pravila (uzorci oblikovanja)o eksplicitnim uvidom u značajke preko informacija u BeanInfo
o Svojstva su karakteristke događaja i ponašanjao mogu se mijenjat i dorađivat u trenutku oblikovanja:
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) JavaBean i izvorišni (source) JavaBean
o alat istražuju JavaBean i uočavaju koje događaje može poslat i primito Postojanost omogućava pohranu stanja JavaBeana
o pohranjuje se i restaurira se – serijalizacija (Serialization)o Metode JavaBeanova - standardne metode Jave
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba85
JavaBean – karakteristkeo 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 Weba86
JavaBean – značajke i APIo Značajke Beanova:
o dinamički, mogu se mijenjat i prilagođavato vizualni alat (npr. NetBeans)mogu mijenjat JavaBeano na Propertes kartcama se podešavaju značajke JavaBeana
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 implementra sučelje Serializable
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba87
JavaBean – tpovi značajkio Tipovi značajki:
o jednostavne – jedna jednostavna značajkao logičke – istnosna vrijednost (istna/laž)
o metode:o public boolean isNaziv()o public void setNaziv( boolean vrijednost )o ne sadrže getNaziv metodu
o indeksirane – nizovi vrijednosto korisne kad treba pohranit niz značajki istog tpao 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 Weba88
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 Weba89
JavaBean – primjer – student public class Student implements java.io.Serializable { private String firstName; private String lastName; private boolean actve; 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 isActve() { return this.actve; } public void setActve(boolean actve) { this.actve = actve; }}
public class TestBean { public statc void main(String[] args) { Student student = new Student(); student.setFirstName("Ivo"); student.setLastName("Ivić"); student.setActve(true); System.out.print(student.getFirstName() + " je "); System.out.println(student.isActve() ?
"neaktvan" : "aktvan"); }}
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba90
JavaBean - koristo Zašto koristt JavaBeanove?
o programiranje korištenjem vizualnih programskih alatao pouzdan model učahurivanjao standardiziran u Java EE Connector Architecture (JCA)
Napomena: Ne miješat JavaBean s Enterprise JavaBeans (EJB)!
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba91
Servlet-JSP-JavaBean cjelina1) Klijent šalje HTTP zahtjev poslužitelju Weba koji ga prosljeđuje
aplikacijskom poslužiteljuo poziva se metoda service() odgovarajućeg Servleta
2) Servlet stvara/pokreće odgovarajuće JavaBeans komponente o JavaBeans komponente mogu pristupat drugim sustavima ili bazi
podataka i posljedično sadrže podatke za izradu dinamičkog sadržaja u JSP stranici
12
3
45
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba92
Servlet-JSP-JavaBean cjelina3) Servlet prosljeđuje poziv JSP stranici
o pri prvom pozivu JSP stranica se prevodi, inače neo poziva se metoda service() prevedenog JSP Servleta
4) JSP Servlet čita sadržaj JavaBean komponente5) JSP Servlet izrađuje sadržaj stranice Weba te ga prosljeđuje
poslužitelju Weba koji ga prosljeđuje pregledniku Weba (klijentu)
12
3
45
Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba
Pitanja?