Thứ Sáu, 13 tháng 6, 2014

Tản mạn về Session trong Java Servlet

I. Đầu tiên ta sẽ đi giải thích, vậy "Session" là cái gì?

- Mỗi Session được hiểu là 1 phiên làm việc của một người dùng, nó chính là khoảng thời gian mà người dùng giao tiếp với ứng dụng (cụ thể là ứng dụng web).

- Một Session được tính từ khi người dùng bắt đầu truy cập vào ứng dụng lần đầu tiên, cho đến khi người dùng thoát khỏi ứng (Ví dụ như: Tắt trình duyệt, tắt máy, Logout).

- Session duy trì trạng thái cũng như tính đồng nhất của Client qua Multiple Requests.Mỗi một Session sẽ có một id khác nhau, trong session thì thường sẽ lưu trữ những thông tin như bạn đã login chưa?, bài viết nào đã đọc...v.v.

- HTTP Session là khoảng thời gian mà một kết nối ảo hoạt động.

- Session là một chuỗi các yêu cầu có liên quan từ phía client.

Tóm lại: Session là cái thứ mà nó lưu thông tin của người dùng trong thời gian làm việc. 

II. Các kỹ thuật trong Servlet để xử lý Session.

1. Url Rewritting

- Mỗi một yêu cầu mà client gửi đến thông qua url thì chúng ta có thể thêm một tham số định danh session cùng với mỗi yêu cầu và phản hồi để theo dõi phiên làm việc (session). Điều này rất quan trọng  vì chúng ta cần phải theo dõi các thông số này trong mọi phản hồi và chắc chắn rằng nó không xung đột với các thông số khác.


2. Persistent Cookies

- Cookie là các mảnh nhỏ lưu thông tin ở trong trình duyệt bên phía client, nó được gửi tới máy chủ. Lúc đó server sẽ nhận ra client qua các thông tin của cookie.


3. Hidden Form Variables

- Chúng ta có thể dùng các thẻ ẩn mà người dùng không nhìn thấy nhưng chúng vẫn là các thẻ nằm trong form để gửi lên server.

4. Servlet API

- Cái này được xây dựng trên phương pháp theo dõi phiên.

Nhược điểm của tất cả các phương pháp trên là:

    + Phần lớn thời gian chúng ta không muốn chỉ theo dõi các session, mà chúng ta phải lưu trữ dữ
liệu vào bên trong session để có thể sử dụng trong các yêu cầu tiếp theo.

    + Bản thân các phương pháp trên đều không được hoàn chỉnh, mỗi phương pháp chỉ có thể làm việc được trong một vài trường hợp cụ thể và không thể đáp ứng mọi trường hợp.

Vì thế chúng ta cần quản lý phiên API và công nghệ J2EE Servlet đi kèm với Session Management API để có thể sử dụng.

III. Sử dụng đối tượng HttpSession.

1. Khởi tạo session đối với người dùng.

- Ta khởi tạo ra một đối tượng của HttpSession.

2. Lưu trữ và lấy dữ liệu từ đối tượng HttpSession.

- Sau khi người dùng tiến hành đăng nhập xong, ta sẽ gán giá trị cho session đã khởi tạo dữ liệu của người dùng (thường là username, password..v.v).
   + Để gán dữ liệu cho session ta dùng phương thức: putValue(),
   + Để lấy dữ liệu từ session ta dùng phương thức getValue();

3. Vô hiệu hoá Session

Sau khi người dùng đã đăng xuất hoặc tắt trình duyệt ..v.v ta sẽ vô hiệu hoá session bằng cách gọi ra phương thức: invalidate().

IV. Các phương thức của đối tượng HttpSession hay dùng.

- getCreationTime()       :  Lấy ra thời gian khởi tạo.
- getID()                       : Lấy ra id của session.
- getLastAccessedTime(): lấy ra thời gian lần truy cập cuối cùng.
- getValueName()          : lấy ra tên của đối tượng.
- getValue()                   : lấy ra dữ liệu được lưu trong session.

- setAttribute                  : Gán dữ liệu cho session.// Thực ra thì trước đây người ta dùng phương thức putValue() nhưng do nó quá cũ và không đáp ứng được nhu cầu mới cho nên đã bị thay thế/

- invalidate()                  : Vô hiệu hoá session.
- removeValue()             : Xoá dữ liệu đã gán vào cho session.

Link bài làm theo demo: https://drive.google.com/a/fpt.edu.vn/#folders/0B_7k2KDkO0hTZmVjM2llRXV4eU0

Link làm User Story của Assignment: https://drive.google.com/a/fpt.edu.vn/?utm_source=en-GB&utm_medium=button&utm_campaign=web&utm_content=gotodrive&usp=gtd&ltmpl=drive&usp=gtd&utm_source=en-GB&utm_medium=button&utm_campaign=web&utm_content=gotodrive&urp=http://www.google.com.vn/accounts/Logout2?hl%3Den_GB#folders/0B_7k2KDkO0hTb05DTmQwUU5rRnM
















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

Đăng nhận xét