Tải bản đầy đủ (.pdf) (19 trang)

CHUYÊN ĐỀ JAVA_SERVLET SESSION TRACKING pdf

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 (952.83 KB, 19 trang )

SERVLET SESSION TRACKING
CHUYÊN ĐỀ JAVA
Nguyễn Hoàng Anh
Email:

ĐH KHTN, 2011
Nguyễn Hoàng Anh – – ĐH KHTN - 2011
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
Nguyễn Hoàng Anh – – ĐH KHTN - 2011
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
Nguyễn Hoàng Anh – – ĐH KHTN - 2011
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
Nguyễn Hoàng Anh – – ĐH KHTN - 2011
Session Tracking
5
Server
Client 1
Client 2
Session ID 1
Session ID 2
Session 1
Session 2
Nguyễn Hoàng Anh – – ĐH KHTN - 2011
Session Tracking
 Cài đặt Session Tracking sử dụng
– Servlet Session API
6
Nguyễn Hoàng Anh – – ĐH KHTN - 2011
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);
 Lưu trữ dữ liệu vào session
session.setAttribute(String name, Object obj)

 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
Nguyễn Hoàng Anh – – ĐH KHTN - 2011
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()
 Lấy thời gian tạo session lần đầu tiên
long time = session.getCreationTime();
 Lấy thời gian truy xuất session lần cuối
long time = session.getLastAccessedTime();
 Gán/lấy thời gian session timeout
session.setMaxInactiveInterval(int interval);
int interval = session.getMaxInactiveInterval();
8
Nguyễn Hoàng Anh – – ĐH KHTN - 2011
Session Tracking – Servlet Session API
9
1

2

3

4


5

6

7

8

9

10

11

12

13

14

15

16

17

18

19



//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();
Nguyễn Hoàng Anh – – ĐH KHTN - 2011
Session Tracking – Servlet Session API
10
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
Nguyễn Hoàng Anh – – ĐH KHTN - 2011
Servlet Session API – Access Count
11
1

2

3

4

5

6

7

8


9

10

11

12

13

14

15

16

17

18

19

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("<meta http-equiv='Content-Type'
content='text/html; charset=utf
-8' />");

out.println("<title>Show Session</title>");

out.println("</head>");

out.println("<body>");

out.println("<h1 align='center'>THÔNG TIN SESSION</h1>");

Nguyễn Hoàng Anh – – ĐH KHTN - 2011
Servlet Session API – Access Count
12
1

2

3

4

5

6

7

8

9

10

11

12

13

14


15

16

17

18

19

out.println(
"<table width='400' border='1' align='center'
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>");
Nguyễn Hoàng Anh – – ĐH KHTN - 2011
Servlet Session API – Access Count
13
1

2

3

4


5

6

7

8

9

10

11

12

13

14

15

16


out.println(" <tr>");

out.println(" <td>Thời gian timeout</td>");



out.println(" <td>" +
session.getMaxInactiveInterval() +
"</td>");

out.println(" </tr>");

out.println(" <tr>");

out.println(" <td>Số lần truy cập</td>");

out.println(" <td>"+accessCount + "</td>");


out.println(" </tr>");

out.println("</table>");

out.println("</body>");

out.println("</head>");

out.println("</html>");
Nguyễn Hoàng Anh – – ĐH KHTN - 2011
Servlet Session API – Access Count
14
Nguyễn Hoàng Anh – – ĐH KHTN - 2011
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
Nguyễn Hoàng Anh – – ĐH KHTN - 2011
BookOnline – Use case

16
DuaSachVaoGioHang
XemGioHang
XoaMotSoDauSachKhoiGioHang
CapNhatSoLuongSach
TrongGioHang
ThanhToan
<<extend>>
<<extend>>
<<extend>>
KhachHang
XemDanhSachDonDatHang
XemChiTietDonDatHang
<<extend>>
Nguyễn Hoàng Anh – – ĐH KHTN - 2011
BookOnline – Cơ sở dữ liệu
17
Nguyễn Hoàng Anh – – ĐH KHTN - 2011
Tài liệu tham khảo
 Nguyễn Hoàng Anh, Tập bài giảng và video môn
chuyên đề Java, 2010

 Marty Hall, Tập bài giảng về Servlet, 2010


18
Nguyễn Hoàng Anh – – ĐH KHTN - 2011
HỎI VÀ ĐÁP
19

×