vezbe 10 - sesije, cookie
DESCRIPTION
java programiranjeTRANSCRIPT
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