2010-05-12 5 views

Odpowiedz

20

Istnieje funkcja request.getSession(boolean create)

Parametry:
        create - prawda, aby utworzyć nową sesję dla tego wniosku, jeżeli jest to konieczne; fałszywy powrót null, jeśli nie ma bieżącej sesji

Tak więc, można po prostu przejść false powiedzieć getSession powrót null, jeśli sesja nie istnieje.

+1

... najlepsze wytłumaczenie imho ... odnosi się do doktorów i skupia się na nich. –

2

HttpSession session = request.getSession (true); if (session.isNew()) { ... coś zrobić } else { ... zrobić coś innego }

.getSession(true) mówi Java do tworzenia nowej sesji, jeśli żaden nie istnieje.

to polubisz oczywiście zrobić również:

if(request.getSession(false) != null){ 
    HttpSession session = request.getSession(); 
} 

rzucić okiem na: http://java.sun.com/javaee/6/docs/api/javax/servlet/http/HttpServletRequest.html

okrzyki, Jørgen

+0

Musiałbyś przekazać 'false' do drugiego' .getSession() '. – aioobe

+0

Przepraszam ... Typo. poprawione. Dzięki. – rakke

29

Jeśli chcesz sprawdzić ten przed tworzenia, a następnie zrobić :

HttpSession session = request.getSession(false); 
if (session == null) { 
    // Not created yet. Now do so yourself. 
    session = request.getSession(); 
} else { 
    // Already created. 
} 

Jeśli nie dbają o sprawdzenie tej po tworzenia, to można też zrobić tak:

HttpSession session = request.getSession(); 
if (session.isNew()) { 
    // Freshly created. 
} else { 
    // Already created. 
} 

który oszczędza linię i boolean. Numer request.getSession() jest taki sam jak request.getSession(true).

0

Zdefiniuj klasę, na przykład SessionTimeoutIndicator, która implementuje interfejs javax.servlet.http.HttpSessionBindingListener. Następnie utwórz obiekt SessionTimeoutIndicator i dodaj go do sesji użytkownika. Po usunięciu sesji metoda SessionTimeoutIndicator.valueUnbound() zostanie wywołana przez silnik Servlet. Następnie można zaimplementować valueUnbound(), aby wykonać wymaganą operację.

3
if(null == session.getAttribute("name")){ 
    // User is not logged in. 
}else{ 
    // User IS logged in. 
} 
2

Chciałbym dodać, że jeśli utworzysz nową sesję dla każdego nowego użytkownika łączącego się z Twoją witryną, Twoje wyniki będą miały poważne skutki. Użyj request.getSession (false), aby sprawdzić, czy użytkownik ma sesję. Dzięki tej metodzie nie tworzysz nowej sesji, jeśli chcesz renderować widok na podstawie tego, czy użytkownik jest uwierzytelniony, czy nie.