Professional Documents
Culture Documents
Servleti Nesto Nesto
Servleti Nesto Nesto
Servleti
HTTP Web serveri Web itai HTML
HTTP klijent
HTTP server
traeni sadraj se generie po zahtjevu i alje klijentu dinamiki sadraji nisu uskladiteni unaprijed
1 2
HTTP klijent
HTTP server
1. klijent zahtijeva datoteku 2. server je generie i alje klijentu; ne snima je na svoj fajl-sistem
HTTP server
2
1. klijent zahtijeva datoteku 2. server poziva posebnu funkciju za generisanje datoteke 3. server alje datoteku
5
Java servleti
jedna od tehnologija za generisanje dinamikih sadraja WWW server mora da ima podrku za servlete pisanje servleta iskljuivo u Javi za njihovo izvravanje potrebna je i JVM (najee je obezbjeuje web server)
Java servlet
Java klasa implementira interfejs Servlet (javax.servlet.Servlet) nasljeuje klase GenericServlet ili HttpServlet (javax.servlet.GenericServlet, javax.servlet.http.HttpServlet ) paketi javax.servlet i javax.servlet.http moe da redefinie sljedee metode:
itd.
ove metode se nikad ne pozivaju direktno, ve ih poziva Web server u odgovarajuim trenucima Paketi javax.servlet i javax.servlet.http Rezultat izvravanja servleta je dinamiki kreiran html kod
Servlet.service()
Svaki poziv servleta se svodi na poziv ove metode GET, HEAD, PUT, POST, DELETE, OPTIONS i TRACE Tipian scenario poziva:
postavi
Content-type HTTP odgovora uzimi PrintWriter ka klijentu kroz PrintWriter alji dinamiki kreiran HTML
8
Servlet
Instance servleta se kreiraju automatski, prilikom njihovog zahtjevanja Kreira ih servlet kontejner Nema potrebe za definisanjem konstrukora Entry point nije main metoda
10
HttpServlet.init()
namijenjena za inicijalizaciju servleta, prije njegove prve upotrebe poziva se tano jednom nema prepreke za postojanje konstruktora u servlet klasi u kome e se odvijati dio inicijalizacije, ali je na raspolaganju i init metoda
11
HttpServlet.destroy()
poziva se prilikom unitavanja servleta namenjena za clean-up zadatke neposredno prije unitenja servleta oslobaanje resursa koje je servlet zauzimao:
otvorene
12
HttpServlet.doGet()
namijenjena za obradu GET zahtjeva poziva se za svaki GET zahtjev klijenta koji je traio datoteku za ije generisanje je zaduen dati servlet
public void doGet(HttpServletRequest req, HttpServletResponse res) { res.setContentType("text/html"); PrintWriter out = res.getWriter(); out.println("<HTML>"); out.println("<HEAD><TITLE>Test</TITLE></HEAD>"); out.println("<BODY>"); ... out.close(); }
13
Servlet Deployment
Polazna taka Web aplikacije Sve datoteke i poddirektorijumi su unutar ovog foldera: html, slike
/public_html/WEB-INF/
Sadri konfiguracione datoteke i kompajlirane klase Nije direktno dostupan putem Web-a
/public_html/WEB-INF/classes/
Sve kompajlirane klase (servlet klase i druge klase) se nalaze u ovom folderu
14
Mapiranje servleta
http://[domain:port]/[context]/servlet/[ServletClassName] http://localhost:8988/servletintro/servlet/SimpleServlet
15
web.xml
Primjer
Servlet klasa HelloWorld.class Kontekst aplikacije: http://localhost:8988/servletintro/ Invoker class mapiranje http://localhost:8988/servletintro/servlet/HelloWorld Mapiranje putem web.xml datoteke http://localhost:8988/servletintro/hello
16
cookie mehanizam
Zahtjev
HTTP klijent
Odgovor + cookie
HTTP server
HTTP klijent
Zahtjev + cookie
Odgovor + cookie
HTTP server
17
Cookies
Cookie authCookie = new Cookie("xyz-Auth", credentials); authCookie.setVersion(1); authCookie.setDomain(".xyz.com"); res.addCookie(authCookie);
Domen .xzy.com
19
Destroy
20
int count = 0;
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/plain"); PrintWriter out = res.getWriter(); count++; out.println("Ovom servletu je pristupljeno " + count + " puta."); }
}
21
22
23
24
3)
4)
25
Servleti i JDBC
init(): otvaranje konekcije sa bazom doGet(): postavljanje upita, formiranje rezultata destroy(): zatvaranje konekcije sa bazom
26
27
Primjer: broja
import import import public java.io.*; javax.servlet.*; javax.servlet.http.*; class SimpleCounter extends HttpServlet {
int count = 0;
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/plain"); PrintWriter out = res.getWriter(); count++; out.println("Ovom servletu je pristupljeno " + count + " puta."); }
}
28
Problem
Rjeenje
sinhronizacija
PrintWriter out = res.getWriter(); synchronized(this) { count++; out.println("Ovom servletu je pristupljeno " + count + " puta."); }
30