JSP Prvi Deo

Embed Size (px)

DESCRIPTION

Java Server Pages - basics

Citation preview

  • 10.4.2012

    Informacioni sistemi 2, PMF, Novi Sad 1

    Java Server Pages JSP

    - prvi deo -

    JSP

    JSP-Java Server Pages

    JSP tehnologija omogudava generisanje statikog i dinamikog HTTP sadraja

    JSP je obina Web stranica koja u sebi ima ugraen Java kod

    Ekstenzija fajla koji sadri JSP kod je .jsp

    JSP predstavlja proirenje Java Servlet tehnologije

  • 10.4.2012

    Informacioni sistemi 2, PMF, Novi Sad 2

    Nedostaci servlet tehnologije

    Dizajn stranica (HTML) i programska obrada (Java) su pomeani u istim datotekama

    Teko je razdvojiti funkcije dizajnera i programera

    Svaka promena u izgledu stranice zahteva kompajliranje servleta

    Osobine JSP tehnologije

    Write once, run anywhere

    Razdvajanje uloge programera i dizajnera

    Odvajanje statikog i dinamikog dela

    Dobra podranost alatima

    Upotreba ved postojedih komponenti i biblioteka

    Struktuiranje srednjeg sloja

  • 10.4.2012

    Informacioni sistemi 2, PMF, Novi Sad 3

    JSP

    MVC arhitektura

    JSP - View

    Java Servlet - Controller

    U realnim Web aplikacijama JSP i Servlet moraju da rade zajedno sa ostalim Web komponentama

    ta je JSP strana? JSP strana je tekstualni dokument koji opisuje kako treba

    obraditi zahtev da bi se generisao odgovor

    JSP tehnologija omogudava generisanje statikog i dinamikog sadraja

    Za generisanje dinamikog sadraja web strane koriste se jsp tagovi

    Za dizajniranje izgleda strane koriste se HTML tagovi.

    Web aplikacija se pakuje u arhivsku datoteku .war i kao takva se moe isporuiti na bilo koji server, koji podrava jsp tehnologiju (Apache web server, Microsoft IIS).

  • 10.4.2012

    Informacioni sistemi 2, PMF, Novi Sad 4

    JSP ideja

    HTML + dinamiki elementi

    ...

    Dobrodoli,

    Danas je .

    ...

    JSP realizacija

    JSP tehnologija predstavlja nadogradnju Servlet tehnologije

    JSP maina interpretira jsp tagove i generie Java Servlet

  • 10.4.2012

    Informacioni sistemi 2, PMF, Novi Sad 5

    JSP realizacija

    ...

    Dobrodoli,

    Danas je .

    ...

    public class SomeServlet extends ... {

    public void _jspService(...) {

    ...

    out.println();

    ...

    }

    }

    JSP stanica Java Servlet

    JSP realizacija

    Dobijeni servlet se kompajlira i poziva

    Rezultat njegovog izvravanja je rezultat izvravanja JSP stranice

    Kod slededih poziva iste stranice, web server poziva odgovarajudi servlet (ne kompajlira iznova jsp stranicu)

    Generisanje servleta, njegovo kompajliranje i pozivanje je zadatak servlet containera

  • 10.4.2012

    Informacioni sistemi 2, PMF, Novi Sad 6

    ivotni vek JSP stranice

    public void jspInit() slian je init() metodu klase Servlet

    ovaj metod se izvrava samo jednom pri uitavanja JSP stranice

    metod moe biti redefinisan kako bi se inicijalizovali resursi (npr. konekcija na bazu)

    public _jspService (HttpServletRequest req,HttpServletResponse res) ovaj metod je isti kao i metod service () u klasi Servlet

    java kod definisan u JSP tagovima se ugrauje u ovaj metod

    public void jspDestroy() ovaj metod omogudava oslobaanje resursa (npr zatvaranje

    konekcije sa bazom)

    Primer index.html

  • 10.4.2012

    Informacioni sistemi 2, PMF, Novi Sad 7

    Primer hello.jsp

    zasnovana na XML sintaksi : Poetni tag (ime i atributi), telo i zavrni tag.

    telo

    Prazan tag, eventualno sa atributima

    JSP tagovi razlikuju velika i mala slova Koriste se i skradeni zapisi

    Sintaksa JSP stranica

  • 10.4.2012

    Informacioni sistemi 2, PMF, Novi Sad 8

    Elementi JSP stranice

    Skripting elementi deklaracije izrazi skripleti

    Direktive page direktive include direktive taglib direktive

    Akcije

    Komentari

    Omoguavaju definisanje metoda ili atributa, koji se pri prevoenju JSP strane umeu u telo servlet klase

    Deklaracije ne proizvode nikakav izlaz

    Sadraj deklaracije je validan Java izraz ili vie Java izraza razdvojenih ";"

    Sintaksa ili code

    Primer

    JSP deklaracije

  • 10.4.2012

    Informacioni sistemi 2, PMF, Novi Sad 9

    JSP deklaracije

    Kod se ubacuje u definiciju Servlet klase, izvan bilo koje metode:

    deklaracija atributa

    deklaracija metoda.

    JSP izrazi

    Rezultat izvravanja se pretvara u String i umede u rezultujudu stranu

    Sintaksa:

    ili

    izraz

  • 10.4.2012

    Informacioni sistemi 2, PMF, Novi Sad 10

    JSP izrazi

    ...

    Dobrodoli,

    Danas je .

    ...

    u pitanju je izraz, daklene zavrava se sa ;

    za izraze koji nisu tipa Stringautomatski se poziva toString()

    primer1

    Omoguuavaju umetanje koda u _jspService() metod servleta

    Sintaksa:

    ili

    Java code

    Java kod se izvrava kada JSP stranica obrauje zahtev

    JSP skripleti

  • 10.4.2012

    Informacioni sistemi 2, PMF, Novi Sad 11

    JSP skriptleti

    ...

    Dobar dan!

    Dobro vee!

    ...

    JSP skriptleti

    ...

    R.br.

    Ime

    ...

    skriptlet se ugrauje direktno u kodgenerisanog servleta; tako je brojapetlje vidljiv i u okviru drugog skriptleta(on se nalazi unutar for petlje)

  • 10.4.2012

    Informacioni sistemi 2, PMF, Novi Sad 12

    Komentari

    JSP stranica podrava dve vrste komentara

    1. HTML komentar vidljiv je korisniku

    Sintaksa:

    2. JSP komentar - korisnik ne moe da ga vidi

    Sintaksa:

    primer10

    JSP direktive

    JSP direktive se koriste za import, obradu greaka, ukljuivanje drugih stranica:

    ili

    Postoje standardne jsp direktive: JSP page; JSP include; JSP taglib.

  • 10.4.2012

    Informacioni sistemi 2, PMF, Novi Sad 13

    JSP page direktiva

    import-uvoz klasa ili paketa

    < % @ page import=java.util % >

    contentType-definie format rezultujude strane

    < % @ page contentType=text/html % >

    isThreadSafe=true|false

    true-viestruki zahtevi se obrauju istovremeno od jedne instance servleta;

    false-zahtevi se obrauju jedan po jedan;

    buffer=sizekb|none-moe biti zadata veliina bafera a none znai da se vri direktan ispis preko ServletResponse i PrintWriter-a;

    JSP page direktiva

    autoflush=true|false

    true-bafer se isprazni kada se napuni;

    false-kada se bafer napuni odseca se viak;

    errorPage=URL- URL strane kojoj se na obradu prosleuju izuzeci;

    isErrorPage=true|false definie da li data strana moe biti errorpage za neku drugu JSP stranu;

    language=java definie skripting jezik

    pageEncoding ="ISO-8859-1"kodni raspored JSP stranice

  • 10.4.2012

    Informacioni sistemi 2, PMF, Novi Sad 14

    JSP include direktiva

    JSP include direktiva omogudava umetanje sadraja drugih datoteka (HTML stranica, tekstualni fajl ili JSP stranica)u trenutku prevoenja JSP strane u servlet

    Sintaksa

    Primer

    ukljuuje stranicu u momentu kada se stranica prevodi u servlet

    JSP taglib direktive

    JSP taglib direktiva omogudava proirenje skupa standardnih tagova sa korisniki definisanim tagovima

    Sintaksa

    uri relativna ili apsolutna URL adresa

  • 10.4.2012

    Informacioni sistemi 2, PMF, Novi Sad 15

    Predefinisane promenljive

    ime tip

    request HttpServletRequest

    response HttpServletResponse

    out JspWriter

    session HttpSession

    application ServletContext

    page (this)

    request predefinisana promenljiva

    Objekat tipa HttpServletRequest koji se odnosi na zahtev klijenta

    Omogudava

    pristup parametrima prosleenim sa zahtevom (putem metode getParameter)

    utvrivanje tipa zahteva (GET, POST, HEAD, itd.),

    pristup HTTP zaglavlju (cookies)

  • 10.4.2012

    Informacioni sistemi 2, PMF, Novi Sad 16

    response predefinisana promenljiva

    Objekat tipa HttpServletResponse koji se odnosi na odgovor klijentu.

    Omogudava

    postavljanje HTTP statusnih kodova

    postavljanje zaglavlja odgovora (response headers) .

    out predefinisana promenljiva

    PrintWriter koji se koristi za slanje odgovora klijentu.

    out je baferovana verzija PrintWriter pod nazivom JspWriter.

    Mogude je podeavanje veliine bafera, kao i njegovo potpuno iskljuivanje pomodu buffer atributa page direktive.

    out se koristi skoro iskljuivo u skriptletima, jer se JSP izrazi automatski smetaju u izlazni tok

  • 10.4.2012

    Informacioni sistemi 2, PMF, Novi Sad 17

    session predefinisana promenljiva

    HttpSession objekt koji se odnosi na trenutnu sesiju.

    Koristi se za pradenje sesije i za komunikaciju sa drugim komponentama

    prosleivanjem i preiuzimanjem atributa

    application predefinisana promenljiva

    Objekat klase ServletContext dobijen na osnovu konfiguracije servleta

    Uobiajena upotreba je za smetanje globalnih promenljivih uz pomod metoda setAttribute(key, value)/getAttribute(key).

  • 10.4.2012

    Informacioni sistemi 2, PMF, Novi Sad 18

    Akcije

    JSP akcije olakavaju pristup drugim komponentama kao to su JavaBean-ovi,Servleti ili druge JSP stranice

    forward akcija

    include akcija

    plugin akcija

    useBean akcija

    setProperty/getProperty akcije

    JSP forward akcija

    Sintaksa:

    Ova akcija prosleuje korisnikov zahtev nekoj drugoj stranici

  • 10.4.2012

    Informacioni sistemi 2, PMF, Novi Sad 19

    JSP include akcija

    Sintaksa:

    Ukoliko je flush=true jsp stranica koja se ukljuuje se aurira svaki

    put kada se aurira i JSP stranica koja sadri include akciju

    JSP include akcija ukljuuje stranicu u trenutku izvravanja

    JSP include direktiva ukljuuje stranicu u trenutku prevoenja JSP stranice u Servlet

    Sadraj se samo kopira i ne menja se tokom vremena

    sadraj je statian

    jsp:plugin akcija

    Omogudavaj umetanje Java apleta(izvrava se na klijentskoj strani) u JSP stranicu (izvrava se na serverskoj strani)

    Sintaksa:

    .........................................................

  • 10.4.2012

    Informacioni sistemi 2, PMF, Novi Sad 20

    jsp:UseBean akcija

    instancira ili se referncira na JavaBean objekat

    odreuje vidljivost bean-a

    sintaksa

    atribut id definie ime objekta atribut class definie klasu iji objekat instanciramo atribut scope odreuje vidljivost objekta, postoje predefinisane

    vrednosti:

    page vidljiv na tekudoj stranici

    request vidljiv u tekudem zahtevu

    session vidljiv u okviru tekude sesije

    application vidljiv u okviru aplikacije

    jsp:setProperty akcija

    Koriste se da se postave vrednosti atributa za JavaBean koji je definisan pomodu jsp:useBean akcije

    Sintaksa:

    Upotreba znaka * za vrednost atributa property je moguda ukoliko su svi nazivi parametara koji se prosleuju sa request objektom imaju isti naziv kao atributi Java Bean-a

  • 10.4.2012

    Informacioni sistemi 2, PMF, Novi Sad 21

    jsp:setProperty akcija Akcija se moe pozvati posle definicije bean-a

    ............................

    to znai da de se vrednost atributa promeniti bez obzira da li se bean kreira prvi put ili ne

    Akcija moe biti definisana u okviru jsp:useBean akcije

    .............................

    u ovom sluaju se vrednost atributa postavlja samo kada se bean prvi put kreira

    jsp:getProperty akcija

    Ova akcija uzima vrednost atributa bean-a, konvertuje u string i umede u rezultujudu stranu

    Sintaksa:

  • 10.4.2012

    Informacioni sistemi 2, PMF, Novi Sad 22

    Skladitenje podataka: JavaBeans

    public class User implements Serializable{

    public void setUsername(String x) {

    username = x;

    }

    public void setPassword(String x) {

    password = x;

    }

    public String getUsername() {

    return username;

    }

    public String getPassword() {

    return password;

    }

    private String username;

    private String password;

    }

    Prenoenje podataka u JavaBeans

    Username:

    Password:

    login.jsp

    ...

  • 10.4.2012

    Informacioni sistemi 2, PMF, Novi Sad 23

    Prenoenje podataka u JavaBeans

    ...

    Uspeno ste se prijavili!

    Niste se uspeno prijavili!

    ...

    koristimo user kao da je u pitanju JSP deklaracija