Tải bản đầy đủ (.pptx) (18 trang)

CHUYÊN đề JAVA SERVLET SESSION TRACKING

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (693 KB, 18 trang )

CHUYÊN ĐỀ JAVA

SERVLET SESSION TRACKING
• Lâm Thị Xuân Thanh
• Đỗ Xuân Thiện
• Lê Hữu Thống


Nội dung trình bày
 Session Tracking
 Cài đặt Session Tracking
- Servlet Session API
 Xây dựng BookOnline
- Đăng nhập
- Quản lý giỏ hàng

2


Session Tracking
 Trong ứng dụng bán hàng trực tuyến, nhiều khách
hàng thực hiện mua hàng. Mỗi khách hàng có một giỏ
hàng riêng biệt.
 Mỗi khách hàng thực hiện các thao tác như thêm sản
phẩm vào giỏ hàng, xóa sản phẩm khỏi giỏ hàng, cập
nhật số lượng mua, tiếp tục mua hàng, thanh toán…
 Để thực hiện mỗi thao tác của từng khách hàng làm
sao server biết được các sản phẩm hiện có trong giỏ
hàng của khách hàng đó?

3




Session Tracking
 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
browser) 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
user.

4


Session Tracking
Session ID 1
Session 1
Client 1

Server
Session ID 2
Session 2
Client 2

5


Session Tracking
 Cài đặt Session Tracking sử dụng

- Servlet Session API

6


Session Tracking - Servlet Session API
 Lấy đối tượng session

HttpSession session = request.getSession();
 Lấy dữ liệu:

Object obj = session.getAttribute(String
name);

session.setAttribute(String
name, Object obj)
 Lưu trữ dữ liệu vào session
 Xóa dữ liệu session theo tên

session.removeAttribute(String name)
 Xóa toàn bộ dữ liệu trong session : session.invalidate()
 Kiểm tra session được tạo mới từ client:

boolean ok = session.isNew()
7


Session Tracking - Servlet Session API
 Lấy session id: String id = session.getId()
 Lấy các tên của các thuộc tính từ session

Enumeration<String> names =
session.getAttributeNames()

longtạotime
= lần đầu tiên
 Lấy thời gian
session
session.getCreationTime();
time
long
Lấy thời
gian= truy xuất session lần cuối
session.getLastAccessedTime();
session.setMaxInactiveInterval(int
interval);
 Gán/lấy thời gian session timeout
int interval = session.getMaxInactiveInterval();
8


Session Tracking - Servlet Session API
1
2
3
4
5
6
7
8
9

10
11
12
13
14
15
16
17
18
19

9

//Lưu trữ dữ liệu
HttpSession session = request.getSession();
SomePOJO data= ... ;
session.setAttribute("SomeName", data);

//Lấy dữ liệu
HttpSession session = request.getSession();
if(session.getAttribute(“SomeName”)!=null){
SomePOJO data = (SomePOJO)session.getAttribute(“SomeName”);
}
//Xóa dữ liệu
HttpSession session = request.getSession();
session.removeAttribute(“SomeName”);
//Xóa tất cả dữ liệu trong session
HttpSession session = request.getSession();
session.invalidate();



Session Tracking - Servlet Session API
1
2
3
4
5
6
7
8

HttpSession session = request.getSession();
synchronized (session){
session.setAttribute(...);
session.getAttribute(...);
session.removeAttribte(...);
session.invalidate(...);
}

- Synchronized : xử lý đồng bộ giữa các request đến từ cùng một user
- Thường sử dụng trong ứng dụng ajax

10


Servlet Session API - Access Count
1
2
3
4

5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
11

HttpSession session = request.getSession();
synchronized (session) {
Integer accessCount;
if (session.getAttribute("AccessCount") != null) {
accessCount = (Integer)
session.getAttribute("AccessCount") + 1;
} else {
accessCount = 1;
}
session.setAttribute("AccessCount", accessCount);
out.println("<html>");
out.println("<head>");
out.println("

content='text/html; charset=utf-8' />");
out.println("<title>Show Session</title>");
out.println("</head>");
out.println("<body>");
out.println("

THÔNG TIN SESSION

");


Servlet Session API - Access Count
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
12

out.println("

cellpadding='0' cellspacing='0'>");
out.println(" <tr bgcolor='#00FFFF'>");
out.println("
<td><strong>Thông tin</strong></td>");
out.println("
<td><strong>Giá tr?</strong></td>");
out.println(" </tr>");
out.println(" <tr>");
out.println("
<td width='40%'>ID</td>");
out.println("
<td>" + session.getId() + "</td>");
out.println(" </tr>");
out.println(" <tr>");
out.println("
<td>Thời gian tạo lần đầu tiên</td>");
out.println("
<td>" + new
Date(session.getCreationTime()) + "</td>");
out.println(" </tr>"); out.println(" <tr>");
out.println("
<td>Thời gian truy cập lần cuối </td>");
out.println("
<td>" + new
Date(session.getLastAccessedTime()) + "</td>");
out.println(" </tr>");
1


Servlet Session API - Access Count


out.println("
<tr>");
<td>Thời gian timeout</td>");
out.println("
out.println("
<td>" +
session.getMaxInactiveInterval() + "</td>");
6
out.println("
</tr>");
7
out.println("
<tr>");
8
out.println(" <td>Số lần truy cập</td>");
9
out.println(" <td>" +accessCount +
"</td>" )
10
11
</tr>");
out.println("
12
out.println("</table>");
13
out.println("</body>");
14
15
out.println("</head>");

16
out.println("</html>");
1
2
3
4

5

13


Servlet Session API - Access Count

14


BookOnline - Các chức năng
 Cho phép khách hàng quản lý giỏ hàng của mình
- Xem giỏ hàng
- Thêm sách vào giỏ hàng
- Xóa một số đầu sách trong giỏ
- Cập nhật số lượng sách mua
- Xóa tất cả các sách trong giỏ
- Thanh toán giỏ hàng
- Xem các đơn đặt hàng đã mua

15



BookOnline - Use case
DuaSachVaoGioHang
KhachHang
XoaMotSoDauSachKhoiGioHang

<<extend>>
<<extend>>
XemDanhSachDonDatHang

<<extend>>

XemChiTietDonDatHang

16

XemGioHang

<<extend>>
CapNhatSoLuongSach
TrongGioHang

ThanhToan


BookOnline - Cơ sở dữ liệu

17


THE END


18