tôi đang tạo ra các phiên sử dụngLàm cách nào để kiểm tra xem phiên có tồn tại hay không?
HttpSession session = request.getSession();
Trước khi tạo phiên tôi muốn kiểm tra xem nó tồn tại hay không. Làm thế nào tôi sẽ làm điều này?
tôi đang tạo ra các phiên sử dụngLàm cách nào để kiểm tra xem phiên có tồn tại hay không?
HttpSession session = request.getSession();
Trước khi tạo phiên tôi muốn kiểm tra xem nó tồn tại hay không. Làm thế nào tôi sẽ làm điều này?
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.
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
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)
.
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.
if(null == session.getAttribute("name")){
// User is not logged in.
}else{
// User IS logged in.
}
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.
... giải thích tốt nhất imho ... đề cập đến tài liệu và giữ tập trung. –