Thứ Năm, 27 tháng 10, 2016

SERVJSP - Buổi 4: Session Tracking

Session là khái niệm quan trọng trong lập trình, nó được sử dụng để quản lý phiên làm việc như quản lý cơ chế chứng thực người dùng (đăng nhập), quản lý việc lưu nhớ thông tin,…
Cần cơ chế duy trì trạng thái của các Request từ cùng một người dùng (hoặc có nguồn gốc cùng một trình duyệt) trong một khoảng thời gian.Tuy nhiên HTTP là giao thức phi trạng thái (Stateless):
– Mỗi lần client kết nối đến Server đều mở ra một kết nối mới.
– Server không tự động duy trì trạng thái của một người dùng.
Vì vậy, có ba cơ chế khác nhau:

I. URL Rewritting:
URLs được viết lại, hoặc được mã hóa để đưa thêm các thông tin về Session.
Nó thường bao gồm một Session ID.
Session ID có thể được gửi như một tham số. VD: http://localhost:8080/URLRewritting/TestServlet?sessionid=123
Ưu điểm:
 - Làm việc được với người dùng vô danh (anonymous user).
 - Được hỗ trợ rộng rãi.
Nhược điểm:
 - Phải viết lại tất cả các URLs.
 - Chỉ làm việc với các tài liệu được tạo dynamic (động).

II. Cookie:
Là một phần thông nhỏ được gửi bởi Servlet đến 1 trình duyệt.
Được lưu bởi trình duyệt, sau đó gửi lại cho Server trong các Request về sau.
 - Một Cookie có tên, một giá trị đơn, và các thuộc tính tùy chọn.
 - Một giá trị Cookie có thể định danh duy nhất 1 Client.
Server sử dụng giá trị của Cookie để trích xuất thông tin về Session lưu trên Server.
Ưu điểm:
 - Dễ cài đặt.
 - Tùy biến linh động.
 - Được duy trì cho đến khi đóng trình duyệt.
Nhược điểm:
 - Người dùng có thể tắt Cookies để đảm bảo an ninh (Security) cho họ.
 - Không được hỗ trợ bởi tất cả các trình duyệt.

III. HttpSession:
Servlet cung cấp HttpSession Interface, cung cấp một cách để nhận diện một người sử dụng mà lướt qua nhiều hơn một yêu cầu trang, hoặc tới một Website và để lưu thông tin về người dùng đó.
Trình chứa Servlet sử dụng Interface này để tạo một Session giữa một HTTP Client và một HTTP Server. Session này tồn tại trong một khoảng thời gian đã cho, qua nhiều hơn một kết nối hoặc yêu cầu trang từ người dùng.
Bạn sẽ nhận đối tượng HttpSession bằng việc gọi phương thức public là getSession() của HttpServletRequest như sau: HttpSession session = request.getSession();

Bạn cần gọi phương thức request.getSession() trước khi bạn gửi bất kỳ nội dung tài liệu nào tới Client. Bảng dưới đây liệt kê một số phương thức quan trọng mà có sẵn với đối tượng HttpSession.
STTPhương thức và Miêu tả
1public Object getAttribute(String name)
Phương thức này trả về đối tượng được bind với name đã cho trong Session này, hoặc trả về null nếu không có đối tượng nào được bind với tên này.
2public Enumeration getAttributeNames()
Trả về một Enumeration của các đối tượng String chứa các tên của tất cả đối tượng được bind tới Session này.
3public long getCreationTime()
Trả về thời gian khi Session này được tạo, được tính toán bằng mili giây từ 1/1/1970 GMT.
4public String getId()
Phương thức này trả về một String chứa Identifier duy nhất được gán tới Session này.
5public long getLastAccessedTime()
Phương thức này trả về thời gian cuối cùng mà Client gửi một yêu cầu mà liên kết với Session này, với số mili giây từ 1/1/1970.
6public int getMaxInactiveInterval()
Phương thức này trả về khoảng thời gian tối đa, bằng giây, mà Servlet container sẽ giữ Session này được mở trong các truy cập client.
7public void invalidate()
Phương thức này vô hiệu hóa session này và không kết nối bất kỳ đối tượng nào được bind với nó.
8public boolean isNew(
Phương thức này trả về true nếu Client vẫn chưa biết về Session đó.
9public void removeAttribute(String name)
Phương thức này gỡ bỏ đối tượng được bind với tên đã cho từ session này.
10public void setAttribute(String name, Object value)
Phương thức này bind một đối tượng tới Session này, bởi sử dụng tên đã cung cấp.
11public void setMaxInactiveInterval(int interval)
Phương thức này xác định thời gian, bằng giây, giữa các yêu cầu từ Client trước khi Servlet container sẽ vô hiệu hóa session này.

Không có nhận xét nào:

Đăng nhận xét