vezbe 10 - sesije, cookie

12
VEŽBE 10 – SESIJE Atributi Sesije su su „živi“ unutar CELE aplikacije Sesija se kupi i kreira pomoću: HttpSession sesija = request.getSession(); Objekat bilo kojeg tipa se iz Servleta može poslati preko HttpSession sesija objekta metodom: sesija.setAttribute(„ime atributa“, objekat); Na JSP stranici (ili Servlet-u) se objekat preuzima takođe preko sesija objekta metodom: sesija.getAttribute(„ime atributa“); Pošto se sa getAttribute može pokupiti bilo koji tip objekta neophodno je uraditi „kastovanje“ ili naznaku kojeg tipa je pokupljeni atribut. PRIMER: Prosleđivanje atributa „msg“ iz Servleta i njegovo prihvatanje na bilo kojoj JSP strani. SERVLET JSP HttpSession sesija = request.getSession(); sesija.setAttribute("msg", msg); HttpSession sesija = request.getSession(); String msg = (String) sesija.getAttribute("msg"); REDIREKCIJA : Veoma često u kombinaciji sa sesijama potrebno je redirektovati zahtev na neku drugu stranicu. Jedno od rešenja je preko request objekta: response.sendRedirect( "index.jsp" ); 1

Upload: serbiaduke

Post on 09-Nov-2015

6 views

Category:

Documents


2 download

DESCRIPTION

java programiranje

TRANSCRIPT

VEBE 10 SESIJE Atributi Sesije su su ivi unutar CELE aplikacije Sesija se kupi i kreira pomou:

HttpSession sesija = request.getSession();Objekat bilo kojeg tipa se iz Servleta moe poslati preko HttpSession sesija objekta metodom:

sesija.setAttribute(ime atributa, objekat);Na JSP stranici (ili Servlet-u) se objekat preuzima takoe preko sesija objekta metodom:

sesija.getAttribute(ime atributa);Poto se sa getAttribute moe pokupiti bilo koji tip objekta neophodno je uraditi kastovanje ili naznaku kojeg tipa je pokupljeni atribut.

PRIMER: Prosleivanje atributa msg iz Servleta i njegovo prihvatanje na bilo kojoj JSP strani.

SERVLETJSP

HttpSession sesija = request.getSession();

sesija.setAttribute("msg", msg);HttpSession sesija = request.getSession();String msg = (String) sesija.getAttribute("msg");

REDIREKCIJA : Veoma esto u kombinaciji sa sesijama potrebno je redirektovati zahtev na neku drugu stranicu. Jedno od reenja je preko request objekta:

response.sendRedirect("index.jsp");ZADATAK:

Kreirati klasu Klijent sa :

parametrima: user, pass Konstuktorima

Kreirati stranicu index.jsp sa

formom za unos user-a i pass-a koja prosledjuje parametre na ServletLogIn post metodom

Kreirati servlet ServletLogIn koji :

u doPost kupi parametre user i pass i ako su uneti

kreira jednog klijenta i prosleuje ga na prikaz.jsp preko atributa

sesije

request. u doGet ponitava sesiju i vraa na index.jsp

Kreirati stranicu prikaz.jsp koja :

kupi atribut sesije i ako postoji ispisuje ga (u suprotnom vraa na index.jsp)

kupi atribut request-a i ako postoji ispisuje ga (u suprotnom ispisuje NEMA ATRIBUTA)

link ka stranici prikazDalje.jsp link LOGOUT ka ServlerLogIn-u za ukidanje sesijeKreirati stranicu prikazDalje.jsp koja :

kupi atribut sesije i ako postoji ispisuje ga (u suprotnom vraa na index.jsp)

kupi atribut request-a i ako postoji ispisuje ga (u suprotnom ispisuje NEMA ATRIBUTA)

link ka stranici prikaz.jsp link LOGOUT ka ServlerLogIn-u za ukidanje sesije

REENJE:// Klijent.javapublic class Klijent {

private String user;

private String pass;

public Klijent(String pass, String user) {

this.pass = pass;

this.user = user;

}

public Klijent() {}

public String getUser() {

return user;

}}

// ServletLogIn.javapublic class ServletLogIn extends HttpServlet {

private static final long serialVersionUID = 1L;

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

HttpSession sesija = request.getSession();

// ponistavanje sesije

sesija.invalidate();

request.getRequestDispatcher("index.jsp").forward(request, response);

}

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

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

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

if (user!= null && user.length()>0 && pass != null && pass.length()>0){

Klijent k = new Klijent(user,pass);

// kreiranje sesije

HttpSession sesija = request.getSession();

// podesavanje vremena neaktivnosti sesije u sekundama

sesija.setMaxInactiveInterval(10);

// dodavanje atributa u sesiju koji se vidi u celom projektu

sesija.setAttribute("ulogovanSesija", k);

// dodavanje atributa u request koji se vidi samo na sledecoj stran

request.setAttribute("ulogovanRequest", k);

request.getRequestDispatcher("prikaz.jsp").forward(request, response);

}else{

// nisu popunjena sva polja

request.getRequestDispatcher("index.jsp").forward(request, response);

}

}}

// index.jsp

DOBRODOSLI

Username:

Password:

// prikaz.jsp

SESIJA : Ulogovan je

REQUEST : Ulogovan je

REQUEST : NEMA ATRIBUTA

IDEMO DALJE
LOGOUT

// prikazDalje.jsp

SESIJA : I DALJE je ulogovan

REQUEST : Ulogovan je

REQUEST : NEMA ATRIBUTA

NAZAD
LOGOUT

Sl. 1. Prikaz LogIn forme

Sl. 2. Prikaz posle LOGIN

Sl. 3. Prikaz posle IDEMO DALJE

Sl. 4. Prikaz posle NAZAD

Sl. 4. Prikaz posle LOGOUT

VEBA:

Kreirati bazu sa tabelom Klijent sa poljima user (unique-jedinstven) i pass

Kreirati KlijentDAO klasu sa metodama:

void insertKlijent(Klijent k): unosi Klijenta k u bazu bool klientExist(String user, String pass): proverava da li postoji klijent u bazi sa ovim parametrima za logovanje Modifikovati index.jsp da pored LOGIN ima i dugme REGISTER kojim se dodaje koristnik u bazu podataka ako ne postoji ve u bazi (registruje se). Oba dugmeta su u formi koja alje akciju na ServletLogIn samo su im vrednosti paramertra akcija razliiti (LOGIN, REGISTER) Modifikovati ServletLogIn da ako je akcija : LOGIN proveri da li su dobri parametri za logovanje i ako jesu prosledi ulogovanog na prikaz.jsp

REGISTER proveri da li posto ve takav Klijent u bazi i ako ne postoji doda ga u bazu i vrati se na index.jsp da bi novi klijent mogao da se ulogujeCOOKIE Cookie su mala koliina podataka poslatih od strane web servera klijentskom browser-u.

uvaju se na hard disku klijenta u vidu malog tekstualnog fajla.

Pomau web serverima da identifikuju klijenta i imaju veliku ulogu u praenju sesija.

Cookie ima ime (name), jednu vrednost (value) i opcionalne atribute comment, path, domain, maxAge, versionNumber

Dostupne metode:

MethodOpis

getComment()Vraa komentar koji opisuje svrhu cookie-a, ili null ako nije definisan komentar.

getMaxAge()Vraa maksimalno vreme vanosti

getName()Vraa ime

getPath()Vraa URL prefih svih putanja na kojima se koristi ovaj cookie

getValue()Vraa vrednost cookie-a

setComment(String)Podeava komentar

setMaxAge(int)Podeava maksimalno vreme cookie nakon kog se on brie sa diska. Negativne vrednosti znae da cookie ivi dok je browser aktivan

setPath(String)Cookie se prikazuje samo ako URL poinje sa ovim stringom

setValue(String)Podeava vrednost cookie-a. Treba izbegavati specijalne karaktere u ovom stringu.

ZADATAK: Kreirati cookieform.jsp stranicu sa formom sa jednim text poljem u koji se unosi username. Formu proslediti na setcookie.jsp ili na ServletCookie.java get metodom.

Kreirati setcookie.jsp stranicu koja kupi parametar username i kreira cookie sa tim parametrom. Postaviti link na stranicu showcookievalue.jsp.Kreirati ServletCookie.java koji kupi parametar username i kreira cookie sa tim parametrom. Nakon toga prosleuje odgovor na stranicu showcookievalue.jsp.

Kreirati showcookievalue.jsp koja prolazei kroz sve cookie proverava da li postoji neki sa imeno username i ispisuje njegovu vrednost.

REENJE:cookieform.jsp

Unesi ime:

setcookie.jsp

Sled. str. za prikaz vrednosti cookie-a

ServletCookie.jspprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

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

if(username==null && username.length()>0) {

request.getRequestDispatcher("cookieform.jsp").forward(request, response);}else{

Cookie cookie = new Cookie ("username", username);

cookie.setMaxAge(365 * 24 * 60 * 60); // godinu dana u sekundama

response.addCookie(cookie);request.getRequestDispatcher("showcookievalue.jsp").forward(request, response);

}}

Showcookievalue.jsp

Nema cookie-a sa imenom

Welcome: .

Prikaz u Google Chrome kreiranog cookie-a od strane sajta localhost sa imenom username i vrednou ZELJKO1