Konuyu görüntüle
IUCODERS FORUM > Programlama > JAVA > JSF Session
Yazar
extreme


avatar
Kahramanmaras
admin
Kayıt: 24.10.2006
16.03.2009-21:47 #57997
Yeni bir proje açtığımda otomatik olarak SessionBean1 oluşturuyor.

public class SessionBean1 extends AbstractSessionBean {};

Bu sessionbean'e bir sayfadan getSessionBean1(); ile ulaşabiliyorum sanırımsilly. Bu şekilde ulaşıp

getSessionBean1().saveData("deneme", "deneme123");

şeklinde bir veri ekliyorum.Bu veriyi

getSessionBean1().retrieveData("deneme")

şeklide tekrar okuyabiliyorum ama farklı bir sayfaya yöndendikten sonra tekrar okuyamıyorum. null oluyoru değer.

Başka sayfalardan session'u okumak için ne yapmalıyım?





The Man Who Loved Algorithm&Ubuntu.
www.burakamasyali.com





Yazar
extreme


avatar
Kahramanmaras
admin
Kayıt: 24.10.2006
16.03.2009-22:02 #57998
getSessionMap().put("deneme", "burak");
getSessionMap().get("deneme")

Böyle yaptım oldu biggrin





The Man Who Loved Algorithm&Ubuntu.
www.burakamasyali.com





Yazar
safter


avatar

Kayıt: 18.04.2006
16.03.2009-23:06 #58000
öncelikle daima session üreten bir fonksiyona neden ihtiyac duydugunu cok merak ettim :) performans acısında session sayısı dej avantaj; eger elinde bir sürü veri varsa ve bunları her istedigin yerde her zaman cekmek istiyorsan sadece bir session ve bir hashmap kullanmak yeterince işini görür ve performansı yükseltir. misal ;

HashMap hash = new HashMap();
hash.put("denemeKey","denemeInfo");
hash.put("denemeKey1","denemeInfo1");
hash.put("denemeKey2","denemeInfo2");
hash.put("denemeKey3","denemeInfo3");
hash.put("denemeKey4","denemeInfo4");

HttpSession session = request.getSession(true);

session.setAttiribute("myHash",hash);


istedigin yerde ; session.getAttiribute(hash); diyerek kullanabilirsin tabi bunu cekerkende yine bir HashMapa atıp kullanman gerekecek,


ben tam istedigin cevabı verdim mi bilmiyorum ama benim anladıgım sorunun cevabı bu





q
Yazar
extreme


avatar
Kahramanmaras
admin
Kayıt: 24.10.2006
16.03.2009-23:11 #58001
Benim sorunum henüz beanları tam olarak kavrayamamış olmammışbiggrin(Kavrama sürecindeyimbiggrin).
Benim sessiona sadece kullanıcı bilgilerini yazmam lazım. id, username... gibi.





The Man Who Loved Algorithm&Ubuntu.
www.burakamasyali.com





Yazar
safter


avatar

Kayıt: 18.04.2006
16.03.2009-23:24 #58002
kullanıcı bilgilerin nerden alıyorsun web browserden mi? eger ordan alıyorsa request.getParameter(); metodu kullan onuda hash'a at onuda sessiona...

örnek

ön tarafta bir input fieldine user name i yazmış ol input fieldin adı user olsun

java tarafından;

HashMap hash = new HashMap();

hash.put("userName",request.getParameter("user"));

..
.. noktalar şifre felan yani diger girişler
..

session.setAttiribute("kullanıcı bilgileri",hash);






q
Yazar
orhan


avatar
istanbul
admin
Kayıt: 17.11.2005
17.03.2009-10:12 #58006
bi tane userbean yap ona gerekli property leri ekle sonra onu faces-config den session olarak ayarla o beanin property sini değiştirdiğinde sessiondaki değeri de değişmiş olur.





N/A
Yazar
extreme


avatar
Kahramanmaras
admin
Kayıt: 24.10.2006
26.04.2009-21:45 #59266
<h:commandButton value="Session Sil" action="#{Bean.ClearSession}" />

Şöyle bir butonum var.

public String ClearSession() {
ExternalContext G = FacesContext.getCurrentInstance().getExternalContext();
HttpSession session = (HttpSession) G.getSession(true);
session.removeAttribute(key);
}

Bu butona basılınca session siliniyor bunda problem yok. Ama sayfanın constructor çalıştıktan sonra siliniyor. Bende constructor'da bazı verileri bu sessiona göre veritabanından çekiyorum ve sonuç olarak sayfamda veriler görünüyor.
f:param kullanarak çözebilirm sanırım bu problemi ama başka çözüm yolu varmı ?





The Man Who Loved Algorithm&Ubuntu.
www.burakamasyali.com





Yazar
orhan


avatar
istanbul
admin
Kayıt: 17.11.2005
26.04.2009-22:18 #59267
actioneventine yaz kodu





N/A
Yazar
extreme


avatar
Kahramanmaras
admin
Kayıt: 24.10.2006
26.04.2009-22:39 #59268
orhan yazdi
 
actioneventine yaz kodu


action="#{Bean.ClearSession} yerine ne yazmalıyım? actionevent bi attribute mü?





The Man Who Loved Algorithm&Ubuntu.
www.burakamasyali.com





Yazar
orhan


avatar
istanbul
admin
Kayıt: 17.11.2005
26.04.2009-22:47 #59269
actionlistener ine yaz bu kodu.





N/A
Yazar
extreme


avatar
Kahramanmaras
admin
Kayıt: 24.10.2006
26.04.2009-23:12 #59270
orhan yazdi
 
actionlistener ine yaz bu kodu.


<h:commandButton value="Yeni Nesne" actionListener="#{Bean.ClearSession}" />

public void ClearSession(ActionEvent e) {
deleteFromSession(tableKeyName);
}

Bu şekilde yaptım sessionun silmiyor bile :S





The Man Who Loved Algorithm&Ubuntu.
www.burakamasyali.com





Yazar
orhan


avatar
istanbul
admin
Kayıt: 17.11.2005
26.04.2009-23:27 #59271
yukarıda yazmış olduğun kod session dan belli bir key e ait attribute yi siler session u invalidate etmezki





N/A
Yazar
extreme


avatar
Kahramanmaras
admin
Kayıt: 24.10.2006
26.04.2009-23:29 #59272
orhan yazdi
 
yukarıda yazmış olduğun kod session dan belli bir key e ait attribute yi siler session u invalidate etmezki


evet sadece o key'i silmeye çalışıyorum. Siliniyor ama constructor çalıştıktan sonra beat up





The Man Who Loved Algorithm&Ubuntu.
www.burakamasyali.com





Yazar
orhan


avatar
istanbul
admin
Kayıt: 17.11.2005
26.04.2009-23:40 #59273
actionlistener metoduna şunuda eklersen düzelir.

e.getComponent().processUpdates();






N/A
Yazar
extreme


avatar
Kahramanmaras
admin
Kayıt: 24.10.2006
27.04.2009-00:01 #59274
orhan yazdi
 
actionlistener metoduna şunuda eklersen düzelir.

e.getComponent().processUpdates();


  public void ClearSession(ActionEvent e) {
        e.getComponent().processUpdates(FacesContext.getCurrentInstance());

        deleteFromSession(tableKeyName);
       
    }


Bu şekilde yazdım yine constructor önce çalışıyor :S. Bu fosnkyonunun parametresi doğrumu?





The Man Who Loved Algorithm&Ubuntu.
www.burakamasyali.com





1 2
Del.icio.us
Digg
Facebook
Furl
Google
Blink
Simpy
Spurl
Y! MyWeb