Tải bản đầy đủ (.docx) (123 trang)

(Đồ án tốt nghiệp) 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 (4.56 MB, 123 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

SKL005777

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Ỹ
NGUYỄN VIẾT THANH

Đề 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Ỹ
NGUYỄN VIẾT THANH

Đề 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
1

Thời gian
18/03/2019 đến

24/03/2019

2


25/03/2019 đến

31/03/2019

Cơng việc
- 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.
- Đặ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.

6

Ghi
chú


- Thiết kế cơ sở dữ liệu từ
3

01/04/2019 đến

07/04/2019

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.
4

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.

5

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.
6

22/04/2019 đến

28/04/2019

7

29/04/2019 đến

05/05/2019

- Map các API với các giao diện tương ứng.
- 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.
- 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

8

06/05/2019 đến

12/05/2019


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

9

13/05/2019 đến

19/05/2019

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.
- 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


(Ký & ghi rõ họ tên)

Th.S Nguyễn Minh Đạo

8

MỤC LỤC.........................................................................................

DANH MỤC BẢNG BIỂU.............................................................

DANH MỤC HÌNH ẢNH................................................................

PHẦN MỞ ĐẦU .............................................................................

1. Tính cấp thiết của đề tài .......................................................

2. Mục đích của đề tài ................................................................

3. Cách tiếp cận và phương pháp nghiên cứu ........................

4. Phân tích những cơng trình có liên quan .............................

5. Kết quả dự kiến đạt được .....................................................

PHẦN NỘI DUNG..........................................................................

CHƯƠNG 1: SPRING FRAMEWORK.........................................

1.1. Sự ra đời của Spring ..........................................................
1.2.

Module Spr

1.3.


Spring MVC

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

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

1.3.3. Các tính năng của Spring MVC ....................................
1.3.4.
Tp. Hồ Chí
Minh, ngày 16 1.3.5.
tháng 07 năm
1.3.6.
2019

Ý kiến của giáo viên
hướng dẫn
.....................................
.................................
.....................................
.................................
.....................................
.................................

1.3.7.
Người viết đề cương
1.4.
(Ký & ghi rõ họ tên)
1.4.1


Spring secu

1.4.2
1.4.3.
1.5

Spring Data

1.5.1
1.5.2
1.5.3

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


1.7 Ưu và nhược điểm của Spring....................................................................
CHƯƠNG 2: RESTFUL API..................................................................................
2.1
2.2
2.3


2.4 Những yếu tố cần thiết cho việc thiết kế một API .....................................
2.5 Nguyên tắc khi sử dụng Restful API ..........................................................
2.6

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

2.7 Các điểm cần lưu ý về API .........................................................................
2.8 Ưu điểm, nhược điểm khi sử dụng Restful API ........................................

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

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

3.2. Xác định yêu cầu .........................................................................................
3.2.1. Nhận diện tác nhân và các chức năng .......................................................
3.2.2. Sơ đồ use case ........................................................................................
3.2.3. Đặc tả use case ......................................................................................
3.2.3.1.
3.2.3.2.
3.2.3.3.
3.2.3.4.
3.2.3.5.
3.2.3.6.
3.2.3.7.
3.2.3.8.
3.2.3.9.
3.2.3.10.
3.2.3.11.
3.2.3.12.
3.2.3.13.
3.2.3.14.
3.2.3.15.
3.2.3.16.
3.2.3.17.
3.2.3.18.
3.2.3.19.

3.2.3.20.
3.2.3.21.
3.2.3.22.
3.3.

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


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 ...........................................................
Bảng 3.1: Nhận diện tác nhân và các chức năng trong sơ đồ use case ........................
Bảng 3.2: Đặt tả use case Dang nhap .........................................................................
Bảng 3.3: Đặt tả use case Dang ky tai khoan ..............................................................
Bảng 3.4: Đặt tả use case Sach theo nhom .................................................................
Bảng 3.5: Đặt tả use case Xem thong tin chi tiet sach ................................................
Bảng 3.6: Đặt tả use case Tim kiem sach ...................................................................
Bảng 3.7: Đặt tả use case Dang xuat ..........................................................................
Bảng 3.8: Đặt tả use case Quan ly thong tin ca nhan ..................................................
Bảng 3.9: Đặt tả use case Xem lich su mua hang .......................................................
Bảng 3.10: Đặt tả use case Xem lich su sach da xem .................................................
Bảng 3.11: Đặt tả use case Mua hang .........................................................................
Bảng 3.12: Đặt tả use case Quan ly gio hang .............................................................
Bảng 3.13: Đặt tả use case Review sach.....................................................................
Bảng 3.14: Đặt tả use case Quan ly sach ....................................................................
Bảng 3.15: Đặt tả use case Quan ly hoa don ..............................................................

Bảng 3.16: Đặt tả use case Quan ly tai khoan.............................................................
Bảng 3.17: Đặt tả use case Quan ly khuyen mai .........................................................
Bảng 3.18: Đặt tả use case Quan ly nha cung cap ......................................................
Bảng 3.19: Đặt tả use case Quan ly tac gia .................................................................
Bảng 3.20: Đặt tả use case Quan ly loai sach .............................................................
Bảng 3.21: Đặt tả use case Quan ly binh luan ............................................................
Bảng 3.22: Đặt tả use case Quan ly phuong thuc thanh toan ......................................
Bảng 3.23: Đặt tả use case phuong thuc van chuyen ..................................................
Bảng 3.24: Bảng user .................................................................................................
Bảng 3.25: Bảng role .................................................................................................
Bảng 3.26: Bảng Book ...............................................................................................
Bảng 3.27: Bảng userreview ......................................................................................
Bảng 3.28: Bảng typebook .........................................................................................
Bảng 3.29: Bảng bill ..................................................................................................
Bảng 3.30:Bảng detailbill ..........................................................................................
Bảng 3.31: Bảng authorbook .....................................................................................
Bảng 3.32: Bảng author .............................................................................................
Bảng 3.33: Bảng cart .................................................................................................
Bảng 3.34: Bảng detailpromotion ..............................................................................
Bảng 3.35: Bảng oderstatus .......................................................................................
Bảng 3.36: Bảng payment ..........................................................................................
Bảng 3.37: Bảng promotion .......................................................................................
Bảng 3.38: Bảng transport .........................................................................................
Bảng 3.39: Bảng supplier ...........................................................................................
Bảng 3.40: Bảng tagsearch.........................................................................................
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 ..............................................................
Hình 1.2: Mơ hình Spring MVC ................................................................................
Hình 1.3: Quy trình xử lý yêu cầu trong Spring Web MVC .......................................
Hình 1.4: Kiến trúc JPA .............................................................................................

Hình 1.5: Kiến trúc Hibernate ....................................................................................
Hình 2.1: Ví dụ về một API .......................................................................................
Hình 2.2: Client và Server tương tác thơng qua RESTful API ....................................
Hình 2.3: Layered system (phân lớp hệ thống) ...........................................................
Hình 3.1: Giao diện trang Tiki.vn ..............................................................................
Hình 3.2: Giao diện trang Fahasa.com .......................................................................
Hình 3.3: Giao diện trang vinabook.com ....................................................................
Hình 3.4: Giao diện trang phuongnambook.vn ...........................................................
Hình 3.5: Lược đồ Use case .......................................................................................
Hình 3.6: Sơ đồ sequence diagram Dang nhap ...........................................................
Hình 3.7: Sơ đồ sequence diagram Chi tiet Sach ........................................................
Hình 3.8: Sơ đồ sequence diagram Tim kiem sach .....................................................
Hình 3.9: Sơ đồ sequence diagram Gio hang..............................................................
Hình 3.10: Sơ đồ sequence diagram Mua hang ..........................................................
Hình 3.11: Sơ đồ sequence diagram Quan ly Thong tin ca nhan.................................
Hình 3.12: Sơ đồ sequence diagram Thong tin hoa don .............................................
Hình 3.13: Sơ đồ sequence diagram Quan ly loai sach ...............................................
Hình 3.14: Sơ đồ sequence diagram Quan ly binh luan ..............................................
Hình 3.15: Sơ đồ sequence diagram quan ly sach.......................................................
Hình 3.16: Sơ đồ sequence diagram Quan ly tai khoan ..............................................
Hình 3.17: Sơ đồ sequence diagram Tinh trang hoa don ............................................
Hình 3.18: Mơ hình cơ sở dữ liệu ..............................................................................
Hình 3.19: Giao diện trang chủ ..................................................................................
Hình 3.20: Giao diện đăng ký ....................................................................................
Hình 3.21: Giao diện đăng nhập .................................................................................
Hình 3.22: Giao diện trang chủ User ..........................................................................
Hình 3.23: Giao diện Tim kiếm .................................................................................
Hình 3.24: Giao diện thơng tin cá nhân ......................................................................
Hình 3.25: Giao diện chi tiết sách ..............................................................................
Hình 3.26: Giao diện giỏ hàng .................................................................................

Hình 3.27: Giao diện trang chủ Admin ....................................................................
Hình 3.28: Giao diện quản lý tác giả ........................................................................
Hình 3.29: Giao diện chỉnh sửa tác giả.....................................................................
Hình 3.30: Giao diện thêm tác giả ............................................................................
Hình 3.31: Giao diện xóa tác giả ..............................................................................
Hình 3.32: Giao diện quản lý sách ...........................................................................
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, springcontext, 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


×