razvoj web aplikacija koriscenjem j2ee tehnologije

Upload: goran

Post on 09-Feb-2018

263 views

Category:

Documents


4 download

TRANSCRIPT

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    1/111

    UNIVERZITET U BEOGRADU

    FAKULTET ORGANIZACIONIH NAUKA

    (Institut za informacione sisteme)

    RAZVOJ WEB APLIKACIJA

    KORIENJEM J2EETEHNOLOGIJE(SKRIPTA)

    Autor: dr Sinia Vlaji

    Beograd - 2005.

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    2/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    2

    Autor

    Dr Sinia Vlaji

    Naslov skripte

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    IzdavaDr Sinia Vlaji, Beograd

    E-mail [email protected]

    Copyright dr Sinia Vlaji.Nije dozvoljeno da nijedan deo ove knjige bude repodukovan ili emitovanna bilo koji nain, elektronski ili mehaniki, ukljuujui fotokopiranje, snimanje ili bilo koji drugi sistem za

    beleenje, bez predhodne pismene dozvole izdavaa.

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    3/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    3

    Sadraj:1. J2EE platformauvod

    Odnos izmeu J2EE specifikacije, komponente, aplikacije i vendora.Distribuirane multi-nivojske aplikacije

    Realizacija tronivojske arhitekture preko J2EE klijenta, J2EE servera i sistema za upravljanje bazom

    podataka

    1.3.1 J2EE klijenti

    1.3.2 Komunikacija J2EE klijenta i J2EE servera

    1.3.3 J2EE server

    1.3.4 J2EE aplikacija

    1.3.4.1 Web aplikacija

    1.3.4.2 EJB aplikacija

    1.3.5 J2EE Komponente

    1.3.5.1 Web komponente

    1.3.5.2 Poslovne komponente

    1.3.6 Sistem za upravljanje bazom podataka

    1.4 Koraci u razvoju Web aplikacije

    1.5 J2EE Web modul

    1.6 J2EE Kontejneri

    1.7 Web servisi

    1.8 Pakovanje aplikacija1.8.1 Opisiva rasporeda (deployment descriptor)1.8.2 J2EE modul

    1.9 Uloge u razvoju J2EE aplikacije

    2. Razvoj Web aplikacije2.1 Java Servleti

    2.1.1 Koraci u razvoju servleta

    2.1.2 Metode slanja zahteva Web serveru

    Primer servleta koji obradjuje informacije o poslovnom partneru2.1.3 Obrada izuzetaka kod servleta

    Primer obrade izuzetaka kod servleta2.1.4 Kreiranje biblioteke Javinih klasa i njeno povezivanje sa Web

    aplikacijom

    2.1.5 Sesije

    2.1.6 Servlet kontekst

    2.1.7 Povezivanje servleta sa bazom podataka

    2.1.8 Pozivanje servleta preko apleta

    2.2. Java server strane (JavaServer Pages - JSP)

    2.2.1 Arhitektura JSP-a

    2.2.2 Korienje Java Beans komponenti sa JSP-om2.2.3 Miksovanje servleta i JSP-a

    2.2.4 Poziv JSP-a preko apleta

    2.2.5 Rad sa bazom podataka preko JSP-a

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    4/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    4

    1. J2EE platforma - uvod

    J2EE platforma za razvoj enterprise aplikacija moe se podeliti u 4 dela koja prate odgovarajuetehnologije i servisi:

    1. Web tehnologije koje se koriste u razvoju prezentacionog nivoa J2EE ili stand-alone Webaplikacije:

    Java servleti. Java server strane (JavaServer Pages - JSP). Java server strane sa standardnom bibliotekom tagova (JavaServer Pages Standard Tag

    Library - JSTL).

    Java server oblici (JavaServer Faces - JSF). Internacionalizacija i lokalizacija Web aplikacija.

    2. Enterprise JavaBeans (EJB) tehnologije koje se koriste u razvoju poslovne logike J2EE aplikacije: Session bean-ovi. Entity bean-ovi. Message-driven bean-ovi. Enterprise JavaBeans upitni jezik

    3. Java XML tehnologije za razvoj aplikacija koje procesiraju XML dokumente i implementirajuWeb servise:

    Java API za XML procesiranje (JAXP). Java API za XML-RPC (JAX-RPC). SOAP attachments API za Javu (SAAJ). Java API za XML registrovanje (JAXR).

    4. Servisi J2EE platforme koje koriste sve navedene tehnologije: Transakcije. Povezivanje resursa (Resource connections). Zatita (Security). Java servis poruke (Java Message Service).

    J2EE platforma podrava: Vie nivojski distribuirani aplikacioni model (Multitiered distributed application model). Komponente koje se mogu ponovo koristiti (Reusable components). Jedinstveni model zatite (Unified security model). Fleksibilnu transakcionu kontrolu (Flexible transaction control). Web servise koji prihvataju i razmenjuju podatke koji su zasnovani na XML (Extensible Markup

    Language) standardima i protokolima.

    1.1. Odnos izmeu J2EE specifikacije, komponente, aplikacije i vendoraKada korisnik pravi J2EE aplikaciju on moe da ih sastavlja od J2EE komponenti koje su napravili razliitivendori. Jedna J2EE komponenta moe biti ugraena u vie razliitih J2EE aplikacija. Ono to jezajedniko za svaku J2EE komponentu je to da je ona napravljena na osnovu J2EE specifikacije. Na tajnain je mogue povezati J2EE komponente razliitih vendora (Slika J2EESVKA).

    Slika J2EEsvka: Odnos izmeu J2EE specifikacije, komponente, aplikacije i vendora.

    ***1

    J2EE s ecifikaci a

    J2EE kom onenta J2EE a likaci aVendor

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    5/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    5

    1.2 Distribuirane multi-nivojske aplikacijeJ2EE platforma koristi distribuirani vie-nivojski model (obino tronivojski model Slika TNA) za razvojJ2EE enterprise aplikacija (sloenih aplikacija). J2EE aplikacija se sastoji od J2EE komponenti koje suinstalirane na razliitim mainama. Komponente, odnosno maine na kojima se izvravaju komponente sudodeljene razliitim nivoima J2EE aplikacije:

    1. Klijentski nivo - komponente se izvravaju na klijentskim mainama.2. Nivo aplikacione logike (Nal) komponente se izvravaju na J2EE serveru. Ovaj nivo je

    podeljen u dva podnivoa:

    2.1 Web nivo

    2.2 Poslovni nivo

    3. Enterprise information system (EIS) nivo - komponente se izvravaju na EIS serveru (Obinoje to neki sistem za upravljanje bazom podataka (SUBP)Database management system).

    Slika TNA: Model tronivojske aplikacije

    Na osnovu navedenog moe da se zakljui da postoje tri lokacije gde se nalaze maine na kojima seizvravaju komponente (Slika TNAM):

    Klijentske maine. J2EE server maine. Database ili legacy maine (back and maine).

    Slika TNAM: Lokacije maina u tronivojskoj arhitekturi

    J2EE komponente su pisane u Java programskom jeziku i kompajliraju se na isti nain kao i bilo koji drugiprogram koji je pisan u Javi. Razlika izmeu J2EE komponenti i standardnih Java klasa se ogleda u tomeda se J2EE komponente ugrauju (assembled) u J2EE aplikaciju ako zadovoljavaju J2EE specifikacijuJ2EE aplikacije se izvravaju u okruenju J2EE servera. J2EE server ima ulogu da prati i upravljaizvrenjem J2EE aplikacije.

    2. Nivo 2.1 Web nivo

    aplikacione

    logike 2.2 Poslovni nivo

    3. EIS nivo

    1. Klijentski nivo

    Nivo aplikacione logike

    J2EE server maina

    EIS nivo

    Server maina baze podataka

    Klijentski nivo

    Klijentska maina

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    6/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    6

    1.3 Realizacija tronivojske arhitekture preko J2EE klijenta, J2EE servera i sistema za

    upravljanje bazom podatakaPostoje dve mogue vrste J2EE klijenata: a) Aplikacioni klijent i b) Web klijent. Tro-nivojske aplikacije

    proiruju standardni klijent-server model postavljanjem vienitnog (multithread) J2EE servera izmeuklijentske aplikacije i skladita podataka (back-and storage) (Slika TNAPR). Skladite podataka je obinorealizovano preko nekog od sistema za upravljanje bazom podataka.

    J2EE komponente

    Slika TNAPR: Realizacija tronivojske arhitekture preko J2EE klijenta, J2EE vienitnog servera i sistema za upravljanje bazompodataka

    1.3.1 J2EE kli jentJ2EE klijent (Slika J2EEKL) moe biti:

    a) Web klijent ili

    b) Aplikacioni klijent.

    Web kli jent

    Web klijent se sastoji od dva dela: (1) dinamikih Web strana koje sadre razliite tipove markup jezika(HTML,XML,...), koji se generiu1pomou Web komponenti koje se izvravaju na Web nivou i (2) Webitaa (browser) koji tumai (renders) strane koje prihvata od servera.Web klijent se ponekad naziva tanak klijent (thin client). Tanak klijent obino ne postavlja upite bazi, neizvrava kompleksna poslovna pravila, niti se povezuje sa legacy aplikacijama.Tanak klijent odgovornost za izvrenje sloenih operacija prenosi na stranu J2EE servera koji obezbeujezahtevanu funkcionalnost ukljuujui i dopunske ne-funkcionalne osobine: zatitu, brzinu i pouzdanost.

    Apleti

    Web strane koje alje server a koje koje prihvata Web ita mogu da sadre aplete. Aplet je programnapisan u Java programskom jeziku koji izvrava Java virtualna maina koja je instalirana na Web itau.Da bi aplet mogao uspeno da se izvri na klijentskoj strani verovatno je potrebno da postoji Java Plug-in2isecurity policy datoteka.

    Web komponente koriste API za kreiranje Web klijentskih programa zato to oni ne trae plug-in i securitypolicy datoteke na klijentskoj strani3. Takoe Web komponente omoguavaju jasnije i modularnijeprojektovanje aplikacije zato to one obezbeuju nain da dele aplikaciono programiranje od projektovanja.

    1Vano: Web komponente generiu Web strane.2 Java Plug-in je mehanizam koji omoguava da se najnovije verzije Jave mogu izvriti u run -timeokruenju itaa (Internet Explorer, Netscape,...).3 JVM, Plug-in i Security policy datoteka su potrebni kako bi se izvrio aplet. Oni nisu neophodni kodizvrenja HTML ili XML strana.

    Nivo aplikacione logike - J2EE server maina

    Vienitni J2EE server

    EIS nivo - Server maina baze podataka

    Sistem za upravljanje bazom podataka

    skladite podataka

    Klijentski nivo - Klijentska maina

    Aplikacioni klijent Web klijent

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    7/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    7

    Web strana. Na ovaj nain ljudi koji se bave projektovanjem Web strana ne moraju da znaju sintaksu Javaprogramskog jezika da bi mogli da rade njihov posao.

    Aplikacioni klijenti

    Aplikacioni klijenti se izvravaju na klijentskoj maini i oni obezbeuju nain da se naprave sloenijikorisniki interfejsi nego to to moe biti obezbeeno pomou markup jezika. Obino se grafiki korisnikiinterfejs (graphical user interface - GUI) kreira iz Swing ili AWT klasa. Meutim mogue je napravitiaplikacionog klijenta koji e da se izvrava preko komandne linije4. Aplikacioni klijenti direktno pristupajuenterprise beans-ima koji se izvravaju na nivou poslovne logike. Ukoliko postoji p otreba aplikacioniklijenti mogu da naprave HTTP konekciju sa servletima koji se izvravaju na Web nivou.

    Slika J2EEKL: J2EE klijenti

    JavaBeans komponentna arhitektura

    Serverski i klijentski nivoi mogu takoe da ukljue komponente koje su zasnovane na Java -Beanskomponentnoj arhitekturi (Java Beans components) kako bi se upravljalo tokom podataka izmeu J2EEklijenta i komponenti koje se izvravaju na J2EE serveru, ili izmeu J2EE server komponenti i bazepodataka. Java bean komponente nisu J2EE komponente i one nisu opisane J2EE specifikacijom.

    4 To je veoma jednostavan tekstualni korisniki interfejs, koji je slian aplikacijama koje su pisane uokruenju DOS operativnog sistema.

    J2EE klijent

    Web klijent Aplikacioni

    klijent

    ita(browser)

    HTML ili

    XML strana

    Swing Awt

    Plug-inJVM Aplet Security policy

    datoteke

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    8/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    8

    1.3.2 Komunikacija J2EE kl ij enta i J2EE serveraKlijent komunicira sa poslovnim nivoom (Slika J2EEKLAS) koji se izvrava na J2EE serveru ili A) direktno(Aplikacioni klijentEJB komponente poslovnog nivoa)ili B) u sluaju klijenta koji se izvrava na Webitau, prekoJSP strana ili servleta koji se izvravaju na Web nivou (ita JSP ili Servlet komponenteWeb nivoaEJB komponente poslovnog nivoa).

    J2EE aplikacija moe da koristi tankog klijenta koji se izvrava na Web itau (thin browser-basedclient) ili debelog aplikacionog klijenta (thick application client). Kod odluivanja ta da se koristi trebanai balans izmeu uvanja funkcionalnosti na klijentskoj strani (thick client) i prenoenja odgovornosti zaizvrenje funkcionalnosti na stranu servera (thin client).Aplikacijom se lake moe upravljati, u smislu nadogradnje i odravanja, ukoliko se funkcionalnostaplikacije prenese na stranu servera.

    Slika J2EEKLAS: Komunikacija J2EE klijenta i J2EE servera

    1.3.3 J2EE server

    J2EE server prati i upravlja izvrenjem J2EE aplikacija. J2EE server moe da bude Web server (npr.Bundled Tomcat (5.0.28) iliTomcat 5) ili moe istovremeno da bude i Web i aplikacioni server (Sun JavaSystem Application Server 8). Web serveri podravaju rad Web komponenti (Servlet, JSP i Web servis) dok

    aplikacioni serveri podravaju rad EJB komponenti (Session bean i Entity bean).

    Na sajtu:http://www.netcraft.com/survey semoe nai pregled najpopularnijih Web servera.

    1.3.4 J2EE aplikacija

    J2EE aplikacija moe biti realizovana kao Web ili kao EJB aplikacija.

    1.3.4.1 Web apli kacij a

    Web aplikacija predstavlja aplikaciju koja se izvrava u okruenju Web servera. Web aplikacija se sastojiod Web komponenti, standardnih Javinih klasa, HTML strana, JavaBeans komponenti i Message Handler

    komponenti.

    Postoje dva tipa web aplikacija:

    Prezentaciono-orijentisana Prezentaciono orijentisane Web aplikacije generiu Web strane naosnovu zahteva koje im postavlja klijent. Web strana moe biti realizovana preko HTML-a, XML-a ili nekog drugog markup jezika.

    Servisno-orijentisana Servisno orijentisane Web aplikacije koriste Web servise da realizujuzahteve koje im postavlja klijent ili prezentaciono orijentisana aplikacija (u tom sluaju jeprezentaciono-orijentisane aplikacija klijent servis-orijentisanoj Web aplikaciji).

    Interakcija izmeu Web klijenta i Web aplikacije je sledea (Slika IWkWa):

    Klijent alje HTTP zahtev do Web servera (1.). Web server (koji podrava Java Servlet i JSP tehnologiju),konvertuje zahtev uHTTPServletRequestobjekat. Taj objekat se alje do Web komponente (2), koja moeda bude u interakciji sa JavaBeans komponenatama (3.1, 4.1) ili sa SUBP-a. (3.2, 4.2) ili sa EJB

    A 2.1 Web nivo(JSP ,Servlet)

    2.2 Poslovni nivo (EJB) B

    3. EIS nivo

    1. Klijentski nivoAplikac. klijent ita

    http://www.netcraft.com/surveyhttp://www.netcraft.com/surveyhttp://www.netcraft.com/survey
  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    9/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    9

    komponentama (3.3, 4.3) kako bi generisala dinamiki sadraj. JavaBeans komponente (3.1.1, 3.1.2) iliEJB komponente (3.3.1, 3.3.2) mogu biti u interakciji sa SUBP-a. Web komponenta moe da generieHTTPServletResponse objekat (5) ili moe da prosledi zahtev do druge Web komponente.Web serverkonvertujeHTTPServletResponse objekat u HTTP odgovor (6) i vraa ga nazad do klijenta.

    Slika IWkWa: Interakcija izmeu Web klijenta i Web aplikacije

    1.3.4.2 EJB aplikacij a

    EJB aplikacija predstavlja aplikaciju koja se izvrava u okruenju aplikacionog servera. EJP aplikacija sesastoji od EJB komponenti (Session beans, Entity beans i Message-driven beans), standardnih Javinih klasai JavaBeans komponenti. EJB aplikacije su prvenstveno namenjeno da realizuju ponaanje i strukturusoftverskog sistema5. Session beans slue da realizuju ponaanje softverskog sistema, dok entity beansslue da realizuju strukturu softverskog sistema. EJB server obezbeuje EJB aplikacijama mehanizme

    perzistentnosti i transakcije, pomou EJB kontejnera, tako da je programer osloboen pisanja programskogkoda koji se odnosi na perzistentnost i transakcije.

    5 Struktura i ponaanje softverskog sistema predstavljaju logiku poslovnog sistema (poslovnu logiku) koji je realizovan prekosoftverskog sistema.

    6. HTTP odgovor

    Web server

    HTTPServletResponse

    Web klijent

    HTTPServletRequest

    Web komponenta

    JavaBeans

    komponenta

    Sistem za upravljanje

    bazom podataka

    1. HTTP zahtev

    2.

    3.1 3.3

    3.1.1 3.3.1

    3.1.2 3.3.2

    3.2

    EJB komponenta

    4.2

    4.1 4.3

    5.

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    10/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    10

    1.3.5 J2EE Komponente

    J2EE komponenta (Slika J2EEK)je softverska jedinica (software unit) koja ima neku funkcionalnost i koja je

    pridruena J2EE aplikaciji i koja je realizovana u skladu sa J2EE specifikacijom. J2EE komponenta sesastoji od skupa meusobno povezanih klasa i datoteka koje joj obezbeuju eljenu funkcionalnost. J2EEkomponente meusobno komuniciraju u cilju obezbeenja odreene funkcionalnosti.

    Slika J2EEK: Sastav J2EE komponente.

    J2EE aplikacije se prave od komponenti (Slika J2EERKNA) . Postoje sledee komponente:a) Klijentske komponente.b) Web komponente.c) Poslovne komponente.d) JavaBeans komponente.

    Aplikacioni klijenti i apleti su klijentske komponente koje se izvravaju na klijentskoj maini. Java servletii JSP su Web komponente koje se izvravaju na J2EE serverskoj maini. EJB komponente su poslovnekomponente koje se izvravaju takoe na J2EE serverskoj maini.Web komponente (Servleti i JSP-ovi) i EJB komponente (EJB-ovi) su J2EE komponente (Slika J2EEKOMP)

    jer su realizovane u skladu sa J2EE specifikacijom.

    Klijenteske komponente (aplikacioni klijenti i apleti) nisu J2EE komponente jer nisu realizovane u skladu

    sa J2EE specifikacijom (klijentske komponente nisu razmatrane J2EE specifikacijom).

    Na serverskoj i klijentskoj strani mogu da postoje i JavaBeans komponente koje takoe nisu realizovane uskladu sa J2EE specifikacijom ( nisu razmatrane J2EE specifikacijom).

    JavaBeans

    Slika J2EERKNA: Komponente J2EE aplikacije

    2. Nal 2.1 Web nivo - WEB KOMPONENTE (Java servlet, JSP)

    J2EE server JavaBeans

    maina 2.2 Poslovni nivo POSLOVNE KOMPONENTE (EJB)

    3. EIS nivoServer maina baze podataka

    1. Klijentski nivoKlijentska maina

    Aplikacioni klijent Aplet JavaBeans

    KLIJENTSKE KOMPONENTE

    * * *

    ***1

    J2EE specifikacija

    J2EE kom onenta J2EE aplikacijaVendor

    Klasa Datoteka

    Funkci a

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    11/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    11

    Slika J2EEKOMP: Sastav J2EE aplikacije

    1.3.5.1 Web komponente

    J2EE Web komponente su ili servleti ili strane koje su kreirane korienjem JSP tehnologij e (JSP strane).Servleti su Javine klase koje dinamiki procesiraju zahteve i konstruiu odgovore. JSP strane su tekstdokumenti koji se izvravaju kao servleti ali oni dozvoljavaju da se na neposredniji nain kreira statikisadraj tih dokumenata (mogueje direktno pisati HTML kod u JSP stranu). Servleti i JSP strane se moguzajedno koristiti u jednoj Web aplikaciji ali treba znati da svaka od navedenih tehnologija je usmerena ka

    odreenom tipu Web aplikacije. Servleti su najpogodniji za servisno-orijentisane aplikacije (Web servisi suimplementirani kao servleti) i za kontrolne funkcije prezentaciono-orijentisane aplikacije, kao to suusmeravanje (dispatching) zahteva i obrada netekstualnih podataka. JSP strane su pogodne za generisanje

    markup strana (HTML, SVG-Scalable Vector Graphics, WML-Wireless Markup Language i XML),

    odnosno one su pogodne za prezentaciono-orijentisane aplikacije.

    Najvie Web aplikacija koriste HTTP protokol pri komunikaciji sa klijentom.Java Servlet tehnologija je osnova svih Web aplikacionih tehnologija (JSP, JavaServer Faces i

    JavaServerPages Standard Tag Library).

    *

    *

    J2EE KOMPONENTE

    * **

    ***1

    J2EE specifikacija

    J2EE kom onenta J2EE aplikacijaVendor

    Klasa Datoteka Funkcija

    Klijentske

    komponente

    Web

    komponente

    Poslovne

    komponente

    Aplikacioni

    klijent

    ApletServleti JSP EJB

    JavaBeans

    komponente

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    12/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    12

    Kontejner Web komponenti

    Web aplikacija moe da koristi tankog klijenta koji se izvrava na Web itau (thin browser-based client)ili debelog aplikacionog klijenta (thick application client). Tanak klijent ne sadri programski kod koji: a)obrauje transakcije, b) upravlja stanjima programa, c) prati rad vie niti,..., i druge kompleksne detaljeWeb aplikacije. Svaka Web aplikacija se sastoji od J2EE kompone nti koje se pridruuju odgovarajuimkontejnerima koji obezbeuju servise (transakcije, perzistentnost,...) koji osloboavaju onoga ko razvijaaplikaciju programiranja niskog nivoa. To znai da navedene servise ne mora da razvija onaj ko praviaplikaciju. On treba iskljuivo da bude koncenrisan na shvatanje poslovne logike aplikacije.Preporuka je da se koristi tanak klijent jer se tada Web aplikacijom moe lake upravljati, u smislu njenenadogradnje i odravanja.

    Web komponente su podrane servisima koje obezbeuje Web kontejner. Web kontejner obezbeujesledee servise za Web komponente:

    a) usmeravanje zahteva (request dispatching),b) zatita (security),c) konkurentnost (concurrency) id) upravljanje ivotnim ciklusom (life-cycle management).

    On takoe daje Web komponentama pristup do API-a koji se odnose na imenovanje (naming), transakcije ie-mail. Izvesni aspekti Web aplikacije mogu biti konfigurisani kad je aplikacija instalirana ili rasporeena(deployed) unutar Web kontejnera. Konfiguracione informacije se nalaze u XML datoteci koja se nazivaOpisiva rasporeda Web aplikacije (Web aplication deployment descriptor (DD)). DD mora da bude uskladu sa emom koja je opisana u Java servlet specifikaciji.

    1.3.5.2 EJB (Poslovne) komponentePostoje dve vrste EJB komponenti:

    1) Session bean i2) Entity bean3) Message-driven bean.Session beanje odgovoran:

    a) za komunikaciju izmeu web i poslovnog nivoa i zab) poslovna pravila (ponaanje) aplikacije.

    Entity beanje odgovoran:

    a) da predstavi poslovne podatke (strukturu) aplikacijeb) i da komunicira sa bazom podataka.

    Postoji sledee poreenje izmeu session i entity bean-a :

    Session bean Entity bean

    Odgovornost Izvrava zadatak ili proces za klijenta Predstavlja poslovne objekteDeljeni pristup Jedna instanca po klijentu Deljena instanca za vie klijenataPerzistentnost Nije perzistentan kada klijent zavri rad sa

    binom isti nije vie na raspolaganjuPerzistentan je po zavretkurada EJB stanje objekta je

    sauvano u bazi.

    Message-dr iven bean kombinuje osobine session bean-a i java servisa poruke (Java Message Service JMS) dozvoljavajui poslovnim komponentama da prihvate JMS poruke asinhrono.

    1.3.6 Sistem za upravl jan je bazom podataka

    Sistem za upravljanje bazom podataka u najoptijem smislu je softverski sistem koji treba da omogui: uvanje podataka, pouzdanost podataka u sluaju otkaza sistema,

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    13/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    13

    istovremeno korienje podataka od strane vie korisnika i jednostavan nain komunikacije sa bazom podataka (npr. SQL).

    J2EE aplikacije komuniciraju sa SUBP, preko odgovarajuih JDBC ili JDBC-ODBC drajvera, kada ele daobezbede perzistentnost njihovih objekata i kada ele da vide (proitaju) zapamene objekte, shodno upitukoji postavlja J2EE aplikacija SUBP-a6.

    Web aplikacije moraju neposredno da komuniciraju sa SUBP (programer mora da implementirakomunikaciju sa SUBP-a), dok EJB aplikacije to ine posredno (programer ne mora da implementirakomunikaciju sa SUBP, jer je to obezbedio EJB server, odnosno njegov EJB kontejner).

    1.4 Koraci u razvoju Web aplikacijeProces kreiranja, rasporeivanja i izvrenja Web aplikacije se sastoji iz sledeih koraka:

    1. Pravi se programski kod Web komponenti (kreiranje Web aplikacije).

    2. Pravi se opisiva rasporeda (deployment descriptor) za Web aplikaciju (kreiranje Web aplikacije).3. Kompajliraju se Web komponente i pomone klase na koje ukazuju komponente.4. Aplikacija se pakuje (ovo je opciona mogunost) u rasporedljivu (deployable) jedinicu(rasporeivanje Web aplikacije).5. Aplikacija se postavlja u Web kontejner i izvrava se (izvrenje Web aplikacije) .6. Klijent pristupa URL-u koji referencira na Web aplikaciju.

    1.5 J2EE Web modul

    Kada se kae Web aplikacija onda se misli na aplikaciju koja sadri odgovarajue elemente (Webkomponente, Web strane, utility klase, JavaBeans komponente,...), koji su na neki nain organizovanii kojimeusobno sarauju u cilju obezbeenja odreene funkcionalnosti. Kada se govori o Web aplikacijamanaglasak se stavlja na njihovu funkcionalnost a ne na nain njihovog organizovanja.Koncept Web modula naglaava aspekt organizovanja Web aplikacije. Iz navedenog moe da se kae daWeb modul predstavlja organizacioni okvir unutar koga se postavlja Web aplikacija. Web modul moe bitiorganizovan (rasporeen) kao nespakovana struktura datoteka ili moe biti pakovan u JAR datoteku koja je

    prilagoena Web aplikacijama (WAR- Web archive file). Web modul koji je spakovan preko WARdatoteke je prenosiv (portable) i on se moe postaviti (prodruiti) i izvriti preko bilo kog Web kontejnerakoji zadovoljava Java Servlet specifikaciju.

    Da bi se WAR datoteka postavila na Web server, datoteka mora da sadri i runtime opisiva rasporeda(runtime deployment descriptor). Runtime opisiva rasporeda je XML datoteka koja sadri informacije okontekstu Web aplikacije (gde je poetak-koren Web aplikacije, preko koga se pristupa Webkomponentama).

    Web modul ima specifinu strukturu (Slika Wms). Na vrhu Web modula je dokument koren (document root)aplikacije. On sadri:

    JSP strane, klase i arhive klijentske strane i statike Web resurse, kao to su npr. HTML strane,slike,...

    Pored toga on sadri poddirektorijum /WEB-INF/ koji sadri sledee datoteke i direktorijume: web.xml: Opisiva rasporeda (deployment descriptor) Web aplikacije. .tld: Datoteke za opis tag biblioteke (Tag library descriptor files). classes: Direktorijum koji sadri klase serverske strane: servlete, utility klase i JavaBeans

    komponente. tags: Direktorijum koji sadri tag datoteke koje su implementacije tag biblioteke. lib: Direktorijum koji sadri biblioteke JAR arhiva koje pozivaju klase sa serverske strane.

    6esto se kae da upit nad bazom prestavlja jedan pogled nad bazom podataka.

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    14/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    14

    Slika Wms:Web modul struktura

    1.6 J2EE kontejneri

    Kontejneri obezbeuju okruenje na kome se izvravaju komponente. To znai da komponente (aplikacioniklijent, aplet,servlet, JSP, EJB) pre izvrenja moraju biti ugraene (asemblirane) u J2EE modul i dodeljeneodgovarajuem kontejneru.

    U process ugraivanja - sastavljanja (asemliranja) komponenti se vri podeavanje (setovanje)odgovarajuih XML datoteka za:

    a) svaku komponentu J2EE aplikaciji ib) za same J2EE aplikaciju.

    Kontejner, na osnovu definisanog podeavanja komponenti, obezbeuje odgovarajuu podrku koja jeobezbeena preko J2EE servera. Navodimo neke od najvanijih servisa J2EE servera:

    J2EE model zatite (security model) koji omoguava da se konfigurie Web komponentaili enterprise bean tako da sistemskim resursima moe pristupiti samo autorizovanikorisnici.

    J2EE transakcioni model omoguava da se specificiraju veze izmeu metoda koje pravejednu transakciju tako da su sve metode u transakciji tretirane kao jedna jedinica.

    Servis JNDI pretraivanja obezbeuje jedinstveni interfejs (unified interface) zaviestruko imenovanje i servise direktorijuma (directory services).

    J2EE model udaljene konekcije (remote connectivity model) omoguava komunikacijuizmeu klijenata i enterprise bean-ova. Poto je enterprise bean kreiran klijent poziva

    metode i ima utisak da se metoda izvrava na istoj virtualnoj maini gde se nalaziklijentski program. Metode se izvravaju na serverskoj maini.

    J2EE arhitektura obezbeuje servise koji se mogu konfigurisati(configurable services). Shodnotome komponente iste J2EE aplikacije mogu se ponaati razliito u zavisnosti od toga gde su rasporeene.Kontejner takoe upravlja servisima koji se ne mogu konfigurisati, kao to su enterprise bean-ov i servletovivotni ciklus, database connection resource pooling, perzistentnost podataka i pristup do API -ja J2EEplatforme. Mada je perzistentnost podataka nekonfigurabilni servis, J2EE arhitektura omoguava da seprekrije perzistentnost koju obezbeuje kontejner ukljuivanjem odgovarajueg programskog koda u

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    15/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    15

    enterprise bean implementaciju kada se eli vea kontrola perzistentnosti od podrazumevane perzistentnostikoju obezbeuje kontejner.

    Postoje sledei tipovi kontejnera:

    1. Web kontejner

    Upravlja izvrenjem JSP strana i servlet komponenti za J2EE aplikacije. Web komponente i njihovi

    kontejneri se izvravaju na J2EE serveru.

    2. Enterprise JavaBeans (EJB) kontejner

    Upravlja izvrenjem enterprise beans-a za J2EE aplikacije. Enterprise beans-i i njihovi kontejneri seizvravaju na J2EE serveru.

    3. Application client container

    Upravlja izvrenjem komponeti aplikacionog klijenta. Aplikacioni klijenti i njihovi kontejneri se izvravajuna klijentskoj maini.

    4. Aplet kontejneri

    Upravlja izvrenjem apleta. Sadri Web ita i Java Plug-in koji se zajedno izvravaju na klijentskojmaini.

    1.7 Web servisiWeb servisu su Web enterprise aplikacije koje koriste na XML-u7 zasnovane standarde i transportne

    protokole za razmenu podataka sa klijentima.

    Preko XML API-ja se vri translacija podataka iz aplikacionog oblika u XML data-stream oblik koji semoe preneti pomou XML transportnog protokola. Upravo taj XML data -stream oblik omoguavainteroperabilnost izmeu Web servisa i klijenata.

    Naveemo i ukratko objasniti neke od XML tehnologija koje se koriste kao podrka Web servisima:

    a) Java API za XML procesir anje (Java API f or XM L Processing (JAXP))

    Java API za XML procesiranje (JAXP) podrava procesiranje XML dokumenata korienjem DocumentObject Model-a (DOM), Simple API za XML (SAX) i Extensible Stylesheet Language Transformations

    (XSLT)8

    . JAXP je projektovan da bude fleksibilan i on omoguava korienje bilo kog XML parsera iliXSL procesora i on podrava W3C emu.

    b) Java API za XML RPC (Java API f or XM L -Based RPC(JAX -RPC))

    Java API za XML RPC koristi SOAP-HTTP protokol kod XML poziva udaljenih procedura (XML-based

    Remote Procedure Calls - RPCs) preko interneta. JAX-RPC takoe podrava WSDL tako da se moguimportovati i eksportovati WSDL dokumenti. Sa JAX-RPC i WSDL mogua je laka komunikacija izmeuklijenata i servisa koji se izvravaju na Java platformi ili na bilo kojoj drugoj platformi, kao to je npr..NET. Na primer, na osnovu WSDL dokuemenata, Visual Basic .NET klijent moe biti konfigurisan dakoristi Web servise koji su implementirani u Java tehnologiji ili Web servis moe biti konfigurisan daprepozna Visual Basic .NET klijenta.

    7 XML je platformski ukrtiv (cross-platform), proirljiv (extensible), na tekstu zasnovani standard (text-based standard) zareprezentovanje podataka.

    XML sadre: Tagove koji opisuju podatke. eme koje opisuju koji tagovi mogu biti korieni u XML dokumentima. XML stylesheet koji upravljaju prikazivanjem i obradom podataka.

    8Pravilo: JAXPkoristi DOM, SAX i XSLT.

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    16/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    16

    JAX-RPC omoguava kreiranje servis aplikacija koje kombinuje HTTP sa Secury Socket Layer (SSL) Javatehnologijom i Transport Layer Security (TLS) protokolima da omogue autentifikaciju 9. SSL i TLSobezbeuju integritet poruke obezbeenjem enkripcije i autentifikaciju klijenta i servera.

    SOAP transportni protokol

    Klijentski zahtevi(requests) i Web servis odgovori (responses) se prenose pomou SOAP (Simple ObjectAcess Protocol) protokola. SOAP je XML protokol (XML based protocol) koji je zasnovan na HTTP

    protokolu10.SOAP protokol omoguava kompletnu interoperatibilnost izmeu klijenata i Web servisa, kojise mogu izvravati na razliitim platformama i na razliitim lokacijama na internetu.SOAP obrauje poruku koja se prenosi na sledei nain:

    definie se XML omotnica (envelope) koja opisuje ta je u poruci i kako se procesira poruka, ukljuuju se XML pravila ifriranja (encoding rules) da se izraze pojavljivanja podataka raznih

    tipova koji se nalaze u poruci,

    definie se XML konvencija za reprezentovanje zahteva do udaljenog servisa i rezultujuegodgovora.

    WSDL standardni format (WSDL Standard Format)

    Web Services Description Language (WSDL) je standardizovani XML format za opis mrenih servisa(network services). Opis ukljuuje ime servisa, lokaciju servisa i nain komunikacije sa servisom. WSDLopisi servisa mogu se uvati u UDDI registrima i/ili mogu biti publikovani na Web-u.

    c) SOAP sa pridruenim API-jem za Javu (SOAP with Attachments API for Java(SAAJ))

    SOAP sa pridruenim API-jem za Javu (SAAJ) je API niskog nivoa od koga JAX-RPC zavisi. SAAJomoguava proizvoenje i korienje poruka koje odgovaraju SOAP 1.1 specifikaciji i SOAP-u sa

    pridruenim API-jem. SAAJ API se u praksi ne koristi. Umesto njega se koristi JAX-RPC API koji je viegnivoa u odnosu na SAAJ i SOAP.

    d) Java API za XML r egistrovanje (Java API for XML Registr ies(JAXR))

    Java API za XML registrovanje (JAXR) omoguava da se pristupi registrima preko Web-a i da se sauvajurazliite eme (informacije i web servisi) u standardnom poslovnom registru. JAXR omoguava

    povezivanje tih ema. JAXR podrava ebXML i Universal Description, Discovery i Integration (UDDI)standarde registrovanja i publikovanja informacija na internetu. Klijenti mogu da pristupe ovim

    informacijama i web servisima.

    1.8 Pakovanje aplikacija (Packaging Applications)J2EE aplikacija se moe spakovati u Enterprise Archive (EAR) datoteku. EAR je standardna Java Archive(JAR) datoteka koja ima .ear ekstenziju. Korienjem EAR datoteka mogue je spajati vie razliitih J2EEmodula (aplikacija) u novu (sloenu) J2EE aplikaciju, koji takoe moe biti spakovana u EAR datoteku.EAR datoteka sadri J2EE module i opisiva rasporeda (deployment descriptor).Postoje 4 tipa J2EE modula:

    a) EJB modul koji sadre class datoteke za enterprise bean-ove i EJB opisiva rasporeda. EJB modulisu pakovani u JAR datoteke sa .jar ekstenzijom.

    b) Web modul koji sadre servlet class datoteke, JSP datoteke, class datoteke koje koriste Webkomponente i Web aplikacioni opisiva rasporeda. Web moduli su pakovani u JAR datoteke saekstenzijom .war (Web Archive).

    c) Aplikaciono klijentski modul koji sadri class datoteke i aplikaciono klijenstski opisivarasporeda. Aplikaciono klijentski moduli su pakovani kao JAR datoteke sa .jar ekstenzijom.

    d) Resurs adapter moduli koji sadre sve Java interfejse, klase, native biblioteke i drugudokumentaciju, zajedno sa resurs adapter opisivaem rasporeda. Zajedno oni implementiraju

    9Autentifikacija (Authentication) omoguava da se ispita da li neko moe da pristupi infromacijamakoje su zatiene. Informacijekoje se transportuju preko interneta su naroito ranjive tako da je veoma vano da se konfigurie JAX-RPC Web servis da zatiti

    podatke u toku njihovog prenosa.10HTTP je request-response standard za slanje poruka preko interneta.

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    17/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    17

    Connector arhitekturu za pojedinane EIS. Resurs adapter moduli su pakovani u JAR datoteke sa.rar (resource adapter archive) ekstenzijom.

    Kod opisivaa rasporeda informacije su deklarativne. To znai da one mogu biti promenjene bez potrebe dase menja izvorni kod. U runtime-u J2EE server ita opisiva rasporeda i izvodi akcije nad aplikacijom,modulom ili komponentom.

    1.9 Uloge u razvoju J2EE aplikacije

    Razvoj, uvoenje i odravanje J2EE aplikacije se moe podeliti u nekoliko aktivnosti, pri emu je za svakuaktivnost definisano ta treba da se radi, ko treba da radi i ta je rezultat te aktivnosti:a) Kreiranje okruenja za razvoj J2EE aplikacija

    Ko obavlja aktivnost: J2EE provajderi proizvoda (J2EE Product Provider) su kompanije koje prave

    okruenja za razvoj J2EE aplikacija .Rezultat aktivnosti: Okruenja (npr. NetBeans 4.1, Sun-ov aplikacioni server 8,...) za razvoj J2EEaplikacija koja su u u skladu sa J2EE specifikacijom.

    b) Kreiranje alata razvoj, spajanje i pakovanje J2EE aplikacije.

    Ko obavlja aktivnost: Provajder orua (Tool provider)je kompanija ili osoba koja kreira orua za razvoj,spajanje i pakovanje J2EE aplikacije

    Rezultat aktivnosti: Orua za razvoj, spajanje i pakovanje J2EE aplikacije

    c) Kreiranje Web komponenti, EJB-ova, apleta ili aplikacionih klijenata za korienje u J2EE aplikacijama.

    Ko obavlja aktivnost: Provajder aplikacione komponente (Application Component Provider) je

    kompanija ili osoba koja kreira Web komponente, enterprise bean-ove, aplete ili aplikacione klijente za

    korienje u J2EE aplikacijama.

    Za svaki od navedenih elemenata J2EE aplikacije se obavljaju sledee podaktivnosti:

    c1) Kreiranje Web komponenti

    Ko obavlja aktivnost:

    Razvija Web komponenti (Web Component Developer) izvravasledee zadatke kod pravljenja war datoteke :

    Pie i kompajlira servlet izvorni kod. Pie JSP i HTML datoteke. Specificira opisiva rasporeda. Pakuje .class, .jsp i .html datoteke i opisiva rasporeda u war datoteku.

    Rezultat aktivnosti: war datoteka.

    c2) Kreiranje EJB komponenti

    Ko obavlja aktivnost:

    Razvija enterprise bean-a (En terpri se Bean Developer) izvrava sledee zadatke kodpravljenja EJB JAR datoteke koja sadri enterprise bean-ove: Pie i kompajlira izvorni kod Specificira opisiva rasporeda Pakuje .class datoteke i opisiva rasporeda u EJB JAR datotekuRezultat aktivnosti:jar datoteka.

    c3) Kreiranje aplikacionog klijenta

    Ko obavlja aktivnost:

    Razvija aplikacionog klijenta (Application Client Developer) izvrava sledee zadatkekod pravljenja JAR datoteke koja sadri aplikacionog klijenta: Pie i kompajlira izvorni kod.

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    18/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    18

    Specificira opisivaa rasporeda. Pakuje .class datoteke i opisiva rasporeda u JAR datoteku.Rezultat aktivnosti:jar datoteka.

    c4) Kreiranje apleta

    Ko obavlja aktivnost:

    Razvija (Apl et Developer) izvrava sledee zadatkekod pravljenja JAR datoteke koja sadri aplet: Pie i kompajlira aplet. Pie HTML datoteku i povezuje je sa apletom. Specificira opisivaa rasporeda. Pakuje aplet, HTML i opisiva rasporeda u JAR datoteku.Rezultat aktivnosti:jar datoteka.

    d) Spajanje (asembliranje) elemenata u J2EE aplikaciju.

    Ko obavlja aktivnost:Spaja (asembler) aplikacije (Application Assembler)je kompanija ili osoba koja

    prihvata elemente od provajdera komponenti i spaja ih u J2EE aplikaciju. On izvrava sledee zadatke: Spaja JAR i WAR datoteke, koje su kreirane u predhodnim fazama, u J2EE aplikaciju (EAR datoteka) Specificira opisiva rasporeda za J2EE aplikaciju Verifikuje sadraj EAR datoteke shodno J2EE specifikaciji.Rezultat aktivnosti: ear datoteka.

    d) Instaliranje i izvravanje J2EE aplikaciju.

    Ko obavlja aktivnost:Aplikacioni rasporeiva i administrator (Application Deployer and Administrator)

    je kompanija ili osoba koja konfigurie i rasporeuje J2EE aplikaciju, administrira raunarima i mrenominfrastrukturom gde se J2EE aplikacija izvrava i nadgleda runtime okruenje. Pored toga se podeavatransakciona kontrola, atributi zatite i specifiicra se konekcija ka bazama.U toku konfiguracije, rasporeiva sledi instrukcije koje su dobijene od provajdera komponenti da reieksterne zavisnosti, podesi zatitu i dodeli transakcione atribute. Na kraju rasporeiva izvrava aplikaciju,odnosno komponente na serveru (za komponente se generiu odgovarajui kontejneri servera).U sutini on izvrava sledee zadatke:

    Dodaje J2EE aplikaciju (EAR datoteku), koja je kreirana u predhodnoj fazi, do J2EE servera(pridruivanje).

    Konfigurie J2EE aplikaciju, shodno okruenju, modifikovanjem opisivaa rasporeda J2EEaplikacije.

    Verifikuje sadraj EAR datoteke shodno J2EE specifikaciji. Izvravanje J2EE aplikacije na J2EE serveru.

    Rezultat aktivnosti: J2EE aplikacija koja se izvrava na J2EE serveru.

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    19/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    19

    2. Razvoj Web aplikacije

    2.1 Java servleti

    J2EE Web komponente su ili servleti ili strane koje su kreirane korienjem JSP tehnologije (JSP strane).Servleti su Javine klase koje dinamiki procesiraju zahteve i konstruiu odgovore.

    Interakcija izmeu Web klijenta i servletaKlijent alje HTTP zahtev do Web servera. Servlet kontejner(Servlet container)11Web servera konvertujezahtev u HTTPServletRequest objekat. Nakon toga kontejner poziva service() metodu servleta i kao

    argumente mu alje HTTPServletRequest i HTTPServletResponse objekat, koji treba da se napuni sarezultatima izvrenja servleta. Nakon izvrenja servleta HTTPServletResponse objekat se alje nazad dokontejnera koji ga konvertuje u HTTP odgovor i vraa ga nazad do klijenta.

    Uloga kontejnera

    Servlet kontejneri obrauju zahteve koje alju klijenti , prosleuju zahteve do servleta i vraaju odgovor odservleta do klijenta. Implementacija kontejnera kod razliitih J2EE okruenja se moe razlikovati aliinterfejs izmeu kontejnera i servleta je isti za bilo koje J2EE okruenje i ono je odreeno specifikacijomservleta. Kontejner takoe upravlja ivornim ciklusom servleta koji se sastoji iz sledeih koraka:

    Kontejner servleta kreira pojavljivanje (instancu) servleta. Kontejner poziva init() metodu pojavljivanja. Kada kontejner dobije zahtev od klijenta prosleuje ga do servleta pozivajui njegovu service()

    metodu.

    Pre nego to se uniti pojavljivanje, kontejner poziva destroy() metodu. Pojavljivanje se unitava i markira se za mehanizam sakupljanja smea (garbage collection).

    11Servlet kontejner se u literaturi esto naziva mehanizam servleta (servlet engine).

    HTTPServletResponse

    service(HTTPServletRequest,HTTPSer

    vletResponse)

    http://127.0.0.1:8084/ServletKontekst/Servlet

    Klijent Servlet

    kontejner

    Servlet

    HTTP request

    HTTP response

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    20/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    20

    Kontejner mora da obezbedi da:

    service() metoda servleta nee biti pozvana pre nego to se izvri init() metoda servleta. servlet nee biti uniten dok se pre toga ne izvri destroy() metoda servleta.

    Kod tipinog servlet modela. kontejner kreira po jedno pojavljivanje za svaki servlet jedne aplikacije. Neki

    servlet moe pozvati vie klijenata, pri emu se za svakog klijenta pravi posebna nit. U specifikacijiservleta nije odreeno da izvrenje service() metode jedne niti isklljuuje izvrenje service() metode drugeniti. Ukoliko postoji potreba da se obezbedi iskljuivi pristup jedne niti do service() metode servleta tadatreba koristitisynchronized naredbu.

    Uloga service() metode

    Kadaservice() metoda prihvati zahtev od kontejnera ona prepoznaje tip zahteva (GET, POST, HEAD,...) i

    vri preusmeravanje (dispatching) poziva do odgovarajue metode (doGet(), doPosto, doHead()) shodnotipu zahteva. Navedenim metodama se takoe prenosi HTTPServletRequest i HTTPServletResponseobjekti.

    kreiranje pojavljivanja servleta

    HTTPServletResponse

    service(HTTPServletRequest,HTTPSer

    vletResponse)

    http://127.0.0.1:8084/ServletKontekst/Servlet

    Klijent Servlet

    kontejnerServlet

    HTTP request

    HTTP response

    pozivanje init() metode servleta

    pozivanje destroy() metode

    servlet se unitava

    service(HTTPServletRequest,HTTPSer

    vletResponse)

    Servlet

    import java.io.*;

    import javax.servlet.*;

    import javax.servlet.http.*;

    public class Servlet extends HttpServlet {

    protected void doGet(H ttpServletRequest r equest,

    H ttpServletResponse response)

    throws ServletException, IOException {... }

    protected void doPost(H ttpServletRequest r equest,

    H ttpServletResponse response)

    throws ServletException, IOException {... }

    ...

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    21/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    21

    2.1.1 Koraci u razvoju servleta

    Na primeru jednostavnog servleta koji pokazuje pozdravnu poruku bie objanjen proces kreiranja(creating), rasporeivanja (deploying) i izvrenja(executing) Web aplikacije:

    Primer Servlet1: Napraviti HTML dokument koji ce pozvati servlet koji treba klijentu da vrati pozdravnu

    poruku.Pretpostavimo da se servlet nalazi na lokalnoj maini iji je IP jednak 127.0.0.1: 8084

    12

    1. Pravi se programski kod Web komponenti (kreiranje Web aplikacije).a) U datoteci KDobarDan.java se unosi servlet koji treba da prikae pozdravnu poruku:

    import java.io.*;import java.net.*;

    import javax.servlet.*;import javax.servlet.http.*;

    public class KDobarDan1 extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {

    response.setContentType("text/html");PrintWriter out = response.getWriter();out.println("");out.println("");out.println("Servlet");out.println("");out.println("");out.println("Pozdrav za vas prvi servlet!!!");out.println("");out.println("");out.close();

    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {

    processRequest(request, response);}

    }

    b) U datoteci Servlet1.html nalazi se HTML kod koji poziva servlet:

    Primer: Napraviti HTML dokument koji ce pozvati servlet koji ce prikazati pozdravnu poruku:

    Author:Dr Sinisa Vlajic, Faculty of organizational sciences, BelgradeCopyright 2005 All rights reserved.

    2. Pravi se opisiva rasporeda (deployment descriptor) za Web aplikaciju (kreiranje Web aplikacije).a) Datoteka Web.xml predstavlja opisiva rasporeda:

    12Port 8084 je podrazumevani port na kome se podie Web server Net Beans-a.

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    22/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    22

    SDobarDan1KDobarDan1

    SDobarDan1/DobarDan1

    b) Pored navedenog opisivaa rasporeda za Web aplikaciju postoji i Runtime opisiva rasporeda koji senalazi u datoteci context.xml, koja je kod projekta NB4.0 predstavljena preko ekranske forme, a ne preko

    XML koda:

    XML kod dateke context.xml ima sledei sadraj:

    Navedene datoteke su kreirane u projektu ServletPrimer1:

    3. Kompajliraju se Web komponente i pomone klase na koje ukazuju komponente.a) Kompajlira se datoteka KDobarDan1.java.

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    23/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    23

    Ukoliko je datoteka korektno kompajlirana pojavie se sledea poruka:

    4. Aplikacija se pakuje (ovo je opciona mogunost) u rasporedljivu (deployable) jedinicu(rasporeivanje Web aplikacije).

    a) Rasporedljiva jedinica je war datoteka koja se krerira na 2 mogua naina:a1) Poziva se opcija Build Project. U tom sluaju postojee datoteke se pakuju uServletPrimer1.war datoteku. Ukoliko ste pre toga menjali neku Web komponentu (npr. izvorni kod

    servleta), ta promenase nee videtu u war datoteci. Tako da ovu opciju ne preporuujemo.a2) Poziva se opcija Clean and Build Project.

    Pre pakovanja datoteka u war datoteku, se vri brisanje foldera gde se nalaze class javine datoteke ifoldera gde se uva war datoteka.

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    24/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    24

    Nakon toga se kompajliraju java datoteka i prevacuju se class datoteke u folder classes koji je pre toga

    kreiran(folder classes se kreira nakon kreiranja foldera build\web\WEB-INF). Nakon toga se kopiraju

    dateoteke Context.xml, Web.xml i Servlet1.html na odgovarajua mesta unutar build foldera.Kreira se folder dist u kome se uva war datoteka. Na kraju se postojee datoteke pakuju u

    ServletPrimer1.war datoteku koja se prebacuje u folder dist.

    Kao rezultat izvrenja navedene opcije dobija se sledea poruka:init:deps-clean:

    do-clean:

    Deleting directory D:\Kursevi\Java\WebProgramiranje\Servleti\ServletPrimer1\build

    Deleting directory D:\Kursevi\Java\WebProgramiranje\Servleti\ServletPrimer1\dist

    post-clean:

    clean:init:

    deps-jar:Created dir: D:\Kursevi\Java\WebProgramiranje\Servleti\ServletPrimer1\build\web\WEB-INF\classes

    Compiling 1 source file to D:\Kursevi\Java\WebProgramiranje\Servleti\ServletPrimer1\build\web\WEB-INF\classes

    Copying 4 files to D:\Kursevi\Java\WebProgramiranje\Servleti\ServletPrimer1\build\web

    compile:

    pre-dist:compile-jsps:do-dist:

    Created dir: D:\Kursevi\Java\WebProgramiranje\Servleti\ServletPrimer1\dist

    Building jar: D:\Kursevi\Java\WebProgramiranje\Servleti\ServletPrimer1\dist\ServletPrimer1.warpost-dist:

    dist:

    BUILD SUCCESSFUL (total time: 0 seconds)

    5. Aplikacija se postavlja u Web kontejner i izvrava se (izvrenje Web aplikacije) .Poziva se opcija Run/Run Main Project:

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    25/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    25

    Tada se pokree Tomcat Web server i on aktivira Web kontejner koji se povezuje sa Web aplikacijom. Webkontejner se ne vidi eksplicitno u NB4.1 okruenju. On u pozadini prati i kontrolie kako se izvrava Webaplikacija. Web aplikacija se podie na lokalnom hostu na podrazumevanom portu NB4.1 (8084):http://localhost:8084/ServletPrimer1/.

    Kao rezultat izvrenja navedene opcije dobija se sledea poruka:init:

    deps-jar:

    compile:

    compile-jsps:

    run-deploy:

    Starting server Bundled Tomcat (5.0.28)Starting Tomcat process...

    Tomcat server started.

    Incrementally deploying http://localhost:8084/ServletPrimer1Completed incremental distribution of http://localhost:8084/ServletPrimer1

    Incrementally redeploying http://localhost:8084/ServletPrimer1

    deploy?config=file:/D:/Kursevi/Java/WebProgramiranje/Servleti/ServletPrimer1/build/web/META-INF/context.xml&war=file:/D:/Kursevi/Java/WebProgramiranje/Servleti/ServletPrimer1/build/web/

    OK - Deployed application from context file file:/D:/Kursevi/Java/WebProgramiranje/Servleti/ServletPrimer1/build/web/META-

    INF/context.xmlrun-display-browser:

    Browsing: http://localhost:8084/ServletPrimer1/

    run:

    BUILD SUCCESSFUL (total time: 1 minute 6 seconds)

    6. Klijent pristupa URL-u koji referencira na Web aplikaciju.Navedenoj aplikaciji se moe pristupiti na sledea 2 naina ako se pristupa preko lokalne maine:a) http://localhost:8084/ServletPrimer1/

    b) http://127.0.0.1:8084/ServletPrimer1/

    Ukoliko je tekua maina vezana za IP: 147.91.128.54 tada se njoj, preko mree, moe pristupiti pozivomsledee URL adrese:http://127.0.0.1:8084/ServletPrimer1/

    Meutim servletu se obino ne pristupa direktno ve se to radi posredno preko HTML datoteke koja pozivaservlet. U naem primeru se poziva Servlet1.html datoteka koja se nalazi npr. na URL-u:http://127.0.0.1:8189/Servlet1.html)

    http://127.0.0.1:8084/ServletPrimer1/http://127.0.0.1:8084/ServletPrimer1/http://127.0.0.1:8189/Servlet1.htmlhttp://127.0.0.1:8189/Servlet1.htmlhttp://127.0.0.1:8189/Servlet1.htmlhttp://127.0.0.1:8084/ServletPrimer1/
  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    26/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    26

    ili se poziva Servlet1.htmlpreko lokalnog sistema datoteka ako elimo da testiramo aplikaciju. KodNB4.1 to se radi na sledei nain:

    Treba se postaviti na Servlet1.html datoteku, zatim se klikne desno dugme, koje pravi opadajuimeni gde se bira opcija View:

    Nakon toga se dobija ita ispunjen eljenom stranom kojoj je pristupljeno prekolokalnog sistemadirektorijuma.

    a) Nakon toga se klikne dugmePozdravna poruka.Detaljno objanjenje poziva servleta:Unutar datoteke Servlet1.html imamo naredbu koja poziva servlet:

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    27/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    27

    URL naredba se sastoji iz sledeih elemanata: IP adresa sa brojem porta maine na kojoj je podignut Web server(127.0.0.1:8084). Ime konteksta (ServletPrimer1)13unutar Web servera14.

    Ime konteksta se navodi u datoteci Context.xml (runtime opisiva rasporeda):

    Simbolike adrese gde se nalazi servlet (DobarDan1)Simbolika adresa servleta se nalazi u datoteci Web.xml (opisiva rasporeda Web

    aplikacije) iza taga :

    ... SDobarDan1KDobarDan1

    SDobarDan1

    /DobarDan1

    Na simbolikoj adresi DobarDan1 se poziva servlet SDobarDan1 koji poziva klasu

    KDobarDan1.class koja implementira servlet. Na ovaj nain je odvojen pristup do servleta od njegoveimplementacije. Mogue je u web.xml staviti drugu klasu koja implementira servlet a da poziv ostane nepromenjen.

    Odnos izmeu elemenata koji uestvuju u pozivaju izvrenja servleta se vidi na sledeoj slici:

    b) Kao rezultat izvrenja servleta dobija se sledea poruka:

    13Ime konteksta moe ali i ne mora da bude isto kao ime projekta (aplikacije).14Jedan Web server moe da sadri vie konteksta odnosno vie aplikacija.

    URL Serverske maine (127.0.0.1)

    Port na kome je podignut Web server (84)

    Web aplikacija koja je odreena kontekstom (ServletPrimer1)

    Simbolika adresa servleta (DobarDan1)

    Ime servleta (SDobarDan1)

    Klasa koja implementira servlet (KDobarDan1)

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    28/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    28

    2.1.2 Metode slanja zahteva Web serveru

    ita (browser) treba da spakuje podatke koji su prihvaeni preko ekranske forme i da ih prosledi prekoHTTP zahteva (request) do web servera. HTTP zahtev sadri:

    URL (adresa) strane kojoj se eli pristupiti, podatke ukoliko su prihvaeni preko forme i dopunske infromacije zaglavlja (header info), koje se odnose na ita, duinu i tip zahteva.

    Pored URL strane kojoj se pristupa mora se naznaiti i metoda koja e biti koriena pri slanju zahteva. Trinajee koriene metode slanja zahteva su HEAD, GET i POST.HEAD metoda prihvata informacije o dokumentu, ali ne prihvata sadraj samog dokumenta. GET i POSTmetode se koriste kada se eli pozvati web aplikacija. Obadve metode obavljaju isti zadatak, ali to rade narazliite naine.

    GET metodaKada se koristi GET metoda, svi podaci koji su bili uneti preko ekranske forme se dodaju do stringa

    zahteva (request string). Podaci se dodaju korienjem klju=vrednost parova (key=value pairs).

    GET se koristi kao podrazumevana (default) metoda za sve web zahteve. Kada korisnik poziva direktno

    neku stranu preko URL-a ita podrazumeva da je u pitanju GET metoda slanja zahteva. Postojepotencijalno dva problema kada se koristi GET metoda:

    a) ukoliko se poziva neka strana, koja je ve bila pozvana, tada se moe desiti da je stara verzijasauvana u keu i da se ona pri pozivu prikae na ekranu.

    b) Iznos podataka koji se moe poslati je ogranien.POST metoda

    Kada se koristi POST metoda, svi podaci koji su bili uneti preko ekranske forme se pakuju i unose u telo

    zahteva (request body). Telo zahteva je ulazna datoteka za server koji je ita i u njoj prepoznaje imenapromenljivih i njihove vrednosti. Kod POST metode ne postoji ogranienje u veliini podataka koji e bitiposlati do servera.

    Primer ServletGetPost: Napraviti HTML dokument koji ce pozvati servlet (preko GET metode) koji ceprikazati ime i adresu onoga ko ga je pozvao.

    Pravi se HTML datoteku, npr. ServletGetPost.html koja ima sledei izgled:

    Primer: Napraviti HTML dokument koji ce pozvati servlet (preko GET metode) koji ce prikazati ime i adresu onoga ko je pozvao

    servlet:

    Ime



    Adresa

    Author:

    Dr Sinisa Vlajic, Faculty of organizational sciences, Belgrade

    Copyright 2005 All rights reserved.

    Servlet koji se poziva nalazi se u datoteci KServletGetPost.java:

    import java.io.*;

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    29/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    29

    import javax.servlet.*;import javax.servlet.http.*;

    public class KServletGetPost extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)

    throws ServletException, IOException {

    response.setContentType("text/html");PrintWriter out = response.getWriter();

    String Ime = request.getParameter("Ime");

    String Adresa = request.getParameter("Adresa");

    out.println("");

    out.println("");

    out.println("ServletGetPost");

    out.println("");

    out.println("");

    if (request.getMethod().equals("POST")==true){ out.println(" Ovo je post metoda
    ");

    }

    if (request.getMethod().equals("GET") ==true)

    { out.println(" Ovo je get metoda
    ");

    }out.println("");

    out.println(" Do servleta su stigli sledeci podaci:" +"

    Ime: " + Ime + "

    Adresa: " + Adresa);

    out.println("");

    out.println("");

    out.println("");

    out.close();

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response)

    throws ServletException, IOException {processRequest(request, response);

    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {

    processRequest(request, response);

    }

    }

    Kada se poziva sevlet preko HTML strane (nakon punjenja poljaIme iAdresa se pritiska dugmePozovi

    servlet):

    Tada se moe primetiti kako se vrednosti unetih podataka dodaju do stringa zahteva:

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    30/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    30

    Ukoliko bi promenili datoteku ServletGetPost.html tako da umesto GET metode izaberemo POST metodu:

    Primer: Napraviti HTML dokument koji ce pozvati servlet (preko GET metode) koji ce prikazati ime i adresu onoga ko je pozvao

    servlet:

    ...

    tada bi servlet kao rezultat dao:

    Iz navedenog moe da se vidi da string zahteva nema vrednosti podataka koje alje. To je sakriveno udatoteci koja se alje do servera.

    Jo jednom ponavljamo, rezultat izvrenja servleta je potpuno isti nezavisno od toga koja je metodaprenosa zahteva koristiena.

    Vana napomena: Servleti isto kao i JSP strane kao rezultat njihovog izvrenja daju HTML dokument kojiprosleuju do korisnika.

    Zadatak ZServletGetPost: Napraviti HTML dokument koji ce pozvati servlet (preko POST metode) kome e

    proslediti ime. Servlet treba da prikae ime i poruku o duini imena. Pretpostavimo da se servlet nalazi nalokalnoj maini iji je IP jednak 127.0.0.1: 8084.

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    31/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    31

    Primer servleta koji obradjuje informacije o poslovnom partneru

    Korisniki zahtev: Napraviti HTML dokument preko koga e biti prihvaeni lini podaci poslovnogpartnera: Ime i prezime, Adresa, E-mail, Telefon, Napomena, Zanimanje, Predznanje Jave. Navedeni

    podaci treba da budu poslati do servleta koji e ih prihvatiti i prikazati odgovarajui izvetaj.

    Prave se sledee datoteke:a) Servlet2.html koja e da prihvati podatke i da pozove servlet.

    Primer: Napraviti HTML dokument preko koga ce biti prihvaceni licni

    podaci poslovnog partnera:
    Ime i prezime, Adresa, E-mail, Telefon, Napomena, Zanimanje, PredznanjeJave.

    OSNOVNI PODACI O POSLOVNOM PARTNERU:

    Ime

    Adresa

    E-mail

    Telefon

    Zanimanje

    StudentStudentProfesorProgramerSluzbenik

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    32/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    32

    (Drugo)

    Predznanje Jave



    Nema

    MaloSrednjeVisoko



    Napomena

    Da li elite da budete sacuvani u bazi?

    Author:Dr Sinisa Vlajic, Faculty of organizational sciences, BelgradeCopyright 2005 All rights reserved.

    Navedena datoteke je detaljno objanjena preko komentara koji su podvueni i oznaeni sa .

    b) KServlet2.java koja e da implementira servlet.import java.io.*;import java.net.*;

    // Paketi koji sadrze klase potrebne za rad sa servletima.import javax.servlet.*;import javax.servlet.http.*;

    // Klasa koja implementira servlet.public class KServlet2 extends HttpServlet {

    // Metoda koja obradjuje request objekat (cita vrednosti parametara), obradjuje parametre// i puni response objekat sa vrednostima koje ce biti poslate klijentu.protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {

    // Setovanje response objekta na text/html. To znaci da ce response objekat da// bude ispunjen sa HTML kodom.response.setContentType("text/html");

    // Kreiranje izlaznog objekta out, koji ce da prima podatke i njegovo povezivanje// sa response objektom. Sve sto bude poslato na out objekat ce biti preusmereno u// response objekat.PrintWriter out = response.getWriter();

    // Citanje vrednosti parametara iz request objekta i punjenje odgovarajucih string

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    33/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    33

    // objekata sa tom vrednoscu.String Ime = request.getParameter("Ime");String Adresa = request.getParameter("Adresa");String Email = request.getParameter("E-mail");String Telefon = request.getParameter("Telefon");String Zanimanje = request.getParameter("Zanimanje");String Predznanje = request.getParameter("Predznanje");String Napomena = request.getParameter("Napomena");

    String CuvaUBazi = request.getParameter("CuvaUBazi");

    // slanje html koda u izlazni objekat.out.println("");out.println("");out.println("Servlet2");out.println("");out.println("");out.println("");out.println(" Do servleta su stigli sledeci podaci:" +"

    Ime: " + Ime + "

    Adresa: " + Adresa + "

    E-mail: " + Email +"

    Predznanje: " + Predznanje + "

    Telefon: " + Telefon + "

    Zanimanje: " + Zanimanje + "

    Napomena: " + Napomena + "

    Cuva u bazi: " + CuvaUBazi + "

    ");out.println("");out.println("");out.println("");

    // zatvaranje izlaznog objekta.

    out.close();}

    }

    c) web.xml koja je opisiva rasporeda aplikacije

    Servlet2KServlet2

    Servlet2/Servlet2

    d) Context.xml koji je runtime opisiva rasporeda

    2.1.3 Obrada izuzetaka kod servleta

    Izuzetak predstavlja sluaj koji se deava u toku izvrenja programa koji moe da poremeti normalan radprograma.

    Izuzetke mogu generisati:

    a) metode postojeih Javinih klasa ilib) metode korisnikih klasa.

    Izuzeci se uglavnom javljaju onda kada se desi neka greka u programu. U tom smislu postoje 4 tipamoguih greaka:

    Greke pri unosu podataka (User input errors) Greke koje su vezane za rad hardvera raunara (Device errors) npr. flopi disk ne ita dobro

    podatke, tampa nije ukljueni spreman za rad.

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    34/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    34

    Greke koje su vezane za razna fizika ogranienja disk je pun i ne moe da pamti nove podatke,raspoloiva memorija je nedovoljna za izvrenje programa (Physical limitations)

    Greke kod izvrenja metoda programa (Code errors).Kada se desi neka greka u programu, metoda u kojoj se desila greka pravi (baca) izuzetak koji se odnosina tu greku. Izuzetak se zatim hvata (catch) i obrauje. Mesta u programu gde se hvata greka, nazivaju setake presretanja greaka (error-trapping).

    Ukoliko se u programu desi izuzetak koji ne moe da se obradi korisnikim programom, pokree sestandardni Javin obraiva koji prikazuje:

    tekst sa opisom izuzetka i stak pozvanih metoda u trenutku deavanja izuzetka.

    Na kraju standardni obraiva prekida izvrenje programa.

    Opti oblik generisanja i obrade greke (try-catch par) je:try

    { // deo programa u kome se oekuje pojava izuzetaka

    } catch(Exception e)

    { // naredbe koje obradjuju izuzetak}

    U primeru koji sledi:

    try { broj1 = stringToFloat(request.getParameter("Broj1"));

    broj2 = stringToFloat(request.getParameter("Broj2"));

    } catch(Exception e) {h.add(HTML.NORMAL, "GRESKA KOD UNOSA BROJEVA!!!",true);

    out.println(h.prikaziStranu()); out.close(); return 0;}

    generisae se izuzeci ukoliko podaci koji su prihvaeni preko ekranske forme nisu brojevi.

    Nakon obrade greke program nastavlja normalno da se izvrava (u suprotnom ako se ne obradi, kao to jemalopre reeno, prekida se izvrenje programa). Ukoliko sezna da e u okviru metode neke klase da budenapravljen izuzetak, koji nee biti obraen u toj metodi, potpis metode se proiruje sa naredbom throws. Izanaredbe throws se navode imena klasa oekivanih izuzetaka koji nee biti obraeni u toj metodi. Na primerklasa doPost(...) objavljuje preko throws da je mogue da e se desiti izuzeci ServletException iliIOException, koji u metodi nee biti obraeni:

    protected void doPost(HttpServletRequest request, HttpServletResponse response)

    throws ServletExcept ion, IOExcept ion

    Ukoliko postoji potreba u programu se mogu praviti (bacati - throw) izuzeci pomou naredbe throw.

    Mogue je praviti sopstvene klase izuzetaka. Ono to predstavlja osnovu svake takve klase je klasaException. To znai da se pri pravljenju korisnike klase izuzetka nasleuje klasa Exception. Svakiizuzetak koji se napravi u programu mora se obraditi inae e program prekinuti da se izvrava. U svom standardnom paketujava.lang, Java definie vie klasa izuzetaka.

    Pitanja:

    1. Da li se generisani (baeni) izuzetak mora obraditi?2. ta se dogaa ukoliko se ne obradi izuzetak?3. Kako se oglaava izuzetak u metodi?

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    35/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    35

    Primer obrade izuzetaka kod servleta

    Korisniki zahtev Servlet3: Napraviti HTML dokument preko koga e biti prihvaena dva broja. Navedenibrojevi treba da budu poslati do servleta koji e ih prihvatiti, izraunati njihov zbir i prikazatiodgovarajui izvetaj. Obezbediti obradu izuzetaka koji se mogu desiti ukoliko format brojeva koji su

    poslati nije odgovarajui.

    Prave se sledee datoteke:a) Servlet3.html koja e da prihvati podatke i da pozove servlet.

    Primer: Napraviti HTML dokument preko koga e biti prihvaena dva broja koji treba da se saberu.

    ZBIR DVA BROJA:

    Broj1

    Broj2

    Author: Dr Sinisa Vlajic, Faculty of organizational sciences, Belgrade Copyright 2005 All rightsreserved.

    b) Servlet3.java koja e da implementira servlet.

    import java.net.*;import java.text.*;import java.io.*;import WebKlase.*;

    import javax.servlet.*;import javax.servlet.http.*;

    public class Servlet3 extends HttpServlet {

    protected int doPost(HttpServletRequest request, HttpServletResponse response)// Objavljivanje izuzetaka koji nee biti obraeni.throws ServletExcept ion, IOExcept ion{

    response.setContentType("text/html");

    PrintWriter out = response.getWriter();

    double broj1=0;double broj2=0;HTML h = new HTML("Zbir brojeva:");

    // Generisanje izuzetka ukoliko format parametara Broj1 i Broj2 nije odgovarajui.try {

    broj1 = strin gToFloat(request.getParam eter("Bro j1"));

    broj2 = strin gToFloat(request.getParam eter("Bro j2"));

    } ca tc h (Ex cepti on e) {h .ad d(HTML .NORMAL, "GRESKA KOD UNOSA BROJEVA !! !" ,t ru e);

    out.prin tln(h.prikaziStranu ()); out.clo se(); return 0;}

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    36/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    36

    double zbir = broj1 + broj2;DecimalFormat df = new DecimalFormat(".###");

    h.add(HTML.HEADING,"ZBIR DVA BROJA:",false);h.add(HTML.LINE,"",false);h.add(HTML.LINE,"",true);

    try {h.add(HTML.NORMAL, "Broj 1: " + df.format(broj1),true);

    h.add(HTML.NORMAL, "Broj 2: " + df.format(broj2),true);h.add(HTML.NORMAL, "Zbir brojeva: " + df.format(zbir),true);}

    catch(Exception e) {h.add(HTML.NORMAL, "GRESKA KOD FORMATIRANJA BROJEVA!!!",true);out.println(h.prikaziStranu()); out.close(); return 0;}

    h.add(HTML.LINE,"",true);h.add(HTML.AUTOR,"",false);out.println(h.prikaziStranu());out.close();return 1;

    }

    public static float stringToFloat(String ulazniString) throws NumberFormatException{ Float f = new Float(ulazniString);return f.floatValue();

    }

    }

    c) web.xml koja je opisiva rasporeda aplikacije

    Servlet3Servlet3

    Servlet3/Servlet3

    d) Context.xml koji je runtime opisiva rasporeda

    d) Pored navedenih datoteka napravljena je jo jedna datoteka HTML.java u kojoj se uva klasa HTMLkoja pomae da se pojednostavi pisanje HTML koda. Ona je izdvojena kao nezavisna komponenta ikao takva je ukljuena u ovu aplikaciju. Ona ima sledei sadraj:

    // Klasa koja olaksava pisanje HTML koda. Pojedine naredbe HTML koda su svedene// na metode klase HTML.public class HTML

    {// Definisanje konstanti,koje ce odrediti HTML naredbe koje ce biti izvrsene.public static final int NORMAL = 0;public static final int HEADING = 1;public static final int LINE = 2;public static final int AUTOR = 3;public static final int POZIVJSP = 4;

    // Bafer koji se puni sa HTMl kodom.public StringBuffer buf;

    // Konstruktor metoda koja puni bafere sa HTML zaglavljem i naslovom.

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    37/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    37

    public HTML(String naslov){buf = new StringBuffer(4096);this.buf.append("");this.buf.append(naslov);this.buf.append("");

    }

    // Metoda koja u zavisnosti od parametra stil puni bafer sa odredjenim HTNL kodom.public void add(int stil, String tekst, boolean sledecired){

    switch(stil){

    // Puni se bafer sa tekstom koji je poslat.case NORMAL: this.buf.append(tekst);

    break;// Puni se bafer sa tekstom koji se odnosi na zaglavlje.case HEADING: this.buf.append("");

    this.buf.append(tekst);this.buf.append("");break;

    // Puni se bafer sa znakom koji ukazuje na novu podvucenu liniju.case LINE: this.buf.append("");

    break;

    // Puni se bafer sa informacijama o autoru programa.case AUTOR:

    this.buf.append("");this.buf.append("Author: Dr Sinisa Vlajic, Faculty of organizational sciences, Belgrade; Copyright 2005

    All rights reserved");break;

    // Puni se bafer sa pozivom zeljene jsp strane.case POZIVJSP:this.buf.append("");

    break;

    default: break;}

    //
    dodaje prazan redif (sledecired){ this.buf.append("
    ");

    }}

    // Genericka metoda za poziv servleta.public void add(String IP, String MetodaPrenosa, String poravnjanje, String tipDugmeta, String tekstDugmeta,StringnevidljivoPolje)

    { this.buf.append("

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    38/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    38

    2.1.4 Kreiranje biblioteke Javinih klasa i njeno povezivanje sa Web aplikacijom

    Biblioteka klasa sadri klase koje se mogu ukljuiti u bilo koju aplikaciju. Objasniemo preciznu procedurukreiranja biblioteke Javinih klasa i proceduru povezivanja biblioteke klasa sa Web aplikacijom.

    Kreir anje biblioteke Javinih kl asa

    Kod NB4.1 biblioteka klasa se pravi na sledei nain:a) Otvora se novi projekat.

    b) Bira se Java Class Library projekat. Pritiska se dugme Nextkoje je na dnu otvorene forme.

    c)

    Unosi se ime projekta (HTML). Pritiska se dugmeFinishkoje je na dnu otvorene forme.

    d) Kreira se nova klasa.

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    39/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    39

    e) Unosi se ime nove klase(HTML). Pritiska se dugmeFinishkoje je na dnu otvorene forme.

    f) Programira se klasa HTML.

    g) Izborom opcije Clean and Build Project se kompajlira klasa i pravi seHTML.jar datoteka.

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    40/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    40

    DatotekaHTML.jarse nalazi u folderu dist u odnosu na osnovni folderHTML.

    h) Bira se Tools/Library Manager

    i) Pritiska se dugmeNew Library

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    41/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    41

    j) Unosi se ime nove biblioteke (HTML).

    Pritiska se dugme OK i tada se dobija:

    k) Pritiska se dugme Add JAR/Folder.

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    42/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    42

    l) Bira se folder gde se nalazi HTML.jar datoteka. Pritiska se dugme Add JAR/Folder.

    Dobija se forma gde se vidi da je uneta nova biblioteka (HTML) sa putanjom do HTML.jar datoteke u kojoj

    se nalazi klasa HTML.class. Na kraju se pritiska dugme OK kojim se potvruje da je kreirana novabiblioteka.

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    43/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    43

    Povezivanje aplikacije sa bibli otekom klasa

    Kod NB4.1 biblioteka klasa se povezuje sa Web aplikacijom na sledei nain:

    a) Bira se opcijaFile/Open Project.

    b) Otvara se postojei projekat (ServletPrimer3). Prvo se selektuje a zatim se klike dugme OpenProject Folder.

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    44/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    44

    c) Bira se projekat (ServletPrimer3) i pritiska se desni klik. Bira se opcija Properties.

    d) Bira se opcija Compiling Sources.Nakon toga se pritiska dugmeAdd Library.

    e) Bira se eljena bibiloteka. Pritiska se dugmeAdd Library.

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    45/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    45

    f) Pritiska se dugme OK da bi se potvrdilo povezivanje aplikacije saHTMLbibliotekom klasa.

    Zadatak ZPovWASKom1: Napraviti sopstveni primer koji e povezati postojeu Web aplikaciju sa novombibliotekom klasa.

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    46/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    46

    2.1.5 Sesije

    Postoje dva tipa internet komunikacionih protokola: Stateless i Stateful. Oni se razlikuju po nainuuspostavljanja konekcije izmeu klijenta i servera. Telnet i FTP , npr. koriste stateful tip protokola.Scenariostateful tipa protokola je sledei:

    a)

    Klijent se konektuje na server.b) Klijent izvrava seriju operacija preko konekcije.c) Klijent prekida konekciju (diskonekcija) sa serverom.

    Dokle god postoji konekcija izmeu klijenta i servera, za stateful tip protokola, server moe da prihvata igrupie sve zahteve jednog klijenta15. U internet argonu, za navedeni sluaj, se kae da konekcija imastanje. To znai da server pamti ko je klijent i ta je od uradio od trenutka uspostavljanja konekcije.

    Kod HTTP-a je statelessprotokol koji je zasnovan na zahtev-odgovor(request-responsemodel) modelu16.

    To znai da je svaki parzahtev-odgovor izolovana transakcija. Kod navedenog tipa protokola server ne znada li serija zahteva dolazi od istog ili od razliitih klijenata. Server takoe ne zna da li su zahtevi na nekinain meusobno povezani ili ne. Kada se pravi Web aplikacija o navedenom nedostatku zahtev-odgovormodela mora da se vodi rauna. To znai da Web aplikacija treba da odri stanje klijenta na serveru,ukoliko postoji objektivna potreba za tim.

    Scenariostateless tipa protokola je sledei:a) Klijent se konektuje na server i alje mu jedan zahtev.b) Server izvrava zahtev i alje odgovor.c) Klijent prekida konekciju sa serverom.

    Sesija se moe definisati kao serija povezanih interakcija, koja se deava u nekom periodu vremena,izmeu jednog klijenta i web servera. Sesija moe da sadri vie zahteva koji su upueni do istog servletaili se zahtevi mogu poslati do razliitih web komponenti iste web aplikacije.Poto je HTTP stateless protokol, web server ne zna sa kojom sesijom komunicira. Postoje dva naina daon sazna koja je to sesija:

    1) Svaki put kada klijent alje zahtev on treba da se identifikuje. Tada se obraujupodaci (pamte i itaju) koji su povezani sa tim klijentom. Podaci se uvaju u nekomskladitu podataka.

    2) Server alje klijentu podatke za identifikaciju. Klijent svaki put kada postavlja zahtevserveru alje te podatke koji ga identifikuju.

    Odravanje stanja klijenta na serveru je poznato po terminu praenje sesije (session tracking). Postojinekoliko pristupa koji se koriste kod praenja sesije:

    a) Kreiranje sakrivenih polja forme koji sadre podatke.b) URL-a ukljuuje dopunske parametre da identifikuje sesiju.c) Korienje kolaia (cookies).d) Korienje odreenih metoda Servlet API-a.

    15

    Analogija sa programiranjem: Kada program (konekcija) pone da se izvrava on ima pristup do globalnih promenljivih (stanjekonekcije), kojima moe u vremenu da menja vrednost (vie operacija moe da se izvri). Kada se zavri program (prekid konekcije),gubi se informacija o vrednostima globalnih promenljivih(gubi se stanje konekcije).16Analogija sa programiranjem: Kada program pone da se izvrava on moe da pozove neku metodu (konekcija). Kada metoda

    pone da se izvrava program ima pristup do lokalnih promenljivih (stanje konekcije). Kada se metoda izvri (prekid konekcije),program gubi informaciju o vrednostima lokalnih promenljivih. To znai da kada program opet pozove metodu ( nova konekcija)vrednost lokalnih promenljivih nee biti sauvana.U programskom jeziku C stavljamo static kljunu re isped imena lokalne promenljive, kada elimo da obezbedimo da lokalna

    promenljiva sauva svoju vrednosti pri svakom sledeem pozivu funkcije u kojoj se ona nalazi. Navedeni efekat treba i kod Webaplikacije da se obezbedi ukoliko se eli pratiti stanje sesije.

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    47/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    47

    Praenje sesija preko servleta

    Sesija se pokree identifikovanjem klijenta koji je pozvao servlet (jedna sesija je vezana za jednogklijenta). Poetno stanje sesije je odreeno identifikacionim podacima klijenta. Nakon toga klijent aljezahtev koji moe da promeni poetno stanje u neko novo (tekue) stanje sesije. Svaki sledei poziv moeda promeni tekue stanje u neko novo stanje sesije. Trajanje sesije je odreeno stanjem sesije. Kadasesija izgubi stanje tada ona prestaje da se izvrava (prestaje da postoji).

    Server identifkuje sesiju i prati njeno stanje na sledei nain:Klijent alje podatke za identifikaciju do servleta. Podaci za identifikaciju klijenta se mogu poslati na 2naina:

    a. Klijent preko stringa zahteva alje podatke za identifikaciju, koji su fiksirani u URL -u.(Primer ServletSesURL1).

    b. Klijent unosi identifikacione podatke preko forme za logovanje a zatim alje podatke zaidentifikaciju do servera preko post metode(Primer ServletSesLog1).

    Kada server prihvati zahtev, on preko podataka identifikacije zna ko je klijent, odnosno zna koja je sesija

    aktivna. Stanje sesije je vezano za identifikacione podatke klijenta koji se povezuje sa servletom. Pored

    toga stanje sesije moe biti odreeno i dopunskim podacima koje generie klijent i/ili servlet.Servlet nakon identifikovanja klijenta, u tekuoj sesiji, moe da mu poalje nove identifikacione podatke,koji e biti validni, dok bude aktivna tekua sesija. Nove identifikacione podatke17servlet alje klijentu nanekoliko naina:

    o Prepisuje (rewriti ng) URL sa HTML strane koja ga poziva, dodajui na njegov krajnove identifikacione podatke klijenta(Primer ServletSesURL2).o Puni HTML stranu koja ga poziva sa sakrivenim poljima za identifikaciju(Primer

    ServletSesSakrPolja1).

    o alje kolaie (cookies) do klijenta koji slue za novu identifikaciju klijenta(PrimerServletSesKolacic1).

    o Servlet kreira sesiju (daje joj broj) i alje ga do klijenta za novu identifikacijuklijentaPrimer (Primer: ServletSesObjekat1).

    Stanje sesije se moe uvati transijentno i perzistentno. Transijentnost stanja sesije se obezbeuje nanekoliko naina:

    o Servlet salje nevidljiva polja, koja uvaju stanje sesije, do klijenta(PrimerServletSesSakrPolja2).

    o Kada servlet kreira sesiju (objekat sesije) on moe preko nje da uva stanje sesije (Primer:ServletSesObjekat1).

    Perzistentnost stanja sesije se obezbeuje preko:o Datoteke ili baze podataka(Primer ServletSesDat1, ServletSesBP1).o Servleta koji generiu i alju kolaie, koja uvaju stanje sesije, do klijenta(Primer

    ServletSesKolacic2).

    Kada se stanje uva transijentno trajanje sesije je ogranieno vremenom trajanja identifikacionih podatakaklijenta i izvravanjem itaa koji je pozvao servlet. Kada se ita zatvori stanje sesije se gubi. Kada sestanje uva perzistentno trajanje sesije je ogranieno vremenom trajanja identifikacionih podataka klijenta,vremenom trajanja kolaia koji su poslati do klijenta i dostupnou skladita podataka koja uvaju stanjesesije.

    17Novi identifikacioni podaci mogu da odrede oblast delovanja klijenta.

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    48/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    48

    Primer ServletSesLog1

    Korisniki zahtev: Napraviti HTML dokument preko koga e klijent da poalje svoj identifikacionepodatke (korisnicko ime i lozinku) do servera.

    Prave se sledee datoteke:e) ServletSesLog1.html koja e da prihvati podatke i da pozove servlet.

    Korisnicki zahtev:Napraviti HTML dokument preko koga ce klijent da poalje svoj identifikacione podatke (korisnickoime i lozinku) do servera. Identifikacione podatke klijent treba da unosi preko forme za logovanje.

    IDENTIFIKACIONI PODACI

    Korisnicko ime:

    Lozinka:



    Author: Dr Sinisa Vlajic, Faculty of organizational sciences, BelgradeCopyright 2005 All rights reserved.

    f) ServletSesLog1.java koja e da implementira servlet.import java.io.*;import java.net.*;

    import javax.servlet.*;

    import javax.servlet.http.*;

    public class ServletSesLog1 extends HttpServlet {// Atributi servletaHTML h = new HTML("Unos identifikacionih podataka novog korisnika:");PrintWriter out;Korisnik kor[];

    // Metode setvletaprotected in t o bradi(HttpServletRequest request, HttpServletRespons e respons e)

    throws ServletException, IOException{ // Kreiranje klijenata koji se mogu povezati (ulogovati) sa servletom.kor = new Korisnik [3] ;

    kor[0]=new Korisnik(" pera","121");

    kor[1]=new Korisnik("m i le","122");

    kor[2]=new Korisnik(" laza","123");

    response.setContentType("text/html");out = response.getWriter();

    // Prihvatanje parametara koje je poslao klijent.Str ing ImeKorisnika = request.getParameter("ImeKorisnika");

    Str ing Lozinka = r equest.getParameter("L ozinka");

    h.add(HTML.HEADING,"IDENTIFIKOVANJE KORISNIKA:",false);h.add(HTML.LINE,"",false);

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    49/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    49

    // Ukoliko klijent posalje prazna polja tada ce ga servlet odbiti sa odgovarajucim upozorenjem.i f ((ImeKorisn ika.equals("" )) || (Lozinka.equals(" ")))

    { h.add(HTML.NORMAL," Unesite ime korisnik a ili lozinku!!!" ,true); out.prin tln(h.prikaziStranu ()); return 0;}

    // Polazi se od pretpostavke da klijent koji se loguje ne postoji.boolean signal = false;

    for(int i =0; i

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    50/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    50

    Primer ServletSesURL2

    Korisniki zahtev: Napraviti HTML dokument preko koga e klijent da se povee sa servletom koji treba daprepie (rewriting) URL sa HTML strane koja ga poziva, dodajui na njegov kraj poziv drugog servleta inove identifikacione podatke klijenta.

    Prave se sledee datoteke:a) ServletSesURL2.html koja e da pozove servlet.

    Napraviti HTML dokument preko koga ce klijent da se povee sa servletom koji treba da prepie (rewriting) URL saHTML strane koja ga poziva,dodajuci na njegov kraj poziv novog servleta i nove identifikacione podatke klijenta.

    b) ServletSesURL2.java koja e da implementira servlet koji se poziva preko HTML strane.

    import java.io.*;

    import java.net.*;import javax.servlet.*;import javax.servlet.http.*;.

    public class ServletSesURL2 extends HttpServlet{

    HTML h = new HTML("Prepisivanje URL-a sa HTML strane koja poziva servlet");PrintWriter out;

    protected int obradi(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException {

    String ImeKorisnika;response.setContentType("text/html");PrintWriter out = response.getWriter();

    ImeKorisnika = request.getParameter("ImeKorisnika");

    i f (ImeKor isnik a.equals("pera" ) == true)

    { h.add(HTML.NORMAL, "Korisnik ce biti autorizovan", true);// Prepisivanje URL- sa HTML strane koja poziva servlet.h.add("http://127.0.0.1:8084/ServletSesURL2/ServletSesURL21?ImeKorisnika=laza","POST",

    " lef t" ," submit" ,"Pozovi servlet","") ;

    }else{ h.add(HTML.NORMAL, "Korisnik nije autorizovan", true); }

    h.add(HTML.LINE,"",true); h.add(HTML.AUTOR,"",false);out.println(h.prikaziStranu()); out.close();return 1;

    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {obradi(request, response);

    }

    }

    c) ServletSesURL21.java koja e da implementira servlet koji se poziva preko HTML strane koju jegenerisao servlet ServletSesURL2.

    import java.io.*;import java.net.*;

  • 7/22/2019 Razvoj Web Aplikacija Koriscenjem J2EE Tehnologije

    51/111

    RAZVOJ WEB APLIKACIJA KORIENJEM J2EE TEHNOLOGIJE

    51

    import javax.servlet.*;import javax.servlet.http.*;

    public class ServletSesURL21 extends HttpServlet {

    HTML h = new HTML("Prepisivanje URL-a sa HTML strane koja poziva servlet:");PrintWriter out;

    protected int obradi(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {

    String ImeKorisnika;response.setContentType("text/html");PrintWriter out = response.getWriter();

    ImeKorisnika = request.getParameter("ImeKorisnika");

    if (ImeKorisnika.equals("laza") == true){ h.add(HTML.NORMAL, "Korisnik je autorizovan", true);

    }else{ h.add(HTML.NORMAL, "Korisnik nije autorizovan", true);

    }

    // Ponovno generisanje URL-a koji ce da pozove tekuci servlet.h.add("h ttp://127.0.0.1:8084/ServletSesURL2/ServletSesURL21?ImeKo risnik a=laza" , " POST",

    " lef t" ,"s ubmit" ,"Pozovi servlet","") ;

    h.add(HTML.LINE,"",true);h.add(HTML.AUTOR,"",false);out.println(h.prikaziStranu());out.close();return 1;

    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {obradi(request, response);

    }

    }

    h) web.xml - opisiva rasporeda aplikacije

    ServletSesURL2

    ServletSesURL2

    ServletSesURL21

    ServletSesURL21

    ServletSesURL2

    /ServletSesURL2ServletSesURL21

    /ServletSesURL21

  • 7/22/2019