1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng lập trình ứng dụng mạng bài 8 GV võ tấn dũng

51 210 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 51
Dung lượng 0,91 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bây giờ ta sử dụng session trong một ứng dụng rất thực tế đó là áp dụng để xây dựng shopping cart cho các trang web mua sắm trên mạng.. • Đối tượng session là nơi lý tưởng để xây dựng sh

Trang 2

PHẦN 1 TÌM HIỂU VỀ GIỎ HÀNG

(SHOPPING CART)

Trang 3

• Thiết kế giỏ hàng (shopping cart) với session.

• Thiết kế giỏ hàng với cơ sở dữ liệu

• Tìm hiểu cookies

Trang 4

KHÁI NIỆM GIỎ HÀNG

• Để mua hàng trên mạng chúng ta cần một giỏ hàng Đó

chính là shopping cart

• Các mặt hàng hiển thị trên trang web cho ta chọn rồi

đưa vào giỏ hàng Giỏ hàng sẽ cho biết tổng số mặt

hàng mà bạn đã mua cùng với giá phải thanh toán

• Bạn có thể thêm bớt số lượng hoặc loại bỏ, chọn lại các

mặt hàng khác

• Có hai cách để xây dựng shopping cart:

– Sử dụng session.

Trang 5

KHÁI NIỆM GIỎ HÀNG

• Chương trước ta đã dùng session và application để lưu

dữ liệu để truyền qua lại giữa các trang web Bây giờ ta

sử dụng session trong một ứng dụng rất thực tế đó là áp

dụng để xây dựng shopping cart cho các trang web mua

sắm trên mạng

• Đối tượng session là nơi lý tưởng để xây dựng

shopping cart lưu các mặt hàng mà người dùng chọn

mua trước khi thanh toán

• Ngoài ra ta còn có thể xây dựng giỏ hàng bằng cơ sở

dữ liệu để lưu các mặt hàng trong các bảng dữ liệu

Trang 6

CÁC PHƯƠNG THỨC CỦA GIỎ HÀNG

• Một giỏ hàng cần có những phương thức cơ bản thực

hiện những công việc sau:

– addItem: thêm một mục hàng mới vào giỏ hàng.

– removeItem: loại bỏ một mục hàng ra khỏi giỏ hàng.

– clearItem: xóa bỏ tất cả các mục hàng trong giỏ hàng.

– updateQuantity: thay đổi số lượng mua của một mục

hàng.

– getCost: cho biết tổng số tiền phải trả cho tất cả các mục

hàng có trong giỏ hàng.

Trang 7

THÔNG TIN CỦA MỘT MỤC HÀNG

• Một mục hàng (item) lưu trong giỏ hàng cần có những

thông tin cơ bản sau:

– Mã số của mục hàng (item id)

– Tên mục hàng (item desc)

– Đơn giá (price)

– Số lượng mua (quantity)

• Bởi vì giỏ hàng có thể chứa nhiều mục hàng tương ứng

với một khóa (item id) nên ta sử dụng bảng Hashtable

của Java (bảng này dùng để lưu các giá trị dựa trên

khóa) hoặc dùng các table của CSDL để lưu giá trị các

mục hàng mà người dùng thêm vào

Trang 8

PHẦN 2 XÂY DỰNG GIỎ HÀNG

VỚI SESSION

Trang 9

XÂY DỰNG GIỎ HÀNG VỚI SESSION

• Sau đây ta tiến hành viết code xây dựng giỏ hàng với

session trong lớp ShoppingCart.java

Trang 10

Lớp ShoppingCart.java

Trang 12

Lớp ShoppingCart.java (tt)

Trang 14

Biên dịch ShoppingCart.java

• Biên dịch lớp ShoppingCart nói trên thành file

ShoppingCart.class và chép file class này vào thư mục

WEB-INF\cart\classese của ứng dụng Bạn sẽ có một

giỏ hàng sẵn sàng phục vụ cho các ứng dụng mua sắm

trên mạng chuyên nghiệp

• Chúng ta hãy xem và sử dụng lớp ShoppingCart này

như thế nào trong trang ShoppingCart.jsp sau đây:

Trang 16

ShoppingCart.jsp (tt)

Trang 18

ShoppingCart.jsp (tt)

Trang 20

ShoppingCart.jsp (tt)

Trang 22

• Ta có thể xây dựng một trang web độc lập khác để

kiểm tra trang ShoppingCart.jsp

Trang 24

Giải thích (ShoppingCart.jsp)

• Trong trang ShoppingCart.jsp, trước hết chúng ta tìm

xem đối tượng giỏ hàng mang tên “cart” đã được lưu

trong đối tượng session chưa Nếu chưa thì ta tạo mới

và lưu đối tượng này vào session

Trang 25

• Ta sử dụng một đoạn mã JavaScript phía trình khách để xác

định thao tác khi người dùng muốn loại bỏ hay cập nhật các

mặt hàng Sau khi đã xác định được thao tác xử lý, hành

động submit mới được gọi để chuyển dữ liệu về lại cho

trang ShoppingCart.jsp trên trình chủ xử lý.

Trang 26

PHẦN 3 XÂY DỰNG GIỎ HÀNG

VỚI CƠ SỞ DỮ LIỆU

Trang 27

• Session để lưu các trạng thái hiện thời của người dùng

khi người dùng duyệt web nhưng session không lưu dữ

liệu được lâu Session chỉ lưu được dữ liệu trong một

khoảng thời gian nào đó Quá thời gian này, các dữ liệu

trong session sẽ bị hủy bỏ

• Session chỉ có giá trị cục bộ trên một máy chủ Web

Server Trong thực tế, các ứng dụng web có tính đa

quốc gia Các máy Web Server của một tổ chức có thể

đặt ở nhiều nơi, các mục hàng để ở các Web Server

khác nhau Nếu dùng session trong trường hợp này là

không được

• Khi người dùng đang mua hàng online, máy chủ có thể

gặp sự cố Lúc đó đối tượng session sẽ bị mất

Trang 28

SHOPPING CART VỚI CƠ SỞ DỮ LIỆU

• Thay vì tạo giỏ hàng với session và lưu các mục hàng

trong Hashtable, ta sẽ tạo giỏ hàng với CSDL và lưu

các mục hàng trong một table của CSDL

• Table này có cấu trúc như sau:

CREATE TABLE shoppingCart(user_id varchar (50),

item_id int, item_desc varchar(200), price float,

quantity int)

• Bảng này dùng để lưu trữ thông tin mua hàng của một

người dùng Vì vậy, ta phải buộc người dùng đăng

nhập vào hệ thống trước khi mua hàng và ta phải sử

Trang 30

ShoppingCartDB.java (tt)

Trang 32

ShoppingCartDB.java (tt)

Trang 34

ShoppingCartDB.java (tt)

Trang 35

• Để sử dụng đối tượng ShoppingCartDB này, ta cần bổ sung vào

trang ShoppingCart.jsp đoạn mã để kiểm tra xem người dùng đã

đăng nhập hay chưa và thiết lập giá trị UserID tương ứng cho

giỏ hàng trước khi sử dụng.

Trang 36

Giải thích (ShoppingCartDB.java) (tt)

• Trong quá trình mua hàng ta có thể thêm, bớt, xóa các

mặt hàng Nếu chưa quyết định mua hàng, ta có thể

thoát khỏi trình duyệt để chấm dứt session Trong lần

mua hàng tiếp theo, thông tin trong giỏ hàng vẫn còn

tồn tại để ta tiếp tục quá trình giao dịch

• Cài đặt giỏ hàng với session hay với CSDL là tùy theo

nhu cầu của ứng dụng web đòi hỏi

• Tuy nhiên, ta cũng còn một cơ chế lưu trữ trạng thái

khác nữa Cơ chế này diễn ra tại trình khách và khá

Trang 37

CỦA COOKIES

Trang 38

LƯU GIAO DỊCH BẰNG COOKIES

• Session là cơ chế lưu vết các trạng thái tại trình chủ

Nếu muốn lưu vết trạng thái giao dịch phía máy khách

thì ta dùng kỹ thuật cookies

• Cookies là một mẩu thông tin gồm tên và giá trị thể

hiện (tương tự biến) Ta có thể sử dụng ngôn ngữ kịch

bản JavaScript để tạo các mẩu cookies

• Trình duyệt cho phép chúng ta tạo ra các mẩu cookies

và ghi nhớ xuống máy khách Cookies cũng có thể

được tạo từ trình chủ (cụ thể là Servlet) và yêu cầu

trình duyệt lưu xuống máy khách

Trang 40

COOKIES LƯU VẾT PHÍA TRÌNH KHÁCH

Trang 41

• Trang web vừa rồi của ta có tên cookieshow.html

Trang web này sử dụng JavaScript để tạo mẩu tin

cookies mang tên “pagecolor” với giá trị “yellow”

• Hàm setCookie() trong trang web này rất đơn giản, nó

chỉ gọi đối tượng document của trang để lưu trị và tên

cookie: setCookie(“pagecolor”,”yellow”)

• Hàm getCookieVal() để đọc lại giá trị của cookie Mỗi

mẩu tin trong cookie được phân cách nhau bằng dấu

chấm phẩy(;)

• Hàm escape của JavaScript giúp ta loại bỏ các ký tự

đặc biệt trong cookies hoặc chuyển các ký tự đặc biệt

thành dạng mã hóa khác

Trang 42

GIẢI THÍCH (cookieshow.html)

• Kết quả hiển thị của mẩu tin vừa mới tạo trên trình

duyệt IE như hình sau Ngoài mẩu tin

pagecolor=yellow thì ta có thể nhận được một số mẩu

tin cookie khác do trình duyệt tạo ra

Trang 43

GỬI COOKIE LÊN TRÌNH CHỦ

• Trang web cookieshow.html mà ta đã thiết kế có thẻ

FORM gọi đến Servlet mang tên CookieListing

• Khi ta nhấn nút “Send cookies to server” thì trình duyệt

sẽ gọi đến Servlet CookieListing trên máy chủ Đồng

thời toàn bộ cookies trên máy khách cũng sẽ được trình

duyệt đóng gói gửi đi

• Servlet CookieListing này được thiết kế để tiếp nhận

cookie của trình khách

Trang 44

CookieListing.java

Trang 46

CookieListing.java (tt)

Trang 47

Biên dịch cookieListing.java Đăng ký servlet này với trình chủ Trở lại

trang Cookieshow.html, nhấn vào nút “Send cookies to Server” được kết

quả như hình trên.

Trang 48

GIẢI THÍCH (CookieListing.java)

• CookieListening của ta tiếp nhận được mẩu tin cookie

mang tên “pagecolor=yellow” từ trình khách bằng cách gọi

hàm getcookieValue().

• Hàm này sử dụng danh sách cookies do đối tượng req trả về

để tìm ra cookie mang tên “pagecolor” Màu nền trang web

phản hồi từ CookieListing được định màu như giá trị

cookie pagecolor đã yêu cầu (vàng).

• Đồng thời CookieListening cũng tạo thêm một cookie mới

servervar1 với giá trị vardata1 trả về cho trình khách.

• Phía trình khách, trang web của ta tạo mã JavaScript gọi

Trang 49

• Thông thường cookie được dùng để lưu các giá trị cần thiết

nhưng không quan trọng Ví dụ, ta có thể lưu thông tin của

người dùng đã ghé thăm Website của mình Trong lần viếng

thăm khác ta sẽ làm họ ngạc nhiên vì đã hiển thị lại đúng thông

tin trước đó.

• Hoặc những ứng dụng WebMail như Yahoo sử dụng cookie để

lưu thông tin người dùng đăng nhập trước đó Khi người dùng

mở trang web khác thay vì yêu cầu đăng nhập lại,Yahoo mail sử

thông dụng tin của cookie để chứng thực.

• Ta có thể quy định thời gian hiệu lực của cookie bằng gọi

phương thức setMaxAge() Đối số truyền cho phương thức này

là kiểu int quy định số giây mà cookie được phép lưu trữ trên

trình khách.

Trang 50

GIẢI THÍCH (CookieListing.java)

• Ví dụ để thiết lập cookie được phép lưu trữ trong vòng 8 tiếng,

ta có thể gọi setMaxAge từ trang JSP hoặc một servlet như sau:

• Nếu bạn truyền cho setMaxAge() giá trị âm thì cookie sẽ bị xóa

khỏi máy khách khi trình duyệt đóng lại.

Ngày đăng: 04/12/2015, 20:44

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w