2010-05-12 41 views

Trả lời

20

Có một chức năng request.getSession(boolean create)

Tham số:
        create - đúng để tạo ra một phiên làm việc mới cho yêu cầu này nếu cần thiết; sai để trở về null nếu không có phiên hiện tại

Vì vậy, bạn có thể dễ dàng vượt qua false để nói với getSession để trở về null nếu phiên không tồn tại.

+1

... giải thích tốt nhất imho ... đề cập đến tài liệu và giữ tập trung. –

2

HttpSession session = request.getSession (true); nếu (session.isNew()) { ... làm điều gì đó } else { ... làm điều gì đó khác }

các .getSession(true) kể java để tạo ra một phiên làm việc mới nếu không tồn tại.

có lẽ bạn tất nhiên cũng làm:

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

có một cái nhìn tại địa chỉ: http://java.sun.com/javaee/6/docs/api/javax/servlet/http/HttpServletRequest.html

cổ vũ, Jørgen

+0

Bạn sẽ phải chuyển 'false' thành' .getSession() 'thứ hai. – aioobe

+0

xin lỗi ... Typo. sửa chữa. Cảm ơn. – rakke

29

Nếu bạn muốn kiểm tra này trước tạo, sau đó làm như vậy :

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

Nếu bạn không quan tâm về việc kiểm tra sau tạo ra điều này, sau đó bạn cũng có thể làm như vậy:

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

Điều đó tiết kiệm một dòng và một boolean. Các request.getSession() không giống như request.getSession(true).

0

Xác định một lớp, nói SessionTimeoutIndicator, thực hiện giao diện javax.servlet.http.HttpSessionBindingListener. Tiếp theo tạo một đối tượng SessionTimeoutIndicator và thêm nó vào phiên người dùng. Khi phiên bị xóa, phương thức SessionTimeoutIndicator.valueUnbound() sẽ được gọi bởi công cụ Servlet. Sau đó, bạn có thể thực hiện valueUnbound() để thực hiện thao tác được yêu cầu.

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

Tôi muốn thêm rằng nếu bạn tạo phiên mới cho mỗi người dùng mới kết nối với trang web của bạn thì hiệu suất của bạn sẽ bị ảnh hưởng nặng nề. Sử dụng request.getSession (false) để kiểm tra xem người dùng có một phiên không. Với phương pháp này, bạn không tạo phiên mới nếu bạn định hiển thị chế độ xem dựa trên việc người dùng có được xác thực hay không.

Các vấn đề liên quan