Session Tracking
GVHD: Thầy Đỗ Văn Tiến
Thành viên nhóm:
- Lưu Thanh Ngọc
- Lê Duy Thạnh
- Trần Dũ Phi
Nội dung
Session là gì ?
Tại sao cần tính năng theo vết session ?
Cơ chế thực hiện theo vết session
Các APIs lập trình theo vết session
Nội dung
Session là gì ?
Tại sao cần tính năng theo vết session ?
Cơ chế thực hiện theo vết session
Các APIs lập trình theo vết session
Session Tracking là gì ?
Session Tracking là sự duy trì trạng thái của
các request từ cùng một user (hoặc cùng một
trình duyệt) với server thông qua cơ chế request
và response.
Nội dung
Session là gì ?
Tại sao cần tính năng theo vết session?
Cơ chế thực hiện theo vết session
Các APIs lập trình theo vết session
Tại sao cần tính năng theo vết session?
HTTP là một giao thức phi trạng thái(stateless protocol).
•
Mỗi lần client giao tiếp với web sever, sever sẽ
tạo ra một connection mới.
•
Sever không tự động lưu trữ ‘trạng thái giao tiếp’
của một user
Giả sử, khi bạn mua sách từ trang amazon.com ,
khi người dùng thêm vào hoặc bỏ ra một sản
phẩm trong giỏ hàng(shopping cart) ==> Làm thế nào
để server biết được đã có sản phẩm nào user đã chọn
và thông tin về user đó để thực hiện kiểm tra, thanh
toán
Nội dung
Session là gì ?
Tại sao cần tính năng theo vết session?
Cơ chế thực hiện theo vết session
Các kĩ thuật lập trình theo vết session
Cơ chế lưu vết session
Cơ chế thực hiện theo vết session
Có 3 cơ chế :
1. Cookies
2. URL Rewriting
3. Hidden From Fields
Đều là kĩ thuật truyền ‘session id’
•. Không cung cấp các API mức cao
•. Không cung cấp framework để quản lí session
•. Là các tính năng Sevlet Session Tracking cung cấp
Cookies
Là công nghệ được sử dụng phổ biến nhất để theo dõi phiên
Là một file nhỏ được sever gửi đến và được lưu bởi trình duyệt,
sau đó trình duyệt sẽ gửi về lại cho sever 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ị của cookie có thể định danh duy nhất 1 client
Sever sử dụng giá trị của cookie để trích xuất thông tin về session
lưu trên sever
Ưu điểm:
•
•
•
Dễ cài đặt
Tùy biến, linh động
Được duy trì đến khi đóng trình duyệt
Nhược điểm
•
•
User có thể tắt chức năng cookie
Không được hỗ trợ bởi tất cả trình duyệt
URL Rewriting
Khi yêu cầu từ phía client được thực hiện, sever sẽ viết lại hoặc mã
hóa URL để đưa thêm thông tin về sesion
URL Rewriting thường bao gồm 1 sesion id hoặc userid
Ví dụ : Original URL: http://server:port/servlet/ServletName
Rewritten URL: http://server:port/servlet/ServletName?sessionid=7456
Ưu điểm:
•
•
Làm việc được với user vô danh
Được hỗ trợ rộng rãi
Nhược điểm
•
•
Phải viết lại tất cả các URL
Chỉ làm việc với các documents được tạo tự động
Hidden From Fields
Không hiển thị trên trình duyệt nhưng có thể được gửi lại sever
khi submit form
Ví dụ: <INPUT TYPE ="hidden" NAME="session" VALUE="sevlet">
Sevlet đọc giá trị của field bằng phương thức req.getParameter()
Ưu điểm:
•
•
Làm việc được với user vô danh
Được hỗ trợ rộng rãi
Nhược điểm
•
•
Không xử lý được trường hợp đóng trình duyệt
Chỉ làm việc với các form sinh tự động
Nội dung
Session là gì ?
Tại sao cần tính năng theo vết session ?
Cơ chế thực hiện theo vết session
Các API lập trình theo vết session
Nếu sevlet không cung cấp tính năng theo vết sesion ?
Lập trình viên phải tự thực hiện một trong các kĩ
thuật theo vết session
o
Tạo và quản lí một session ID cho mỗi session
o
Truyền session ID qua cho client quan cookie hoặc URL
o
Lấy thông tin về sesion ID từ cookie hoặc URL
o
Tạo và quản lí một bảng băm hashtable, lưu sesion ID
và các thông tin về sesion
o
Tự đưa ra cơ chế để thêm mới hoặc loại bỏ các thông
tin của sesion
HttpSession
Lấy ra đối tượng session của một user
•
HttpSession session = req.getSession(true);
HttpSession là một giao diện, container sẽ
tạo ra 1 đối tượng có kiểu HttpSession
•
Giao diện HttpSesion chứa các phương thức để xem và quản lí thông
tin về 1 sesion, như : id, thời gian tạo, thời điểm truy cập cuối cùng
•
Cho phép lưu giữ (maintain) thông tin người dùng
Session Tracking trong Sevlet
Servlet được xây dựng dựa trên các kĩ thuật theo vết session
truyền thống
Servlet hỗ trợ cho trình duyệt cho phép và không cho phép cookie
•
Nếu cookie bị tắt: sever sẽ đính kèm sesionid vào URL
•
Ngược lại sẽ được xử lí mặc định theo cơ chế của Servlet
Lưu ý: để đảm bảo theo vết sesion tốt nhất, tất cả các URLs trả về
từ servlet phải chạy qua phương thức response.encodeURL(URL)
Ví dụ:
Cảm ơn thầy và các bạn đã lắng nghe !