Với mong muốn góp một phần nhỏ bé công sức của mình trong việc giúp đỡ ngườimua, người bán dễ dàng tiếp cận với hình thức mua bán online, trong phạm vi làm đồ án tốt nghiệp này em đã quy
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC PHƯƠNG ĐÔNG
Trang 2MỤC LỤC
CHƯƠNG 1 TỔNG QUAN ĐỀ TÀI 6
1.1 Đặt vấn đề 6
1.2 Lý do chọn đề tài và mục đích của đề tài 2
1.3 1.3 Nhiệm vụ của đồ án 2
1.4 Hình thức mua hàng 3
1.5 Đối tượng và phạm vi nghiên cứu 4
1.6 Cấu trúc của báo cáo 4
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT ĐỀ TÀI 6
2.1 Tổng quan về website 6
2.1.1 Khái niệm về website 6
2.1.2 Lịch sử ra đời của website 6
2.1.3 Cách thức hoạt động của website 7
2.2 Tìm hiểu về HTML, CSS, JS 9
2.2.1 HTML (HyperText Markup Language) 9
2.2.2 CSS (Cascading Style Sheet Language) 10
2.2.3 Bootstrap 11
2.2.4 JS (Javascript) 12
2.3 2.3 Ngôn ngữ lập trình Java 13
2.3.1 Lịch sử phát triển 13
2.3.2 Các đặc điểm cơ bản của ngôn ngữ lập trình Java 14
2.3.3 Các platform cơ bản của Java 15
2.3.4 Cài đặt và lập trình Java 16
2.4 Spring Framework 17
Trang 32.5 Spring MVC Framework 19
2.6 SpringBoot 21
2.7 Spring Security 22
2.8 Hệ quản trị cơ sở dữ liệu MySQL 23
2.9 Json web token 25
2.9.1 Json web token là gì? 25
2.9.2 Giải thích về ba thành phần của jwt token 26
CHƯƠNG 3 PHÂN TÍCH THIẾT KẾ HỆ THỐNG 31
3.1 Khảo sát 31
3.1.1 Khảo sát người dùng 31
3.1.2 Khảo sát hệ thống Lazada.vn 31
3.1.3 Kết luận 33
3.2 Tổng quan hệ thống 34
3.2.1 Giới thiệu về phần mềm 34
3.2.2 Các tác nhân 34
3.2.3 Mục tiêu 34
3.2.4 Phạm vi 34
3.3 Quy trình nghiệp vụ của hệ thống 35
3.4 Tác nhân 35
3.5 Đặc tả USE-CASE 36
3.5.1 Đăng ký 36
3.5.2 Đăng nhập hệ thống 37
3.5.3 Tìm kiếm sản phẩm 38
3.5.4 Xem thông tin sản phẩm 39
3.5.5 Thêm giỏ hàng 39
Trang 43.6 Biểu đồ use-case 40
3.6.1 User-case tổng quan 40
3.6.2 User-case chi tiết hệ thống 41
3.7 Biểu đồ hoạt động 43
3.8 Biểu đồ tuần tự 48
3.9 Biểu đồ lớp 53
3.10 Biểu đồ thành phần 54
3.11 Biểu đồ triển khai 55
CHƯƠNG 4 XÂY DỰNG VÀ CÀI ĐẶT HỆ THỐNG 56
4.1 Mô tả chức năng giao diện 56
4.1.1 Chức năng quản lý sản phẩm 56
4.1.2 Chức năng quản lý khách hàng 57
4.1.3 Chức năng quản lý đơn hàng 58
4.1.4 Chức năng thống kê 59
4.1.5 Chức năng trang chủ 60
4.1.6 Chức năng xem sản phẩm 61
4.1.7 Chức năng giỏ hàng 62
4.1.8 Chức năng yêu thích 63
4.1.9 Chức năng giỏ hàng 64
4.1.10 Chức năng đặt hàng 65
CHƯƠNG 5 KẾT LUẬN VÀ ĐỊNH HƯỚNG PHÁT TRIỂN 66
5.1 Kết quả 66
5.2 Tồn tại các hạn chế 67
5.3 Phát triển 67
TÀI LIỆU THAM KHẢO 68
Trang 5DANH MỤC CÁC TỪ VIẾT TẮT VÀ GIẢI THÍCH CÁC THUẬT NGỮ
1 CSS Cascading Style Sheet
Language
Là thành phần dùng để định dạng lại phần tử cho website
6
HTTP Hypertext Transfer Protocol là giao thức truyền tải siêu văn
bản dùng để truyền tải dữ liệu giữa Webserver và client
7 MVC Model View Controller Mô hình thiết kế và phát triển
Trang 69 Language được kế thừa từ Standard
Generalized Markup Language
LỜI NÓI ĐẦU
Trang 7Sự phát triển của công nghệ thông tin đã và đang làm thay đổi toàn bộ thế giới,công nghệ thông tin có tác động đến mọi ngành nghề, mọi lĩnh vực trong xã hội như: muasắm, y tế, khoa học, công nghiệp, giáo dục Công nghệ thông tin được áp dụng rất nhiềuvào công việc, làm cho công việc trở nên dễ dàng, nhanh chóng, chính xác và tiện lợi hơn.Đặc biệt trong lĩnh vực thương mại điện tử, việc áp dụng thương mại điện tử vào mua sắmlàm cho việc mua bán hàng hoá trở lên thuận tiện hơn
Việc mua sắm trực tuyến đã trở thành một lựa chọn an toàn và phổ biến trongnhững năm qua, vì đa số người tiêu dùng đã tìm thấy sự thuận tiện và dễ dàng để chọn lựacửa hàng, sự thoải mái trong việc mua bán và thanh toán Một trong những yếu tố hấp dẫnnhất về mua sắm trực tuyến, nó làm giảm bớt việc phải xếp hàng chờ đợi cũng như tìmkiếm sản phẩm mình ưa thích trong cửa hàng
Sau thời gian tìm hiểu, nghiên cứu và áp dụng những kiến thức đã được dạy từthầy cô giáo trong suốt quá trình học tập tại trường Đại học Phương Đông, em đã quyết
định lựa chọn đề tài “Nghiên cứu xây dựng ứng dụng quản lý bán hàng trên nền tảng Spring” để làm đồ án tốt nghiệp.
Trong quá trình làm đồ án em vẫn còn nhiều sai sót, mong nhận được lời nhận xét
từ thầy cô và các bạn sinh viên
Em xin chân thành cảm ơn thầy cô giáo khoa Công nghệ thông tin và truyền thông
đã tận tình giảng dạy và cho em những kiến thức quý báu, đặc biệt là cô Nguyễn Thu Vân
đã sát sao hướng dẫn cho em làm đồ án này
CHƯƠNG 1TỔNG QUAN ĐỀ TÀI1.1 Đặt vấn đề
Những ưu thế của việc mua sắm trực tuyến đã làm thay thế được những bất tiện
Trang 8mua sản phẩm được lựa chọn nhanh chóng bằng cách thực hiện một số cú nhấp chuột, họ
có thể chọn và mua những mặt hàng yêu thích từ thị trường vô tận và không giới hạn dointernet cung cấp, họ không cần phải đi đến các cửa hàng, và không bị giới hạn bởi giờ
mở cửa, họ có thể đặt hàng mọi lúc, mọi nơi và hơn nữa việc giao hàng có thể được yêucầu không chỉ đến nơi cư trú mà còn ở nơi làm việc, do đó người tiêu dùng có thể muasản phẩm với điều kiện thuận lợi nhất (giá cả, chất lượng, giảm giá khác) phù hợp với nhucầu cá nhân
Theo một cuộc khảo sát toàn cầu gần đây do Công ty Nielsen thực hiện, hơn 85%dân số trên thế giới đã sử dụng Internet để mua hàng, tăng 40% so với hai năm trước vàhơn một nửa số người dùng Internet là những người mua sắm trực tuyến thường xuyên
1.2 Lý do chọn đề tài và mục đích của đề tài
Như đã nói trên, mua hàng online đang là xu thế của toàn cầu Việc phát triển ứngdụng quản lý bán hàng sẽ giúp cho người bán, người mua có thể buôn bán, mua hàngđược mọi lúc, mọi nơi, bất cứ khi nào, tiết kiệm được chi phí thuê mặt bằng kinh doanhchỉ cần có máy tính hoặc điện thoại smartphone kết nối Internet Người quản trị cũng dễdàng quản lý các thông tin bài đăng cũng như các thông tin đơn hàng một cách nhanhchóng
Với mong muốn góp một phần nhỏ bé công sức của mình trong việc giúp đỡ ngườimua, người bán dễ dàng tiếp cận với hình thức mua bán online, trong phạm vi làm đồ án
tốt nghiệp này em đã quyết định lựa chọn đề tài ‘Nghiên cứu xây dựng ứng dụng quản
lý bán hàng trên nền tảng Spring’ để trau dồi kiến thức cũng như áp dụng các kiến thức
đã được học vào xây dựng lên hệ thống
1.3 1.3 Nhiệm vụ của đồ án
Các nội dung chính được tìm hiểu và xây dựng trong quá trình làm đồ án
Tìm hiểu về các mô hình thương mại điện tử
Tìm hiểu về các mô hình quản lý bán hàng
Tìm hiểu về cách thức hoạt đông của website,
Tìm hiểu các công nghệ liên quan để xây dựng một website thương mại điện tử
Xây dựng website thương mại điện tử có các chức năng cơ bản sau:
Trang 9 Xem thông tin sản phẩm
Xem thông tin cụ thể, chi tiết từng sản phẩm
Phân loại sản phẩm theo thể loại
Tìm kiếm thông tin sản phẩm dễ dàng
Cho phép khách hàng đăng ký, đăng nhập và đảm bảo bảo mật thông tin khách hàngvới Spring Security
Thêm giỏ hàng đặt hàng nhanh chóng
Thêm sản phẩm vào mục ưa thích
Thanh toán ship cod
Thanh toán online với paypal
Gửi mail tương tác với khách hàng
Xuất file excel đơn hàng
Thống kê sản phẩm theo năm, theo tháng, theo sản phẩm, theo thể loại, …
1.4 Hình thức mua hàng
Mua hàng online đang dần trở thành một hình thức mua sắm phổ biến, nó được đánh giárất cao trong thời kì công nghệ bùng nổ hiện nay Có nhiều cách thức mua hàng onlinenhư: mua hàng qua các trang mạng xã hội, mua hàng qua cá trang thương mại điệntử, nó đều mang lại sự tiện lợi trong mua bán hàng hoá cho khách hàng Bên cạnh đóviệc mua hàng online còn giúp mọi người cảm thấy dễ dàng hơn, tiết kiệm thời gian, chi
Trang 10phí cho việc mua sắm Người bán cũng dễ dàng giới thiệu, đưa sản phẩm của mình tới gầnhơn với người dùng.
Các ưu điểm mà mua hàng online mang lại như:
- Tiết kiệm được chi phí, thới gian
- Đưa sản phẩm tiếp cận gần hơn với khách hàng
- Tiết kiệm diện tích kinh doanh…
Các nhược điểm:
- Hàng hoá có thể không giống như quảng cáo
- Mất thời gian cho việc đưa sản phẩm tới tay người dùng,…
1.5 Đối tượng và phạm vi nghiên cứu
Đối tượng hướng tới trong project là những khách hàng có nhu cầu mua hàng hoá quamạng
Phạm vi nghiên cứu:
Cách thức mua hàng online
Cách thức hoạt động của website
Các thành phần chính để xây dựng lên website
Tìm hiểu về ngôn ngữ lập trình Java
Tìm hiểu về framework Spring
Tìm hiểu về hệ quản trị cơ sở dữ liệu MySQL
Tìm hiểu về server vps, deploy trên môi trường thật
Tìm hiểu bảo mật mã hoá mật khẩu
Tìm hiểu về json web token
Tìm hiểu mã hoá file sang base64
Các công nghệ liên quan để xây dựng website: trong phạm vi đồ án này tìm hiểu vàxây dựng website trên nền tảng Spring Framework của ngôn ngữ lập trình Java, xây
Trang 11dựng hệ thống theo mô hình MVC, kết hợp với công nghệ bảo mật như jwt token, mãhoá mật khẩu với Bcrypt, mã hoá file lưu trữ dưới dạng base64.
1.6 Cấu trúc của báo cáo
Chương 1: Tổng quan về đề tài
- Đưa ra các vấn đề, hiện trang và lý do chọn đề tài
- Phân tích được các hình thức mua hàng online mang lại những hiệu quả tốt chongười dùng
- Cấu trúc của báo cáo project
Chương 2: Tìm hiểu công nghệ
- Đưa ra các công nghệ chính được sử dụng trong project cũng như phân tích các ưuđiểm, nhược điểm của công nghệ đó
Chương 3: Phân tích và thiết kế hệ thống
- Nội dung của chương này tập chung vào việc phân tích, đánh giá để đưa ra luồnghoạt động của hệ thống thông qua chức năng của các biểu đồ use case, activitydiagram, sequence diagram
- Thiết kế database sử dụng cho phát triển hệ thống
Chương 4: Xây dựng và cài đặt hệ thống
- Chương này nói về công cụ phát triển sản phẩm, các chức năng chính mà hệ thống
đã xây dựng được và chạy thử nghiệm trên môi trường thực tế
Chương 5: Kết luận
- Phân tích các kết quả đạt được và chưa đạt được sau khi nghiên cứu và phát triển
hệ thống, định hướng phát triển
Trang 12CHƯƠNG 2 CƠ SỞ LÝ THUYẾT ĐỀ TÀI2.1 Tổng quan về website
2.1.1 Khái niệm về website
“Website” là một tập hợp các trang thông tin có chứa nội dung dạng văn bản, chữ số, âm thanh, hình ảnh, video…được lưu trữ trên máy chủ web server và có thể truy cập được từ xa
Trang web (web page) là khái niệm dùng để chỉ một trang cụ thể nào đó của website, đây
là một tài liệu được hiển thị trực tiếp trên trình duyệt như Firefox, Google Chrome một website sẽ có nhiều trang web con
2.1.2 Lịch sử ra đời của website
Website được chuyên gia phần mềm người Anh Tim Berners-Lee khởi chạy thành công vào ngày 21/12/1990 tại cơ sở của CERN nằm ở dãy núi Alps Thụy Sĩ
Hình 2.1 Hình ảnh cha đẻ của websiteWebsite đầu tiên được Tim Berners-Lee chạy với tên miền là: info.cern.ch chạy trên mộtmáy chủ NeXT của CERN, hiện nay website này vẫn đang còn tồn tại và hoạt động.Nội dung của trang web cung cấp các thông tin về world wide web, nền tảng cơ bản củaInternet, nơi các văn bản và các trang tên Internet có thể truy cập được thông qua cácURL (Uniform Resource Locator) và kết nối với nhau thông qua các siêu liên kết
Trang 13Đến năm 1993 khi trình duyệt Mosaic dành cho nền tảng Unix và Windows ra đời thìwebsite mới trở nên phát triển mạnh mẽ và phổ biến hơn Năm 1994 Berners-Lee thànhlập tổ chức World Wide Web (W3C) tại học viện công nghệ MIT của Mỹ, W3C sẽ chịutrách nhiệm để tạo ra những tiêu chuẩn cho các trang web, đảm bảo rằng các trang webhoạt động theo cùng tiêu chuẩn đó [1]
2.1.3 Cách thức hoạt động của website
Một website gồm nhiều web page như chúng ta đã đề cập ở trên, đó là các tập tin htmlhoặc xhtml được lưu trữ tại máy chủ web server, thông tin trên đó có nhiều dạng như vănbản, âm thanh, hình ảnh, video…
Các máy tính ở những nơi khác nhau sử dụng trình duyệt để gửi thông tin request lên chomáy chủ thông qua đường truyền Internet, máy chủ web server sẽ trả về thông tin chomáy khách phía người dùngvà hiển thị lên trình duyệt Các thông tin máy chủ webservertrả về được hiển thị lại đúng với các yêu cầu request của người dùng gửi lên
Giao thức hoạt động chính của website là HTTP dùng để gửi và nhận gói tin giữa máychủ webserver và máy khách client
Để website hoạt động được trên môi trường Internet thì cần phải có các thành phần chính:
Source code (Mã nguồn): phần này thường do các lập trình viên thiết kế và triển khai,source code sẽ là nơi quy định cách thức hoạt động cũng như vận hành của website
Web hosting (Lưu trữ web): nơi dùng để lưu trữ Source code, để website có thể chạy
được trên môi trường thực tế
Domain (Tên miền): địa chỉ của website để các máy tính ở các nơi khác truy cập vào.
Là tên mà mọi người gõ trên trình duyệt, do tên miền đã được trỏ về địa chỉ webservernên trình duyệt sẽ gửi yêu cầu lên webserver Nếu không có tên miền thì chúng ta phảinhớ chính xác địa chỉ của webserver thì mới truy cập được Nói cách khác tên miềngiống như địa chỉ ngôi nhà, dựa vào địa chỉ có thể tìm thấy được ngôi nhà của bạn
Để có thể truy cập vào một website thì chắc chắn phải cần đến đường truyền Internet,Internet giúp ta gửi và nhận thông tin giữa máy tính và webserver, là cầu nối để tìm kiếmthông tin và hoạt động trên môi trường Internet
Phân loại website: được chia thành 2 loại
Trang 14 Website động (Dynamic web)
Website tĩnh là website sử dụng ngôn ngữ đánh dấu siêu văn bản HTML cùng với CSS
và JavaScript để hiển thị thông tin Sau khi tải các thông tin cần thiết từ webserver về,trình duyệt sẽ biên dịch mã và hiển thị nội dung trang web, người dung hầu như không thểtương tác được với trang web chỉ có thể hiển thị các thông tin cố định
Website tĩnh thường không có sự tương tác với người dung nên thường được sử dụng đểlàm website giới thiệu công ty, giới thiệu sản phẩm…
Ưu điểm của website tĩnh
Tốc độ truy cập nhanh
Giá thành sản phẩm rẻ hơn, chi phí đầu tư thấp,
Không cần người có kinh nghiệm quản trị, nội dung ít bị thay đổi
Nhược điểm: Khó quản lí, nâng cấp, bảo trì
Website động là website ngoài sử dụng HTML, CSS, JavaScript thì còn sử dụng thêm
một ngôn ngữ lập trình phía back-end như Java, PHP, ASP.NET và hệ quản trị cơ sở dữliệu như MySQL, SQL Server, MongoDB Nội dung website có thể thay đổi dễ dàng, cótính tương tác với người dùng
Ưu điểm của website động:
Có tính tương tác với người dùng
Có trang quản lí, dễ dàng thay đổi thông tin, quản trị nội dung
Có thể xây dựng được hệ thống website lớn
Dễ dàng nâng cấp, bảo trì
Nhược điểm: Chi phí xây dựng website cao, cần những người có chuyên môn cao
Website động thích hợp làm cho các hệ thống quản lí bán hàng, quản lí dịch vụ, websitehọc tập, tin tức
Trang 152.2 Tìm hiểu về HTML, CSS, JS
2.2.1 HTML (HyperText Markup Language)
Là ngôn ngữ đánh dấu siêu văn bản được phát hành vào năm 1999, dùng để định dạng bốcục của trang web, các thuộc tính liên quan đến cách hiển thị của một đoạn text và đượchiển thị trên browser, browser sẽ biên dịch HTML và hiển thị lên cho người dùng
HTML là một định dạng đặc biệt của XML nên có cú pháp:<tagname> </tagname> Bốcục của một website gồm rất nhiểu thẻ khác nhau, mỗi thẻ có một nhiệm vụ nhất định của
nó Các thẻ chính như: <p>, <h1>, <img> HTML đóng vai trò rất quan trọng trong việcxây dựng website, xây dựng cấu trúc siêu văn bản trên một website, hoặc khai báo các tậptin kĩ thuật số, hình ảnh, video, âm thanh
HTML là một tập tin siêu văn bản nên ta có thể dùng các chương trình soạn thảo văn bảnnhư NotePad, trình editor Visual Studio Code, SublimeText để lập trình và phát triển.Các phiên bản HTML: HTML5 được phát hành mới nhất vào năm 2014, so với HTML thìHTML5 hỗ trợ thêm các tính năng quan trọng như: khả năng hỗ trợ video và audio, lậptrình viên có thể nhúng trực tiếp file video/audio vào trang web thông qua các cặp thẻ
<audio> và <video>
HTML5 hỗ trợ thêm nhiều thẻ định dạng khác nhau như <section>, <article> các địnhdạng như: email, url, ngày/giờ
Ưu điểm của HTML:
Có nhiều tài nguyên hỗ trợ và cộng đồng lập trình lớn
Có thể hoạt động trên tất cả các trình duyệt hiện nay
Các markup sử dụng trong HTML thường ngắn gọn, có độ đồng nhất cao
Đây là mã nguồn mở, hoàn toàn miễn phí, là chuẩn web được quy định bởi W3C
Dễ dàng tích hợp được với các loại ngôn ngữ back-end như Java, PHP, Node.js
Nhược điểm của HTML:
Khó kiểm soát cách đọc và hiển thị file của các trình duyệt cũ, không render được cáctagname mới
Một vài trình duyệt chậm cập nhật hỗ trợ các tính năng mới của HTML5
Trang 162.2.2 CSS (Cascading Style Sheet Language)
CSS dùng để định dạng lại phần tử của trang web được tạo ra bởi HTML Phương thứchoạt động của CSS là nó sẽ tìm dựa vào các vùng chọn có thể là tên một thẻ HTML, tênmột ID, class, sau đó sẽ áp dụng các thuộc tính cần thay đổi lên vùng chọn đó
Cấu trúc cơ bản của một thành phần CSS
Hình 2.2 Cấu trúc của một thành phần CSS
Selector: là thành phần nhận biết thẻ HTML để định dạng
Property: là các thuộc tính của thẻ HTML
Value: là giá trị của thuộc tính, quyết định thay đổi định dạng thẻ như thế nào
Cách nhúng CSS vào website:
Inline Styles: Nhúng trực tiếp vào tài liệu HTML thông qua cặp thẻ <style></style>
External Styles: Tạo một tập tin css riêng biệt và nhúng vào tài liệu HTML thông qua
thẻ <link>
Với việc áp dụng CSS trong thiết kế giao diện website giúp chúng ta có thể định dạng cácphần tử giống theo ý muốn của mình từ đó tạo ra các trang web sinh động, phong phúhơn
CSS là một thành phần không thể thiếu được đối với mỗi website, làm cho trang web đẹphơn, phù hợp với yêu cầu khách hàng
2.2.3 Bootstrap
Là sản phẩm của Mark Otto và Jacob Thornton tại Twitter, được xuất bản như một mã
Trang 17Bootstrap là một framework bao gồm các thẻ HTML, CSS và Javascript template dùng đểphát triển website chuẩn responsive (phù hợp với nhiều kích thước màn hình) Ngườidùng có thể dễ dàng thiết kế website theo một chuẩn nhất định đã được đề ra, tạo ra cácwebsite phù hợp với kích thước màn hình như máy tính, ipad, mobile
Bootstrap giúp cho quá trình thiết kế websiste nhanh chóng hơn dựa trên những thànhphần sẵn có như button, table, navigation nó chứa tập tin html, css, js đã được biên dịch
và nén lại, tái sử dụng một cách dễ dàng
Những ưu điểm mà Bootstrap mang lại:
Rất dễ sử dụng: nó được xây dựng trên HTML, CSS và JS chỉ cần có kiến thức cơ bản
về 3 thành phần này có thể sử dụng được framework này
Bootstrap xây dựng sẵn responsive css trên các thiết bị mobile, desktop Tính năngnày khiến cho người dùng tiết kiệm được rất nhiều thời gian trong việc tạo ra cácwebsite phù hợp với kích thước màn hình
Tương thích với các trình duyệt: nó tương thích với tất các các trình duyệt hiện naynhư: Chrome, Firefox, Internet Explorer, Safari
JS là một ngôn ngữ lập trình đa nền tảng(cross-platform), ngôn ngữ lập trình kịch bản,
hướng đối tượng, ngôn ngữ lập trình nhỏ và nhẹ (small and lightweight) JS chứa các thư
viện tiêu chuẩn cho Object như: Array, Date, Math toán tử(operators), cấu trúc điềukhiển (control structure), câu lệnh
Trang 18JS là một trong nhưng ngôn ngữ lập trình phổ biến nhất thế giới, nó cũng là một trongnhững thành phần không thể thiếu được trong các trang web, nó được nhúng vào websitequa file js hoặc nhúng trực tiếp thông qua thẻ <script></script> và được hỗ trợ trên hầuhết trình duyệt hiện nay.
Ưu điểm của JS:
Cú pháp đơn giản hơn so với các ngôn ngữ lập trình khác
Có thể sử dụng được cả ở server-side và client-side Ở client-side js được mở rộng chophép một ứng dụng tác động lên các yếu tố của một trang HTML, phản hồi lại thao táccủa người dùng như click chuột nhập form, chuyển trang Ở phía server-side thì js kếtnối tới cơ sở dữ liệu, cung cấp thông tin một cách liên tục từ một yêu cầu tới phần kháccủa ứng dụng hoặc thực hiện thao tác trên máy chủ
JS tương đối nhanh với người dùng cuối, quá trình xử lý hoàn thành hầu như ngay lậptức tùy thuộc vào nhiệm vụ
Hỗ trợ nhiều trình duyệt: hầu hết mọi trình duyệt máy tính và điện thoại đều được hỗtrợ
Nhược điểm:
JS không có khả năng xử lý đa luồng
Client-side không cho phép người đọc và ghi file bởi lý do bảo mật
Dễ bị khai thác dùng để thực thi mã độc
Cách sử dụng:
Internal: viết trực tiếp trong file HTML được đặt trong thẻ <script>
External: viết ra một file js khác, sau đó import vào thông qua thẻ
<script src="demo.js" language="javascript"></script>
Inline: viết trực tiếp trong thẻ HTML
<input type="button" onclick="alert(1)" value="Click Me"/>
Trang 192.3 2.3 Ngôn ngữ lập trình Java
2.3.1 Lịch sử phát triển
Java được phát triển bởi James Glosing và các đồng nghiệp ở Sun MicroSystem năm
1991, ban đầu ngôn ngữ có tên là Oak, sau đó mới đổi tên thành Java vào năm 1995 Java
được phát hành vào năm 1994 và trở nên nổi tiếng khi Netscape tuyên bố tại hội thảo
SunWorld năm 1995 Năm 2009 Oracle mua lại công ty Sun MicroSystems và ngôn ngữ
lập trình Java được phát triển hơn [3]
Java được tạo ra với tiêu chí “Write One, Run Anywhere” (Viết một lần, thực thi mọinơi), chương trình được viết bằng java có thể chạy trên mọi nền tảng khác nhau thông quamáy ảo biên dịch
Các ứng dụng của Java
Phát triển ứng dụng cho hầu hết các thiết bị điện tử thông minh
Phát triển các ứng dụng doanh nghiệp với quy mô lớn (Java Enterprise Edition)
Phát triển các trang web với nội dung động, phát triển ứng dụng di động Android
Phát triển các hệ thống của server
Phát triển nhiều loại ứng dụng khác nhau như: cơ sở dữ liệu, mạng Interner, viễnthống, giải trí
2.3.2 Các đặc điểm cơ bản của ngôn ngữ lập trình Java
Có 12 tính năng chính của Java [4]
Trang 20Hình 2.3 Các đặc điểm cơ bản của ngôn ngữ lập trình Java
Đơn giản (Simple): ngôn ngữ java có đặc điểm đơn giản vì
Cú pháp dựa trên C, C++ nên dễ dàng tiếp cận
Loại bỏ nhiều điểm gây rối và hiếm khi được sử dụng như con trỏ, nạp chồng toán tử
Không cần xóa các đối tượng mà không được tham chiếu vì Java có bộ thu gọn rác(Garbage Collection) tự động thực thi
Hướng đối tượng (Object Oriented): tổ chức phần mềm dưới dạng kết hợp của nhiêu
loại đối tượng khác nhau trong đó có sự kết hợp chặt chẽ
Các tính chất của lập trình hướng đối tượng:
Tính kế thừa (inheritance)
Tính đa hình (polymorphism)
Tính trừu tượng (abstract)
Tính đóng gói (encapsulation)
Độc lập nền tảng (Platform Independent): Java có thể chạy trên nhiều nền tảng như
Windows, Linux, MacOS Java code được biên dịch bởi trình biên dịch và được chuyểnthành mã bytecode, mã bytecode này là code độc lập nền tảng nên nó có thể chạy trênnhiều nền tảng khác nhau
Bảo mật (Secured): do không có con trỏ tường minh, chương trình chạy bên trong máy
ảo, có các phân tầng như: Classloader, Bytecode verify, Security Manager càng tăng thêmphần bảo mật cho Java
Mạnh mẽ (Robust): Java sử dụng trình quản lí bộ nhớ mạnh mẽ, trình dọn rác tự động
(Garbage Collection), xử lý ngoại lệ (Exception Handing)
Kiến trúc tập chung (Architecture-neutral): một ứng dụng được biên dịch trên kiến
trúc phần cứng này và ứng dụng đó chạy được trên cả các kiến trúc phần cứng khác
Khả chuyển (Portable): Java có thể thực thi ứng dụng của nó trên tất cả các hệ điều hành
và phần cứng khác nhau
Trang 21Hiệu suất cao (High performance): Java nhanh hơn kể từ khi được biên dịch thành mã
bytecode
Đa luồng (Multi-thread): Java hỗ trợ lập trinh đa tiến trình có thể xử lý nhiều tác vụ
trong một thời điểm bằng việc định nghĩa nhiều Thread
Phân tán (Distribute): java được sử dụng để tạo ra các ứng dụng phân tán.
Thông dịch (Interpreter): máy ảo java (Java Virtual Machine) sẽ thông dịch mã
bytecode này thành mã máy để máy có thể hiểu và đọc được
2.3.3 Các platform cơ bản của Java
Hình 2.4 Các platform cơ bản của Java
Máy ảo Java (JVM-Java Virtual Machine): cho phép chạy các chương trình java cũngnhư các chương trình khác được viết bằng ngôn ngữ khác mà được biên dịch sang mãbytecode
Java API (Java Application Programming Interface): là bộ thư viện các lớp, gói và giaodiện java có sẵn Lập trình viên có thể sử dụng các gói thư viện đã có sẵn này để triểnkhai ứng dụng
Trang 22 JRE (Java Runtime Environment): được sử dụng để cung câp môi trường run time chojava JRE gồm tập hợp các thư viện và file khác mà JVM sử dụng tại thời điểmruntime.
JDK (Java Development Kit): là bộ phần mềm cung cấp môi trường để phát triển ứngdụng, JDK bao gồm JRE và các Development tools
2.3.4 Cài đặt và lập trình Java
Cài đặt JDK tại: https://www.oracle.com/java/technologies/javase-downloads.html
Thiết lập môi trường cho Java: cài đặt JAVA_HOME trong Environment
Kiểm tra java đã được cài đặt bằng lệnh: java -version trong màn hình Command prompt
Hình 2.5 Kiểm tra cài đặt cho JavaCài đặt IDE hỗ trợ lập trình Java: có thể sử dụng các IDE như Eclipse, Intellij,NetBeans Chạy chương trình đầu tiên hiển thị ra thông tin Hello, World!
Hình 2.6 Chạy chương trình Java đầu tiên Kết quả:
Trang 23Hình 2.7 Kết quả chạy chương trình
Các module chính của Spring Framework
Spring Core: là thành phần cốt lõi của Spring Framework, là nền tảng để xây dựng lêncác thành phần khác trong hệ sinh thái Spring
Spring Context: là file cấu hình cung cấp các thông tin cho Spring Spring context cungcấp các service như: EJB,Validation
Spring AOP: cung cấp các dịch vụ quản lí giao dịch cho các đối tượng trong bất kì ứngdụng nào sử dụng Spring Ta có thể tích hợp declative transaction management vàotrong ứng dụng mà không cần dựa vào EJB component
Spring DAO: tầng JDBC và DAO đưa ra một cây phân cấp exception để quản lí và kếtnối database, điều khiển exception, thông báo lỗi, module này cũng cung cấp các dịch
vụ quản lí giao dịch cho các đối tượng trong ứng dụng spring
Spring ORM: cung cấp Object Relation tool bao gồm: Hibernate, OJB và iBatis SQLMaps
Spring web module: nằm trên application Context module, cung cấp context cho ứngdụng web Spring web module cũng hỗ trợ tích hợp với Struts, JSF
Spring MVC Framework: có đầy đủ các đặc tính của MVC pattern để xây dựng cácứng dụng Web, Spring MVC Framework được cấu hình thông qua giao diện và chứađược một số kĩ thuật view bao gồm: JSP, Tiles
Trang 24Hình 2.8 Các module chính trong Spring Framework
2.5 Spring MVC Framework
MVC là viết tắt của Model -View- Controller
Spring MVC cung cấp kiến trúc Model-View-Controller và các thành phần khác(cácchuẩn API) để có thể dễ dàng phát triển các ứng dụng web Mô hình MVC phân tách racác lớp riêng biệt (logic đầu vào,logic business, giao diên người dùng) để dễ dàng pháttriển và cung cấp sự kết nối giữa các yếu tố này
Model: là thành phần chứa các nghiệp vụ logic, quản lý thông tin, xử lý, truy xuất
database ngoài ra còn có khả năng lưu trữ và vận chuyển thông tin Quá trình gửi dữliệu vào Model sẽ được thực hiện bởi Controller
View: là thành phần chứa giao diện, tương tác với người dùng.
- View có nhiệm vụ trình bày các dữ liệu từ Model đến người dùng cuối.
- Thu nhận các hoạt động, yêu cầu từ người dùng và chuyển đến cho tầng Controller
xử lý
- View có thể là các trang html hay jsp
Controller: nhiệm vụ của Controller là điều hướng request từ người dùng và gọi
phương thức để xử lý request đó, tương tác với Model để gọi View và hiển thị thông
Trang 25Ưu điểm và nhược điểm của mô hình MVC
Ưu điểm:
- Tạo mô hình chuẩn cho phát triển dự án
- Mô hình triển khai rõ ràng mạch lạc, dễ dàng xử lý các nghiệp vụ Trình tự xử lý rõràng, riêng biệt, độc lập với các thành phần khác, các thành phần có thể tương tácđược với nhau
- Dễ dàng nâng cấp, maintain, bảo trì code do chia ra thành các thành phần độc lâp
và thực hiện code theo một tiêu chuẩn cố định
Nhược điểm:
- Đối với các dự án nhỏ thì việc áp dụng mô hình MVC làm cho công việc cồng
kềnh hơn, xử lý chi tiết qua nhiều tầng gây ra nhiều phức tạp
- Phân chia công việc không đồng đều do phần Model phải xử lý rất nhiều các tác vụ
của hệ thống
Luồng xử lý trong Spring MVC: được thiết kế xoay quanh cách hoạt động củaDispathcher Servlet cho phép xử lý tất cả các HTTP request và response
Hình 2.9 Luồng xử lý request và respone
Khi nhận được một yêu cầu HTTP request, Dispatcher Servlet sẽ chỉ định cho mộtHandler Mapping tiếp nhận request đó
Trang 26 Handler Mapping sẽ ánh xạ yêu cầu của request đến một Controller thích hợp.Controller tiếp nhận yêu cầu và gọi đến các Service để xử lý logic business và trả vềtên View cho Dispatcher Servlet
Dispatcher Servlet dựa vào View Resolver để xác định chính xác View cần trả về choyêu cầu request trên
Khi chọn được View hoàn thành, Dispatcher Servlet sẽ chuyển model dữ liệu tới View
đó và render lên trình duyệt
2.6 SpringBoot
Là một dự án được phát triển trong hệ sinh thái của Spring Framework, nó giúp cho lậptrình viên đơn giản hóa trong việc phát triển ứng dụng, đơn giản hóa cấu hình mà chỉ cầntập chung vào vào việc phát triển business cho người dùng
SpringBoot là một module của Spring, cung cấp tính năng RAD (Rapid Application
Development) - phát triển ứng dụng nhanh Với việc phát triển các ứng dụng bằng Spring
Boot thì quá trình diễn ra nhanh chóng và thuận tiện hơn
SpringBoot có giúp chúng ta tạo dự án nhanh chóng và cấu hình dễ dàng với các tínhnăng nổi bật như:
Được các Dependency cung cấp và hỗ trợ giúp cho việc cấu hình Maven đơn giản hơn
Cấu hình ít, tự động cấu hình Spring khi cần thiết, giảm thời gian viết code cấu hình
Không sinh code cấu hình và không yêu cầu phải cấu hình bằng XML
Cung cấp nhiều plugin hỗ trợ
Cấu trúc 1 dự án SpringBoot: được build bằng maven
Trang 27Hình 2.10 Cấu trúc một dự án Spring Boot
Folder java để lưu các file code của hệ thống, code Java được lưu trong file java
Folder resource để lưu thông tin các file hình ảnh, file html
File pom, application.properties để lưu thông tin cấu hình của hệ thống
2.7 Spring Security
Là một dự án nổi bật trong Spring Framework, cung cấp các dịch vụ bảo mật toàn diệncho các ứng dụng doanh nghiệp có nền tảng Java EE (Java Enterprise Edition)
Spring Security cung cấp 2 cơ chế xác thực cơ bản
Authentication (xác thực): là tiến trình thiết lập một principal Principal có thể hiểu làmột người, hoặc một thiết bị, hoặc một hệ thống nào đó có thể thực hiện một hànhđộng trong ứng dụng của bạn
Authorization (phân quyền): là tiến trình quyết định xem một principal có được phépthực hiện một hành động trong ứng dụng của bạn hay không Trước khi tiến tới quátrình xác thực Authorization, principal cần phải được xác thực bởi Authentication.Các thành phần chính trong Spring Security:
SecurityContext là interface cốt lõi của Spring Security, lưu trữ tất cả các chi tiết liênquan đến bảo mật trong ứng dụng Khi chúng ta kích hoạt Spring Security trong ứng
Trang 28 UserDetails và UserDetailsService: là một interface cốt lõi của Spring Security Nó đạidiện cho một principal nhưng theo một cách mở rộng và cụ thể hơn gồm có các method
hỗ trợ kèm theo cho việc xác thực và bảo mật
SecurityContextHolder Lớp này lưu trữ security context hiện tại của ứng dụng, baogồm chi tiết của principal đang tương tác với ứng dụng Spring Security sẽ dùng mộtđối tượng Authentication để biểu diễn thông tin này
GrantedAuthority: phương thức getAuthorities() sẽ trả về một tập hợp các đối tượngGrantedAuthority Một GrantedAuthority là một quyền được gán cho principal Cácquyền đều có tiền tố là ROLE_, ví dụ như ROLE_ADMIN, ROLE_MEMBER
2.8 Hệ quản trị cơ sở dữ liệu MySQL
Hình 2.11 Hệ quản trị cơ sở dữ liệu MySQL
Là hệ thống quản trị cơ sở dữ liệu mã nguồn mở (Relational Database ManagermentSystem – RDBMS) hoạt động theo mô hình Client – Server, được phát triển vào năm
1994 bởi công ty Thụy Điển MYSQL AB Sau đó vào năm 2008, công ty công nghệ MỹSun Microsystem mua lại và nắm quyền sở hữu Năm 2010 Oracle mua lại SunMicrosystem và từ đó MySQL thuộc sở hữu của Oracle [5]
Các phiên bản của MySQL:
Phiên bản 5.5 phát hành năm 2010
Phiên bản 5.6 phát hành năm 2013
Phiên bản 5.7 phát hành năm 2015
Trang 29 Phiên bản 8.0 phát hành năm 2019
MySQL là một trong số các phần mềm RDBMS do độ phổ biến của nó cũng như các lợiích mà nó mang lại Các ứng dụng web lớn đều đang sử dụng bởi ưu điểm là tương thíchvới nhiều hệ thống như Linux, macOS, Windows
MySQL được tích hợp apache, PHP quản lí dữ liệu thông qua các cơ sở dữ liệu Mỗi cơ
sở dữ liệu có thể có nhiều bảng quan hệ chứa dữ liệu Có 2 phiên bản được hình thành là:MySQL Community Server miễn phí và MySQL Enterprise Server có phí
Cách thức MySQL hoạt động: hoạt động với mô hình Client-Server
Hình 2.12 Mô hình Client – Server
MySQL tạo ra bảng để lưu trữ dữ liệu, định nghĩa mối liên kết giữa các bảng dữ liệuđó
Từ client gửi yêu cầu truy vấn SQL lên server
Server sẽ truy vấn dữ liệu trong Database và trả về các thông tin kết quả cho máyclient
SQL và MySQL là 2 thành phần khác nhau MySQL là môt trong các phần mềm RDBMShoạt động theo mô hình Client-Server, nhưng để có thể liên lạc và hiểu được giữa client-server thì cần phải có ngôn ngữ truy vấn có cấu trúc SQL (Structured Query Language)
Vì vậy SQL và MySQL là 2 thành phần khác nhau
Ưu điểm của MySQL:
Sư linh hoạt: MySQL sử dụng được hầu hết trên các platform như Linux, MacOS,Windows
Trang 30 Dễ sử dụng: MySQL là hệ quản trị cơ sở dữ liệu tốc độ cao, ổn định và dễ sử dụng,hoạt động trên nhiều hệ điều hành, cung cấp một hệ thống lớn các hàm tiện ich rấtmạnh mẽ.
Độ bảo mật cao, hiệu năng cao: thích hợp cho việc xây dựng các ứng dụng có lượngtruy cập dữ liệu lớn và chi phí thấp nhưng độ bảo mật cao Hệ thống phân quyền truycập và quản lí tài khoản của MySQL đạt tiêu chuẩn bảo mật cao, mã hóa các thông tin
Không đươc toàn quyền kiểm soát: một số quy tắc nghiệp vụ ẩn trong cơ sở dữ liệu hanchế cho các lập trình viên quản lý
2.9 Json web token
2.9.1 Json web token là gì?
JSON Web Mã (JWT) là một chuẩn mở (RFC 7519) định nghĩa một cách nhỏ gọn vàkhép kín để truyền một cách an toàn thông tin giữa các bên dưới dạng đối tượng JSON.Thông tin này có thể được xác minh và đáng tin cậy vì nó có chứa chữ ký số JWTs có thểđược ký bằng một thuật toán bí mật (với thuật toán HMAC) hoặc một public / private key
sử dụng mã hoá RSA
Một ví dụ về JWT Token:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjEzODY4OTkxMzEsImlzcyI6ImppcmE6MTU0ODk1OTUiLCJxc2giOiI4MDYzZmY0Y2ExZTQxZGY3YmM5MGM4Y
Trang 31Thoạt trông phức tạp là thế nhưng nếu hiểu, cấu trúc của một JWT chỉ đơn giản như sau:
<base64-encoded header > <base64-encoded payload > <base64-encoded
signature >
Nói một cách khác, JWT là sự kết hợp (bởi dấu ) một Object Header dưới định dạngJSON được encode base64, một payload object dưới định dạng JSOn được encode base64
và một Signature cho URI cũng được mã hóa base64 nốt
2.9.2 Giải thích về ba thành phần của jwt token
Header bao gồm hai phần chính: loại token (mặc định là JWT - Thông tin này cho biếtđây là một Token JWT) và thuật toán đã dùng để mã hóa (HMAC SHA256 - HS256 hoặcRSA)
Reserved claims: Đây là một số metadata được định nghĩa trước, trong đó một sốmetadata là bắt buộc, số còn lại nên tuân theo để JWT hợp lệ và đầy đủ thông tin: iss(issuer), iat (issued-at time) exp (expiration time), sub (subject), aud (audience), jti(Unique Identifier cho JWT, Can be used to prevent the JWT from being replayed This ishelpful for a one time use token.) Ví dụ:
{
Trang 32Public Claims - Claims được cộng đồng công nhận và sử dụng rộng rãi.
Private Claims - Claims tự định nghĩa (không được trùng với Reserved Claims và Public
Claims), được tạo ra để chia sẻ thông tin giữa 2 parties đã thỏa thuận và thống nhất trướcđó
Signature
Trang 33Chữ ký Signature trong JWT là một chuỗi được mã hóa bởi header, payload cùng với mộtchuỗi bí mật theo nguyên tắc sau:
When should you use JSON Web Tokens?
Một trong những tình huống ứng dụng JWT thường gặp, đó là:
Authentication: Tình huống thường gặp nhất, khi user logged in, mỗi request tiếp đó đềukèm theo chuỗi token JWT, cho phép người dùng có thể truy cập đường dẫn, dịch vụ vàtài nguyên được phép ứng với token đó Single Sign On cũng là một chức năng có sửdụng JWT một cách rộng rãi, bởi vì chuỗi JWT có kích thước đủ nhỏ để đính kèm trongrequest và sử dụng ở nhiều hệ thống thuộc các domain khác nhau
Information Exchange: JSON Web Token cũng là một cách hữu hiệu và bảo mật để traođổi thông tin giữa nhiều ứng dụng, bởi vì JWT phải được ký (bằng cặp public / privatekey), bạn có thể chắc rằng người gửi chính là người mà họ nói rằng họ là (nói tóm tắt hơn
là không hoặc khó để mạo danh bằng JWT), ngoài ra, chữ ký cũng được tính toán dựatrên nội dung của header và nội dung payload, nhờ đó, bạn có thể xác thực được nội dung
là nguyên bản, chưa được chỉnh sửa hoặc can thiệp Tuy nhiên, một lưu ý hết sức quantrọng là do cấu trúc của JWT đơn giản nên JWT có thể dễ dàng bị decode, do vậy, bạnkhông nên dùng JWT để transfer các thông tin nhạy cảm
How do JSON Web Tokens work?
Ở đây, mình ví dụ cụ thể ứng dụng của JWT trong bài toán Authenticate (xác thực) Trong việc xác thực, khi user đăng nhập thành công (Browser sẽ post username và mậtkhẩu về Server), Server sẽ trả về một chuỗi JWT về Browser, và Token JWT này cầnđược lưu lại trong Browser của người dùng (thường là LocalStorage hoặc Cookies), thay
Trang 34-Bất cứ khi nào mà User muốn truy cập vào Route được bảo vệ (mà chỉ có User đã đăngnhập mới được phép), Browser sẽ gửi token JWT này trong Header Authorization, Bearerschema của request gửi đi.
Authorization: Bearer <token>
Đây là cách mà stateless (phi trạng thái) authentication làm việc, trạng thái của userkhông được lưu trong bộ nhớ của Server mà được đóng gói hẳn vào trong JWT Server sẽkiểm tra Token JWT này có hợp lệ hay không (Bởi vì JWT có tính chất self-contained,mọi thông tin cần thiết để kiểm tra JWT đều đã được chứa trong Token JWT)
Do tính chất stateless nên chúng ta không còn phải lo lắng về domains nào được sử dụngcho API của bạn, như không còn gặp rắc rối với CORS (Cross-Origin Resource Sharing)
vì nó không sử dụng cookies
Sơ đồ dưới đây cho thấy quá trình này