Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 19 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
19
Dung lượng
0,93 MB
Nội dung
SERVLET SESSION TRACKING CHUYÊN ĐỀ JAVA Nguyễn Hoàng Anh Email: nhanh@fit.hcmus.edu.vn hoanganhis@gmail.com ĐH KHTN, 2011 Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – Đ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 – nhanh@fit.hcmus.edu.vn – Đ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 – nhanh@fit.hcmus.edu.vn – Đ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 – nhanh@fit.hcmus.edu.vn – Đ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 – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011 Session Tracking Cài đặt Session Tracking sử dụng – Servlet Session API 6 Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – Đ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 – nhanh@fit.hcmus.edu.vn – Đ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 – nhanh@fit.hcmus.edu.vn – Đ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 – nhanh@fit.hcmus.edu.vn – Đ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 [...]...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(""); out.println("Show Session"); out.println(""); out.println(""); out.println("THÔNG TIN SESSION"); Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011 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("ID"); out.println(" " + session. getId() + ""); out.println(" "); out.println(" "); out.println(" Thời gian tạo lần đầu tiên"); out.println(" " + new Date (session. getCreationTime()) + ""); out.println(" "); out.println(" "); out.println(" Thời gian truy cập lần cuối "); out.println(" " + new Date (session. getLastAccessedTime()) + "");... Date (session. getLastAccessedTime()) + ""); out.println(" "); Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011 Servlet Session API – Access Count 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 13 out.println(" "); out.println(" Thời gian timeout"); out.println(" " + session. getMaxInactiveInterval() + ""); out.println(" "); out.println(" "); out.println(" Số lần truy cập");... – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011 BookOnline – Cơ sở dữ liệu 17 Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – Đ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 – http://courses.coreservlets.com/Course-Materials/csajsp2.html 18 Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011 HỎI VÀ ĐÁP 19... "+accessCount + ""); out.println(" "); out.println(""); out.println(""); out.println(""); out.println(""); Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011 Servlet Session API – Access Count 14 Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – Đ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 . Client 2 Session ID 1 Session ID 2 Session 1 Session 2 Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011 Session Tracking Cài đặt Session Tracking sử dụng – Servlet Session API. nhanh@fit.hcmus.edu.vn – Đ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. trong session HttpSession session = request.getSession(); session. invalidate(); Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011 Session Tracking – Servlet Session API 10 1