93
OTVORENO RA^UNARSTVO o TEHNOLOGIJE WEBA I APLIKACIJSKI POSLU@ITELJI MARIO @AGAR

15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

Embed Size (px)

Citation preview

Page 1: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

OTVORENO RA^UNARSTVOo TEHNOLOGIJE WEBA I APLIKACIJSKI POSLU@ITELJI

MARIO @AGAR

Page 2: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

Otvoreno računarstvo

Otvoreno računarstvoo Tehnologije Weba i aplikacijski poslužitelji

Mario Žagar

Page 3: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 4: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 5: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 6: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 7: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 8: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 9: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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)

Page 10: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba10

Pregled Java SE platorme

Page 11: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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 ...

Page 12: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 13: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 14: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 15: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 16: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 17: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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)

Page 18: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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 ...

Page 19: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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)

Page 20: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 21: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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)

Page 22: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 23: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 24: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 25: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba25

Java EE – komponente i sadržnici #2

Page 26: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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 ...

Page 27: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 28: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 29: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 30: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 31: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 32: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 33: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba33

Dinamičke stranice #2

Page 34: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 35: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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).

Page 36: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 37: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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)

Page 38: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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>");

}}

Page 39: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

ITE

LJ

WE

BA

S D

INA

MIČ

KIM

MO

DU

LO

M W

EB

A

Page 40: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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>

Page 41: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 42: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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>

Page 43: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 44: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 45: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 46: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 47: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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.

Page 48: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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)

Page 49: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 50: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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>

Page 51: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 52: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 53: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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>

Page 54: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 55: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 56: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 57: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 58: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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)

Page 59: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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)

Page 60: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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!

Page 61: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 62: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 63: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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”

Page 64: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 65: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 66: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba66

MVC – prikaz

o Više na: http://java.sun.com/blueprints/patterns/MVC-detailed.html

Page 67: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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.)

Page 68: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba68

MVC – primjena na Java EE

Page 69: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 70: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 71: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 72: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 73: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 74: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 75: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 76: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 77: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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" ); ...

Page 78: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 79: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 80: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 81: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 82: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 83: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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...

Page 84: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 85: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 86: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 87: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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)

Page 88: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 89: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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"); }}

Page 90: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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)!

Page 91: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 92: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

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

Page 93: 15. Tehnologije Weba i aplikacijski poslužitelj [865,88 KiB]

Otvoreno računarstvo - Tehnologije za izradu aplikacija Weba

Pitanja?