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

Tìm hiểu spring restful API và xây dựng website bán sách online

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 (5.46 MB, 120 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
THÀNH PHỐ HỒ CHÍ MINH

ĐỒ ÁN TỐT NGHIỆP
NGÀNH CƠNG NGHỆ THƠNG TIN

TÌM HIỂU SPRING RESTFUL API VÀ XÂY DỰNG
WEBSITE BÁN SÁCH ONLINE

GVHD:NGUYỄN MINH ĐẠO
SVTT:ĐÀO THỊ MỸ
MSSV:15110252
SVTT:NGUYỄN VIẾT THANH
MSSV:15110310

SKL 0 0 5 7 7 7

Tp. Hồ Chí Minh, tháng 07/2019


TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN CÔNG NGHỆ PHẦN MỀM
----------

ĐÀO THỊ MỸ
: 15110252
NGUYỄN VIẾT THANH : 15110310

Đề Tài:



TÌM HIỂU SPRING RESTFUL API VÀ
XÂY DỰNG WEBSITE BÁN SÁCH ONLINE
KHÓA LUẬN TỐT NGHIỆP KỸ SƯ CNTT

GIÁO VIÊN HƯỚNG DẪN
ThS. NGUYỄN MINH ĐẠO

KHÓA 2015 - 2019
1


TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN CÔNG NGHỆ PHẦN MỀM
----------

ĐÀO THỊ MỸ
: 15110252
NGUYỄN VIẾT THANH : 15110310

Đề Tài:

TÌM HIỂU SPRING RESTFUL API VÀ
XÂY DỰNG WEBSITE BÁN SÁCH ONLINE
KHÓA LUẬN TỐT NGHIỆP KỸ SƯ CNTT

GIÁO VIÊN HƯỚNG DẪN
ThS. NGUYỄN MINH ĐẠO


KHÓA 2015 - 2019

2


ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

KHOA CÔNG NGHỆ THÔNG TIN

Độc lập – Tự do – Hạnh phúc





PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Họ và tên Sinh viên 1: Đào Thị Mỹ

MSSV 1: 15110252

Họ và tên Sinh viên 2: Nguyễn Viết Thanh

MSSV 2: 15110310

Ngành: Cơng nghệ Thơng tin
Tên đề tài: Tìm hiểu Spring Restful API và xây dựng website bán sách online
Họ và tên Giáo viên hướng dẫn: Th.S Nguyễn Minh Đạo
NHẬN XÉT

1. Về nội dung đề tài khối lượng thực hiện:
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
2. Ưu điểm:
......................................................................................................................................
......................................................................................................................................
3. Khuyết điểm:
......................................................................................................................................
......................................................................................................................................
4. Đề nghị cho bảo vệ hay khơng? ................................................................................
5. Đánh giá loại: ...........................................................................................................
6. Điểm: ........................................................................................................................
Tp. Hồ Chí Minh, ngày 12 tháng 07 năm 2019
Giáo viên hướng dẫn
(Ký & ghi rõ họ tên)

Th.S Nguyễn Minh Đạo

3


ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

KHOA CÔNG NGHỆ THÔNG TIN

Độc lập – Tự do – Hạnh phúc






PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
Họ và tên Sinh viên 1: Đào Thị Mỹ

MSSV 1: 15110252

Họ và tên Sinh viên 2: Nguyễn Viết Thanh

MSSV 2: 15110310

Ngành: Cơng nghệ Thơng tin
Tên đề tài: Tìm hiểu Spring Restful API và xây dựng website bán sách online
Họ và tên Giáo viên hướng dẫn: TS Lê Vĩnh Thịnh
NHẬN XÉT
1. Về nội dung đề tài khối lượng thực hiện:
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
2. Ưu điểm:
......................................................................................................................................
......................................................................................................................................
3. Khuyết điểm:
......................................................................................................................................
......................................................................................................................................
4. Đề nghị cho bảo vệ hay khơng? ................................................................................
5. Đánh giá loại: ...........................................................................................................
6. Điểm: ........................................................................................................................

Tp. Hồ Chí Minh, ngày 12 tháng 07 năm 2019
Giáo viên hướng dẫn
(Ký & ghi rõ họ tên)

TS Lê Vĩnh Thịnh
4


LỜI CẢM ƠN
Lời đầu tiên nhóm em xin chân thành cảm ơn thầy Nguyễn Minh Đạo đã hỗ trợ
giúp đỡ tận tình nhóm em hết mình. Đã cho chúng em những lời khun chân thành bổ
ích và đóng góp cho nhóm em những ý kiến để có thể hồn thành khóa luận tốt hơn.
Chúng em xin gửi lời cảm ơn đến tất cả thầy cô trong khoa Công nghệ thông tin
và các thầy cô khác trong trường đại học Sư phạm Kỹ Thuật TP.HCM đã dạy cho chúng
em những kiến thức quý báu để có thể áp dụng vào khóa luận này.
Trong q trình làm khóa luận này, chúng em đã cố gắng hoàn thành đề tài nhưng
do thời gian hạn chế và còn thiếu kinh nghiệm nên vẫn còn nhiều thiếu sót. Nhóm em
mong nhận được sự thơng cảm và chỉ bảo của các thầy/cơ để nhóm em có thể học hỏi,
bổ sung kiến thức để áp dụng trong cơng việc sau này.
Nhóm em xin chân thành cảm ơn!

5


ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

KHOA CÔNG NGHỆ THÔNG TIN


Độc lập – Tự do – Hạnh phúc





ĐỀ CƯƠNG LUẬN VĂN TỐT NGHIỆP
Họ và tên SV thực hiện: Đào Thị Mỹ

Mã Số SV: 15110252

Họ và tên SV thực hiện: Nguyễn Viết Thanh

Mã Số SV: 15110310

Chun ngành: Cơng Nghệ Phần Mềm
Tên đề tài: Tìm hiểu Spring Restful API và xây dựng website bán sách online
Giáo viên hướng dẫn: ThS. Nguyễn Minh Đạo
Nội dung thực hiện:
Lý thuyết:
- Tìm hiểu về Spring Framework: Spring MVC, Spring Security
- Tìm hiểu về kiến trúc Restful API.
Thực hành: Áp dụng xây dựng website bán sách online.
Kế hoạch thực hiện:
STT

Thời gian

1


18/03/2019 đến
24/03/2019

- Khảo sát thực trạng
- Phân tích yêu cầu, nhận diện tác nhân và
chức năng trong sơ đồ Usecase.

25/03/2019 đến
31/03/2019

- Đặc tả Usecase, thiết kế database.
- Tìm hiểu về Spring, Spring MVC,
Hibernate
- Tìm hiểu về kiến trúc Restful API.

2

Cơng việc

6

Ghi
chú


3

4

5


6

7

8

9

01/04/2019 đến
07/04/2019

- Thiết kế cơ sở dữ liệu từ phân tích
Usecase.
- Xác định các màn hình chính và luồng
chạy của từng chức năng đó.
- Xây dựng kiến trúc Restful API cho từng
chức năng.

08/04/2019 đến
14/04/2019

- Thiết kế giao diện các trang: đăng ký,
trang chủ.
- Viết các API: đăng ký, hiển thị sách được
mua nhiều nhất, hiển thị sách vừa được cập
nhật.
- Map các API với các giao diện tương ứng.

15/04/2019 đến

21/04/2019

- Thiết kế giao diện trang admin: quản lý
các chức năng thêm, xóa, sửa tác giả; tình
trạng đơn hàng, thanh tốn, nhà cung cấp.
- Viết các API: quản lý các chức năng thêm,
xóa, sửa.
- Map các API với các giao diện tương ứng.

22/04/2019 đến
28/04/2019

- Thiết kế giao diện trang admin: quản lý
các chức năng thêm, xóa, sửa vận chuyển;
loại sách, review sách.
- Viết các API: quản lý các chức năng
thêm, xóa, sửa.
- Map các API với các giao diện tương ứng.

29/04/2019 đến
05/05/2019

- Thiết kế giao diện trang admin: quản lý
các chức năng thêm, xóa, sửa sách
- Viết các API: quản lý các chức năng thêm
xóa sửa.
- Map các API với các giao diện tương ứng.

06/05/2019 đến
12/05/2019


- Thiết kế giao diện trang admin: quản lý
các chức năng thêm, xóa, sửa hóa đơn, tài
khoản.
- Viết các API: quản lý các chức năng thêm
xóa sửa.
- Map các API với các giao diện tương ứng.

13/05/2019 đến
19/05/2019

- Thiết kế giao diện các trang: đăng nhập,
thông tin cá nhân, chức năng khuyến mãi.
- Viết các API: đăng nhập, thông tin cá
nhân, khuyến mãi.
- Map các API với các giao diện tương ứng.

7


10

20/05/2019 đến
26/05/2019

- Thiết kế giao diện các trang: chi tiết sách,
giỏ hàng.
- Viết các API: chi tiết sách, giỏ hàng
- Map các API với các giao diện tương ứng


11

27/05/2019 đến
02/06/2019

- Ứng dụng Spring Security vào website.

12

03/06/2019 đến
09/06/2019

- Thiết kế giao diện các trang: hóa đơn,
thanh tốn của User
- Viết các API: hóa đơn, thanh tốn
- Map các API với các giao diện tương ứng

13

10/06/2019 đến
16/06/2019

- Nghiên cứu và thực hiện thêm chức năng
send mail tự động và xem lịch sử các sách
tìm kiếm

14

17/06/2019 đến
23/06/2019


- Chạy demo, kiểm thử các chức năng của
website.
- Fix các lỗi phát sinh trong quá trình
demo, kiểm thử.

15

24/06/2019 đến
30/06/2019

- Viết báo cáo, làm powerpoint.

Tp. Hồ Chí Minh, ngày 16 tháng 07 năm 2019
Người viết đề cương
(Ký & ghi rõ họ tên)
Ý kiến của giáo viên hướng dẫn
......................................................................
......................................................................
......................................................................
(Ký & ghi rõ họ tên)

Th.S Nguyễn Minh Đạo
8


MỤC LỤC
MỤC LỤC .................................................................................................................. 9
DANH MỤC BẢNG BIỂU ...................................................................................... 12
DANH MỤC HÌNH ẢNH ........................................................................................ 14

PHẦN MỞ ĐẦU ...................................................................................................... 16
1. Tính cấp thiết của đề tài ................................................................................ 16
2. Mục đích của đề tài ........................................................................................ 16
3. Cách tiếp cận và phương pháp nghiên cứu .................................................. 16
4. Phân tích những cơng trình có liên quan ...................................................... 17
5. Kết quả dự kiến đạt được .............................................................................. 17
PHẦN NỘI DUNG................................................................................................... 18
CHƯƠNG 1: SPRING FRAMEWORK ................................................................. 18
1.1.

Sự ra đời của Spring ................................................................................... 18

1.2.

Module Spring ............................................................................................ 18

1.3.

Spring MVC ................................................................................................ 21

1.3.1.

Giới thiệu về Spring MVC ................................................................... 21

1.3.2.

Mơ hình Spring MVC ........................................................................... 22

1.3.3. Các tính năng của Spring MVC ........................................................... 23
1.3.4.


The DispatcherServlet .......................................................................... 23

1.3.5.

Implementing Controllers .................................................................... 25

1.3.6.

Handler mappings ................................................................................ 25

1.3.7. Resolving views ..................................................................................... 26
1.4.

Spring security ............................................................................................ 26

1.4.1

Giới Thiệu .............................................................................................. 26

1.4.2 Các thành phần cốt lõi ........................................................................... 27
1.4.3. Áp dụng .................................................................................................. 28
1.5

Spring Data JPA ......................................................................................... 29

1.5.1

JPA là gì?.............................................................................................. 29


1.5.2

Hibernate .............................................................................................. 29

1.5.3

JPA trong Spring ................................................................................. 30

1.6

Đặc điểm của Spring................................................................................... 31

1.7

Ưu và nhược điểm của Spring.................................................................... 31

CHƯƠNG 2: RESTFUL API .................................................................................. 33
2.1

API là gì ? .................................................................................................... 33

2.2

Rest là gì? .................................................................................................... 33

2.3

Restful API là gì? ........................................................................................ 34
9



2.4

Những yếu tố cần thiết cho việc thiết kế một API ..................................... 34

2.5

Nguyên tắc khi sử dụng Restful API .......................................................... 35

2.6

Ràng buộc REST ........................................................................................ 36

2.7

Các điểm cần lưu ý về API ......................................................................... 38

2.8

Ưu điểm, nhược điểm khi sử dụng Restful API ........................................ 39

2.9

Khi nào nên sử dụng Restful API .............................................................. 40

2.10 Khó khăn khi sử dụng Restful API ............................................................ 40
CHƯƠNG 3: ỨNG DỤNG MINH HỌA ................................................................ 41
3.1.

Khảo sát hiện trạng .................................................................................... 41


3.2.

Xác định yêu cầu......................................................................................... 45

3.2.1. Nhận diện tác nhân và các chức năng ....................................................... 45
3.2.2.

Sơ đồ use case ........................................................................................ 47

3.2.3.

Đặc tả use case ...................................................................................... 48

3.2.3.1.

Use case Dang nhap ........................................................................... 48

3.2.3.2.

Use case Dang ky tai khoan ................................................................ 49

3.2.3.3.

Use case Sach theo nhom .................................................................... 50

3.2.3.4.

Use case Xem thong tin chi tiet sach ................................................... 51


3.2.3.5.

Use case Tim kiem sach ...................................................................... 51

3.2.3.6.

Use case Dang xuat ............................................................................ 52

3.2.3.7.

Use case Quan ly thong tin ca nhan .................................................... 52

3.2.3.8.

Use case Xem lich su mua hang .......................................................... 53

3.2.3.9.

Use case Xem lich su sach da xem ...................................................... 53

3.2.3.10. Use case Mua hang............................................................................. 54
3.2.3.11. Use case Quan ly gio hang ................................................................. 55
3.2.3.12. Use case Review sach ......................................................................... 56
3.2.3.13. Use case Quan ly sach ........................................................................ 57
3.2.3.14. Use case Quan ly hoa don................................................................... 58
3.2.3.15. Use case Quan ly tai khoan ................................................................. 59
3.2.3.16. Use case Quan ly khuyen mai ............................................................. 61
3.2.3.17. Use case Quan ly nha cung cap .......................................................... 63
3.2.3.18. Use case Quan ly tac gia .................................................................... 65
3.2.3.19. Use case Quan ly loai sach ................................................................. 66

3.2.3.20. Use case Quan ly binh luan ................................................................ 68
3.2.3.21. Use case Quan ly phuong thuc thanh toan .......................................... 68
3.2.3.22. Use case Quan ly phuong thuc van chuyen ......................................... 70
3.3.

Thiết kế hệ thống ........................................................................................ 73
10


3.4.

Thiết kế dữ liệu ........................................................................................... 83

3.4.1. Mơ hình cơ sở dữ liệu: ............................................................................... 83
3.4.2. Mô tả cơ sở dữ liệu .................................................................................... 84
3.4.3. Giao diện web ........................................................................................... 92
3.4.3.1. Trang chủ Guest ..................................................................................... 92
3.4.3.2. Đăng ký .................................................................................................. 94
3.4.3.3. Giao diện đăng nhập .............................................................................. 95
3.4.3.4. Giao diện trang chủ User ....................................................................... 96
3.4.3.5. Giao diện tìm kiếm.................................................................................. 97
3.4.3.6. Giao diện thơng tin cá nhân.................................................................... 98
3.4.3.7. Giao diện chi tiết sách ............................................................................ 99
3.4.3.8. Giao diện giỏ hàng ............................................................................... 100
3.4.3.9. Giao diện trang chủ Admin ................................................................... 101
3.4.3.10. Giao diện Quản lý tác giả ................................................................... 102
3.4.3.11. Giao diện chỉnh sửa tên tác giả .......................................................... 103
3.4.3.12. Giao diện thêm tác giả ........................................................................ 104
3.4.3.13. Giao diện xóa tác giả .......................................................................... 105
3.4.3.14. Giao diện quản lý Sách ....................................................................... 106

3.4.3.15. Giao diện chỉnh sửa thông tin Sách .................................................... 107
3.4.3.16. Giao diện quản lý tài khoản ................................................................ 108
3.4.3.17. Giao diện Thêm User .......................................................................... 109
3.5.

Kiểm thử phần mềm ................................................................................. 110

KẾT LUẬN ............................................................................................................ 114
1. Những kết quả đạt được .............................................................................. 114
2. Những khó khăn gặp phải ........................................................................... 114
3.

Ưu điểm ........................................................................................................ 116

4.

Hạn chế ........................................................................................................ 116

5.

Những kinh nghiệm được rút ra ................................................................. 116

6. Hướng phát triển trong tương lai: .............................................................. 117
TÀI LIỆU THAM KHẢO ..................................................................................... 118

11


DANH MỤC BẢNG BIỂU
Bảng 2.1: Bảng so sánh giữa SOAD và REST ........................................................... 34

Bảng 3.1: Nhận diện tác nhân và các chức năng trong sơ đồ use case ........................ 45
Bảng 3.2: Đặt tả use case Dang nhap ......................................................................... 48
Bảng 3.3: Đặt tả use case Dang ky tai khoan.............................................................. 49
Bảng 3.4: Đặt tả use case Sach theo nhom ................................................................. 50
Bảng 3.5: Đặt tả use case Xem thong tin chi tiet sach ................................................ 51
Bảng 3.6: Đặt tả use case Tim kiem sach ................................................................... 51
Bảng 3.7: Đặt tả use case Dang xuat .......................................................................... 52
Bảng 3.8: Đặt tả use case Quan ly thong tin ca nhan .................................................. 52
Bảng 3.9: Đặt tả use case Xem lich su mua hang ....................................................... 53
Bảng 3.10: Đặt tả use case Xem lich su sach da xem ................................................. 53
Bảng 3.11: Đặt tả use case Mua hang......................................................................... 54
Bảng 3.12: Đặt tả use case Quan ly gio hang ............................................................. 55
Bảng 3.13: Đặt tả use case Review sach..................................................................... 56
Bảng 3.14: Đặt tả use case Quan ly sach .................................................................... 57
Bảng 3.15: Đặt tả use case Quan ly hoa don .............................................................. 58
Bảng 3.16: Đặt tả use case Quan ly tai khoan............................................................. 59
Bảng 3.17: Đặt tả use case Quan ly khuyen mai ......................................................... 61
Bảng 3.18: Đặt tả use case Quan ly nha cung cap ...................................................... 63
Bảng 3.19: Đặt tả use case Quan ly tac gia................................................................. 65
Bảng 3.20: Đặt tả use case Quan ly loai sach ............................................................. 66
Bảng 3.21: Đặt tả use case Quan ly binh luan ............................................................ 68
Bảng 3.22: Đặt tả use case Quan ly phuong thuc thanh toan ...................................... 68
Bảng 3.23: Đặt tả use case phuong thuc van chuyen .................................................. 70
Bảng 3.24: Bảng user................................................................................................. 84
Bảng 3.25: Bảng role ................................................................................................. 84
Bảng 3.26: Bảng Book ............................................................................................... 85
Bảng 3.27: Bảng userreview ...................................................................................... 86
Bảng 3.28: Bảng typebook ......................................................................................... 86
Bảng 3.29: Bảng bill .................................................................................................. 87
Bảng 3.30:Bảng detailbill .......................................................................................... 87

Bảng 3.31: Bảng authorbook ..................................................................................... 88
Bảng 3.32: Bảng author ............................................................................................. 88
Bảng 3.33: Bảng cart ................................................................................................. 88
Bảng 3.34: Bảng detailpromotion .............................................................................. 89
Bảng 3.35: Bảng oderstatus ....................................................................................... 89
Bảng 3.36: Bảng payment .......................................................................................... 89
Bảng 3.37: Bảng promotion ....................................................................................... 90
Bảng 3.38: Bảng transport ......................................................................................... 90
Bảng 3.39: Bảng supplier ........................................................................................... 91
Bảng 3.40: Bảng tagsearch......................................................................................... 91
12


Bảng 3.41: Bảng history ............................................................................................ 91
Bảng 3.42: Bảng xử lý giao diện trang chủ ................................................................ 93
Bảng 3.43: Xử lý giao diện đăng ký ........................................................................... 94
Bảng 3.44: Xử lý giao diện đăng nhập ....................................................................... 95
Bảng 3.45: Xử lý giao diện trang chủ User ................................................................ 96
Bảng 3.46: Xử lý giao diện tìm kiếm ......................................................................... 97
Bảng 3.47: Xử lý giao diện thông tin cá nhân ............................................................ 98
Bảng 3.48: Xử lý quản lý chi tiết sách ....................................................................... 99
Bảng 3.49: Xử lý giao diện giỏ hàng ........................................................................ 100
Bảng 3.50: Bảng xử lý giao diện trang chủ admin .................................................... 101
Bảng 3.51: Bảng xử lý giao diện quản lý tác giả ...................................................... 102
Bảng 3.52:Bảng xử lý giao diện chỉnh sửa tác giả .................................................... 103
Bảng 3.53: Bảng xử lý giao diện thêm tác giả .......................................................... 104
Bảng 3.54: Bảng xử lý giao diện xóa tác giả ............................................................ 105
Bảng 3.55: Bảng xử lý giao diện quản lý sách.......................................................... 106
Bảng 3.56: Bảng xử lý giao diện chỉnh sửa sách ...................................................... 107
Bảng 3.57: Bảng xử lý giao diện quản lý tài khoản .................................................. 108

Bảng 3.58: Bảng xử lý giao diện thêm mới tài khoản ............................................... 109
Bảng 3.59: Kiểm thử phần mềm-Testcase ................................................................ 110
Bảng 4.1: Khó khăn cơng nghệ trong dự án ............................................................. 114
Bảng 4.2: Khó khăn con người trong dự án.............................................................. 115
Bảng 4.3: Khó khăn trong quy trình nghiệp vụ của dự án......................................... 116

13


DANH MỤC HÌNH ẢNH
Hình 1.1: Tổng quan về Spring Framework .............................................................. 19
Hình 1.2: Mơ hình Spring MVC ................................................................................ 22
Hình 1.3: Quy trình xử lý yêu cầu trong Spring Web MVC ....................................... 24
Hình 1.4: Kiến trúc JPA ............................................................................................. 29
Hình 1.5: Kiến trúc Hibernate .................................................................................... 30
Hình 2.1: Ví dụ về một API ....................................................................................... 33
Hình 2.2: Client và Server tương tác thơng qua RESTful API.................................... 37
Hình 2.3: Layered system (phân lớp hệ thống) ........................................................... 38
Hình 3.1: Giao diện trang Tiki.vn .............................................................................. 41
Hình 3.2: Giao diện trang Fahasa.com ....................................................................... 42
Hình 3.3: Giao diện trang vinabook.com.................................................................... 43
Hình 3.4: Giao diện trang phuongnambook.vn ........................................................... 44
Hình 3.5: Lược đồ Use case ....................................................................................... 47
Hình 3.6: Sơ đồ sequence diagram Dang nhap ........................................................... 73
Hình 3.7: Sơ đồ sequence diagram Chi tiet Sach ........................................................ 74
Hình 3.8: Sơ đồ sequence diagram Tim kiem sach ..................................................... 74
Hình 3.9: Sơ đồ sequence diagram Gio hang.............................................................. 75
Hình 3.10: Sơ đồ sequence diagram Mua hang .......................................................... 76
Hình 3.11: Sơ đồ sequence diagram Quan ly Thong tin ca nhan................................. 76
Hình 3.12: Sơ đồ sequence diagram Thong tin hoa don ............................................. 77

Hình 3.13: Sơ đồ sequence diagram Quan ly loai sach ............................................... 78
Hình 3.14: Sơ đồ sequence diagram Quan ly binh luan .............................................. 79
Hình 3.15: Sơ đồ sequence diagram quan ly sach....................................................... 80
Hình 3.16: Sơ đồ sequence diagram Quan ly tai khoan .............................................. 81
Hình 3.17: Sơ đồ sequence diagram Tinh trang hoa don ............................................ 82
Hình 3.18: Mơ hình cơ sở dữ liệu .............................................................................. 83
Hình 3.19: Giao diện trang chủ .................................................................................. 92
Hình 3.20: Giao diện đăng ký .................................................................................... 94
Hình 3.21: Giao diện đăng nhập................................................................................. 95
Hình 3.22: Giao diện trang chủ User .......................................................................... 96
Hình 3.23: Giao diện Tim kiếm ................................................................................. 97
Hình 3.24: Giao diện thơng tin cá nhân ...................................................................... 98
Hình 3.25: Giao diện chi tiết sách .............................................................................. 99
Hình 3.26: Giao diện giỏ hàng ................................................................................. 100
Hình 3.27: Giao diện trang chủ Admin .................................................................... 101
Hình 3.28: Giao diện quản lý tác giả ........................................................................ 102
Hình 3.29: Giao diện chỉnh sửa tác giả..................................................................... 103
Hình 3.30: Giao diện thêm tác giả ............................................................................ 104
Hình 3.31: Giao diện xóa tác giả .............................................................................. 105
Hình 3.32: Giao diện quản lý sách ........................................................................... 106
14


Hình 3.33: Giao diện chỉnh sửa thơng tin sách ......................................................... 107
Hình 3.34: Giao diện quản lý tài khoản .................................................................... 108
Hình 3.35: Giao diện thêm mới tài khoản ................................................................ 109

15



PHẦN MỞ ĐẦU
1. Tính cấp thiết của đề tài
Restful API là một tiêu chuẩn dùng trong việc thiết kế API cho các ứng dụng web để
quản lý các resource. Restful là một trong những kiểu thiết kế API được sử dụng phổ
biến nhất ngày nay.Vì vậy việc tìm hiểu các kiến thức và cách ứng dụng của Spring
Restful là rất cần thiết cho các lập trình viên. Với bài khóa luận này, nhóm chúng em
tập trung tìm hiểu về Spring Framework và kiến trúc Restful API để có một cái nhìn rõ
nét hơn về Spring Restful API.
Hiện nay, với sự phát triển của cơng nghệ rất nhiều mơ hình thành công từ việc ứng
dụng các công nghệ của cuộc CMCN 4.0 vào trong hoạt động kinh doanh cũng như đời
sống kinh tế, xã hội… Chỉ cần ngồi bất cứ đâu có internet và với một cú click chuột
khách hàng có thể mua được mọi thứ cần mua và làm mọi việc cần làm. Chính vì thế,
nhu cầu mua sắm của mọi người trên các website online theo đó ngày càng phát triển.
Với nhu cầu thị trường như vậy thì nhóm em cũng muốn xây dựng một website online
với mặt hàng “sách” – một mặt hàng rất hay và vô cùng cần thiết, để có thể ứng dụng
kiến thức Spring Restful API đã tìm hiểu được và có thể xây dựng một ứng dụng mang
tính thực tế.
2. Mục đích của đề tài
- Tìm hiểu về Spring: Spring MVC, Spring Security
- Tìm hiểu về Restful API.
- Áp dụng những kiến thức về Spring Framework với tiêu chuẩn Restful API và các
kiến thức liên quan để xây dựng một website bán sách online.
3. Cách tiếp cận và phương pháp nghiên cứu
- Đối tượng nghiên cứu
+ Spring Restful API: Spring MVC, Spring Security, Restful API.
+ Database: MySQL
- Phạm vi nghiên cứu
Với bài tiểu luận chun ngành này, nhóm em sẽ tập trung tìm hiểu và thực hiện các
nội dung sau:
+ Giới thiệu Spring Framework với những nội dung cơ bản, điểm mạnh, điểm yếu và

lợi ích mang lại cho nhà phát triển phần mềm, cụ thể là trình bày 2 module: Spring MVC,
Spring Security.
16


+ Tìm hiểu các nội dung, kiến thức về tiêu chuẩn Restful API.
+ Sau tất cả các kiến thức tìm hiểu ở trên, nhóm sẽ xây dựng website bán sách online
dựa trên Spring RestFul API.
4. Phân tích những cơng trình có liên quan
- Với sự cạnh tranh của các trang website bán lẻ qua mạng ngày càng lớn, các trang
website thay đổi về chức năng và cả giao diện để đáp ứng nhu cầu mua sắm của người
dùng. Nên các website bán hàng hiện nay phải đáp ứng được về cả giao diện đẹp, dễ
tìm được thứ người dùng cần và chức năng dễ sử dụng, tiện lợi.
- Nhiều tính năng được thêm vô để đem lại cho người dùng những trải nghiệm mới như
hình thức quay số trúng thẻ giảm giá hoặc các phần thưởng có giá trị, các khuyến mãi
được diễn ra liên tục hàng ngày để lôi cuốn người dùng đến với website nhiều hơn.
- Ngồi hình thức mua qua website thì nay các website cịn tích hợp với app trên điện
thoại nhằm đưa sản phẩm đến gần với người dùng hơn.
5. Kết quả dự kiến đạt được
- Hiểu được các kiến thức về Spring MVC, Spring Security, Restful API.
- Xây dựng hoàn thành một website bán sách online với những kiến thức đã tìm hiểu.

17


PHẦN NỘI DUNG
CHƯƠNG 1: SPRING FRAMEWORK
Spring là một framework giúp các nhà phát triển xây dựng những hệ thống và ứng
dụng chạy trên JVM một cách đơn giản, tiện gọn, nhanh chóng và mềm dẻo.
1.1. Sự ra đời của Spring

Vào năm 2002, Spring Framework phát hành phiên bản đầu tiên bởi Rod Johnson.
Việc xây dựng các ứng dụng doanh nghiệp trở nên đơn giản và dễ dàng hơn. Rod
Johnson đã cho xuất bản một cuốn sách được phổ biến rộng rãi có nhan đề "J2EE
Development without EJB". Điều này đã cho Spring Framework rất nhiều động lực để
thay thế EJB.
Theo đà phát triển đó, Spring đã trở thành framework mã nguồn mở phổ biến nhất để
xây dựng các ứng dụng doanh nghiệp. Cách tiếp cận thực tế ban đầu của Rod Johnson
tiếp tục được phát triển và hướng tới một bộ cơng cụ hồn chỉnh dành cho xây dựng các
ứng dụng doanh nghiệp. Theo một số nguồn, trên 50% các ứng dụng web Java hiện nay
đang sử dụng Spring.
Để ngăn chặn sự phức tạp trong phát triển các ứng dụng, Spring Framework thường
dựa trên các quan điểm như sau:
- Đơn giản hóa cơng việc phát triển thơng qua việc sử dụng các POJO (Plain Old
Java Object)
- Nới lỏng ràng buộc giữa các thành phần thông qua việc sử dụng Dependency
Injection
- Giảm thiểu các mã boilerplate thông qua việc sử dụng template và aspect .
1.2. Module Spring
Spring Framework bao gồm các tính năng được tổ chức thành khoảng 20 mơ-đun.
Những mơ-đun này được nhóm vào Core Container, Data Access/Integration, Web,
AOP (Aspect Oriented Programming), Instrumentation, Messaging, and Test.

18


Hình 1.1: Tổng quan về Spring Framework

Core Container
Core Container bao gồm các mô-đun spring-core, spring-beans, spring-context,
springcontext-support, and spring-expression (Spring Expression Language) modules.

Các mô-đun spring-core và spring-bean cung cấp các phần cơ bản của khung, bao gồm
các tính năng IoC và Dependency Injection.
The Context (spring-context) module xây dựng trên nền tảng vững chắc được cung
cấp bởi các mô-đun Core và Beans. The Context module kế thừa các tính năng của nó
từ mơ-đun Beans. The Context module cũng hỗ trợ các tính năng Java EE như EJB,
JMX và điều khiển từ xa cơ bản.
The Context module là tiêu điểm của mô-đun Context. Hỗ trợ spring-context cung
cấp hỗ trợ cho việc tích hợp các thư viện chung của bên thứ ba vào bối cảnh ứng dụng
Spring để lưu vào bộ đệm (EhCache, Guava, JCache), gửi thư (JavaMail), lên lịch
(CommonJ, Quartz) và các công cụ mẫu (FreeMarker, JasperReports, Velocity) . The
Spring-expression module cung cấp ngôn ngữ mạnh mẽ để truy vấn và thao tác biểu đồ
đối tượng khi chạy. Ngôn ngữ hỗ trợ cài đặt và nhận các giá trị thuộc tính, gán thuộc
tính, gọi phương thức, truy cập nội dung của mảng
19


AOP và Instrumentation
AOP và Thiết bị Mô-đun Spring-aop cung cấp triển khai lập trình hướng theo khía
cạnh tn thủ AOP Alliance, cho phép bạn xác định, ví dụ, các phương thức chặn và cắt
điểm để tách mã rõ ràng thực hiện chức năng cần tách rời.
Spring-aspects cung cấp tích hợp với AspectJ.
The spring-instrument module cung cấp hỗ trợ thiết bị lớp và triển khai trình nạp lớp
được sử dụng trong các máy chủ ứng dụng nhất định. Mô-đun spring-instrument-tomcat
chứa tác nhân thiết bị Spring Spring cho Tomcat.
Messaging
Spring Framework 4 bao gồm một mơ-đun spring-messaging với các tóm tắt chính
từ dự án Tích hợp Spring như Message, MessageChannel, MessageHandler và các môđun khác để làm nền tảng cho các ứng dụng dựa trên nhắn tin. Mô-đun này cũng bao
gồm một tập hợp các chú thích để ánh xạ các thơng điệp tới các phương thức, tương tự
như mơ hình lập trình dựa trên chú thích Spring MVC.
Data Access/Integration

Data Access/Integration bao gồm các mô đun JDBC, ORM, OXM, JMS và
Transaction modules.
Mô-đun spring-jdbc cung cấp lớp trừu tượng JDBC, loại bỏ nhu cầu thực hiện riêng
lẻ mã hóa JDBC và phân tích mã lỗi cụ thể của nhà cung cấp cơ sở dữ liệu.
The spring-tx module hỗ trợ quản lý giao dịch khai báo và lập trình cho các lớp thực
hiện các giao diện đặc biệt và cho tất cả POJO của bạn (Các đối tượng Java cũ đơn giản).
The spring-orm module cung cấp các lớp tích hợp cho các API ánh xạ quan hệ đối
tượng phổ biến, bao gồm JPA, JDO và Hibernate. Sử dụng mơ-đun spring-orm, bạn có
thể sử dụng tất cả các khung O/Rmapping này kết hợp với tất cả các tính năng khác mà
Spring cung cấp, chẳng hạn như đơn giản tính năng quản lý giao dịch khai báo đã đề
cập trước đó.
Mơ-đun spring-oxm cung cấp một lớp trừu tượng hỗ trợ ánh xạ Object / XML các
triển khai như JAXB, Castor, XMLBeans, JiBX và Xstream
The spring-jms module (Java Messaging Service) chứa các tính năng để sản xuất và
tiêu thụ tin nhắn.

20


Web
The Web layer bao gồm spring-web, spring-webmvc, spring-websocket, and
springwebmvc-portlet modules.
Spring-web cung cấp các tính năng tích hợp hướng web cơ bản, chẳng hạn như tải
lên tệp nhiều phần chức năng và khởi tạo bộ chứa IoC bằng trình nghe Servlet và định
hướng web bối cảnh ứng dụng. Nó cũng chứa một ứng dụng khách HTTP và các phần
liên quan đến web của điều khiển từ xa Spring
Spring-webmvc chứa bộ điều khiển mơ hình Springview (MVC) và triển khai Dịch
vụ web REST cho các ứng dụng web. Spring MVC khung cung cấp một sự tách biệt rõ
ràng giữa mã mơ hình miền và các biểu mẫu web và tích hợp với tất cả các tính năng
khác của Spring Framework.

Mơ-đun spring-webmvc-portlet (cịn được gọi là mô-đun Web-Portlet) cung cấp
MVC triển khai được sử dụng trong môi trường Portlet và phản ánh chức năng của
spring-webmvc mô-đun.
Test
Hỗ trợ kiểm tra đơn vị và kiểm tra tích hợp các thành phần Spring với JUnit hoặc
TestNG. Nó cung cấp tải nhất quán Spring ApplicationContexts và bộ nhớ đệm. Nó
cũng cung cấp các đối tượng giả mà bạn có thể sử dụng để kiểm tra mã của mình một
cách cơ lập.
1.3. Spring MVC
1.3.1. Giới thiệu về Spring MVC
The Spring Web model-view-controller (MVC) framework được thiết kế xung quanh
một DispatcherServlet gửi yêu cầu đến trình xử lý, với ánh xạ trình xử lý có thể định
cấu hình, xem độ phân giải, thời gian độ phân giải vùng và chủ đề cũng như hỗ trợ tải
lên tập tin. Trình xử lý mặc định dựa trên Chú thích @Controller và @RequestMapping,
cung cấp một loạt các phương thức xử lý linh hoạt.
Với sự ra mắt của Spring 3.0, cơ chế @Controller cũng cho phép bạn tạo RESTful.
Các trang web và ứng dụng, thơng qua chú thích @PathVariable và các tính năng khác.

21


1.3.2. Mơ hình Spring MVC

Hình 1.2: Mơ hình Spring MVC

Model (Mơ hình):
Mơ hình gồm các lớp java có nhiệm vụ:
+ Biểu diễn data và cho phép truy cập tới để get và set data trong (JAVABEAN), thường
thì phần layer này mô phỏng một cách đầy đủ đối tượng từ thế giới thực.
+ Nhận các yêu cầu từ View (khung nhìn).

+ Thi hành các u cầu đó (tính tốn, kết nối CSDL, …).
+ Trả về các giá trị tính tốn theo yêu cầu của Controller.
View (khung nhìn):
Bao gồm các mã tương tự như JSP, HTML, CSS, XML, Javascript, JSON,… để hiển
thị giao diện người dùng, các dữ liệu trả về từ Model thơng qua Controller.
Controller (Bộ điều khiển):
Đồng bộ hố giữa View (khung nhìn) và Model (mơ hình). Tức là với một trang JSP
này thì sẽ tương ứng với lớp java nào để xử lý nó và ngược lại, kết quả sẽ trả về trang
jsp nào. Nó đóng vai trị điều tiết giữa View và Model.
Như vậy, chúng ta có thể tách biệt được các mã java ra khỏi mã html. Người thiết kế
giao diện và người lập trình java có thể mang tính chất độc lập tương đối.
Việc debug hay bảo trì sẽ dễ dàng hơn, việc thay đổi các giao diện của trang web
cũng dễ dàng hơn.

22


1.3.3. Các tính năng của Spring MVC
-

Phân tách rõ ràng vai trị. Mỗi vai trị - trình điều khiển, trình xác nhận, đối tượng

lệnh, đối tượng biểu mẫu, mơ hình đối tượng, DispatcherServlet, ánh xạ xử lý, trình
phân giải khung nhìn, v.v. - có thể được thực hiện bởi một đối tượng chuyên ngành.
-

Cấu hình mạnh mẽ và đơn giản của cả các lớp khung và ứng dụng như

JavaBeans.Khả năng cấu hình này bao gồm tham chiếu dễ dàng trên các bối cảnh
-


Khả năng thích ứng, khơng xâm phạm và linh hoạt. Xác định bất kỳ chữ ký

phương thức điều khiển nào bạn cần,có thể sử dụng một trong các chú thích tham số
(chẳng hạn như: @RequestParam, @RequestHeader,@PathVariable, và nhiều hơn nữa)
cho một kịch bản nhất định.
1.3.4. The DispatcherServlet
Spring MVC web MVC framework, giống như nhiều khung MVC web khác, được
điều khiển theo yêu cầu, được thiết kế xung quanh một Servlet trung tâm gửi các yêu
cầu tới các bộ điều khiển và cung cấp các chức năng khác tạo điều kiện phát triển các
ứng dụng web. Tuy nhiên, Spring DispatcherServlet hơn thế. Nó được tích hợp hồn
tồn với bộ chứa Spring IoC và như vậy cho phép bạn sử dụng mọi tính năng khác mà
Spring có.
Quy trình xử lý yêu cầu của Spring Web MVC DispatcherServlet được minh họa
trong sơ đồ sau.

23


Hình 1.3: Quy trình xử lý yêu cầu trong Spring Web MVC

DispatcherServlet là một Servlet thực tế (nó kế thừa từ lớp cơ sở httpServlet) và như
vậy được khai báo trong ứng dụng web của bạn. Bạn cần ánh xạ các yêu cầu mà bạn
muốn DispatcherServlet xử lý, bằng cách sử dụng ánh xạ URL. Dưới đây là cấu hình
Java EE Servlet tiêu chuẩn trong môi trường Servlet 3.0+:
public class Mywebapplication implements WebApplicationInitializer {
public void onStartup(ServletContext servletContext) throws ServletException {
ServletRegistration.Dynamic
reDynamic=servletContext.addServlet("example", new DispatcherServlet());
reDynamic.setLoadOnStartup(1);

reDynamic.addMapping("/example");
}
}

DispatcherServlet là một Servlet thực tế (nó kế thừa từ lớp cơ sở httpServlet) và như
vậy được khai báo trong tệp web.xml của ứng dụng web của bạn. Bạn cần ánh xạ các
yêu cầu mà bạn muốn DispatcherServlet xử lý, bằng cách sử dụng ánh xạ URL trong
cùng một tệp web.xml.

24


×