Upload
nikola-stevanovic
View
47
Download
0
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