Microsoft Word BAO CAO TTTN BuiVanQuang LeTuanKhai docx TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI TP HỒ CHÍ MINH KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO THỰC TẬP TỐT NGHIỆP TÌM HIỂU FRAMEWORK VUEJS, JAVA SPRING BOOT[.]
CHƯƠNG GIỚI THIỆU
Lý do chọn đề tài
Ngày nay đời sống con người ngày một nâng cao, các nhu cầu vui chơi, giải trí ngày càng phát triển cả về mặt số lượng và chất lượng
Xem phim trực tuyến là một loại hình giải trí nhẹ nhàng ra đời và phát triển mạnh mẽ từ khi có nền công nghiệp công nghệ thông tin Thị trường phim là một thị trường đa dạng và rất phong phú Sản phẩm phim rất phong phú về mặt thể loại, từ hành động, lãng mạng, kinh dị,… đều đã có mặt trên thị trường nhằm phục vụ nhu cầu giải trí của con người Thị trường phim ở từng quốc gia, khu vực cũng tương đối khác nhau
Vì vậy nhóm chúng tôi chọn làm website xem phim trực tuyến để phục vụ nhu cầu xem phim giải trí của con người hiện nay.
Phạm vi đề tài
Luận văn sẽ tập trung trình bày kết quả nghiên cứu của chúng tôi về các nội dung sau: Spring framework, VueJS framework, MySQL, Boostrap và Maven Mỗi phần chúng tôi sẽ giới thiệu sơ lược và trình bày những nội dung cơ bản nhất, những điểm mạnh hay lợi ích mà nó mang lại cho các nhà phát triển phần mềm
Cụ thể về Spring framework chúng tôi sẽ tập trung tìm hiểu và trình bày 3 module: Spring boot, Spring MVC và Spring Security
Sau khi tìm hiểu chúng tôi sẽ vận dụng kết quả tìm hiểu được vào việc xây dựng một ứng dụng nhằm mục đích minh họa cho phần lý thuyết đã trình bày Chúng tôi sẽ xây dựng một web xem phim trực tuyến tai lieu, luan van11 of 98. document, khoa luan11 of 98.
Phương pháp nghiên cứu
Tìm kiếm và nghiên cứu các tài liệu về Spring Framework và các công nghệ có liên quan đến việc phát triển một ứng dụng web enterprise như VueJS, MySQL, Maven của các tác giả trong và ngoài nước, các bài báo, thông tin trên mạng,… sau đó chọn lọc và sắp xếp lại theo ý tưởng của mình
Dựa trên kết quả tìm hiểu được để xây dựng một ứng dụng web xem phim trực tuyến có áp dụng tất cả những nội dung đã nghiên cứu nhằm mục đích minh họa cho phần cơ sở lý thuyết sẽ trình bày trong nội dung luận văn này Các công cụ hỗ trợ nghiên cứu
1 Microsoft Word:dùng để viết tài liệu báo cáo
2 Microsoft Project: dùng để phân công nhiệm vụ cập nhật tiến độ dự án
3 Visio: dùng để vẽ các biểu đồ
4 Visual Studio Code: dùng để code front end
5 IntelliJ: dùng để code back end
6 Web server for chorme: làm server ảo chứa hình ảnh của trang web
Bố cục luận văn
Trong phần này chúng tôi sẽ trình bày ngắn gọn về nội dung chính của từng phần trong luận văn nhằm giúp cho người đọc dễ dàng theo dõi
Chương 1: Giới thiệu tổng quan về cơ quan thực tập; lý do và tính cấp thiết để thực hiện đề tài này Trong chương này còn trình bày về các vấn đề cụ thể cần phải giải quyết và hướng giải quyết cho từng vấn đề; phạm vi cũng như phương pháp nghiên cứu đề tài
Chương 2: Trình bày về cơ sở lý thuyết được sử dụng trong đề tài bao gồm các nội dung về ngôn ngữ lập trình Java, Spring framework, VueJS, MySQL tai lieu, luan van12 of 98. document, khoa luan12 of 98.
CHƯƠNG CƠ SỞ LÝ THUYẾT
Ngôn ngữ lập trình Java
2.1.1 Java và lịch sử phát triển
Java là một ngôn ngữ lập trình dạng lập trình hướng đối tượng (OOP) Khác với phần lớn ngôn ngữ lập trình thông thường, thay vì biên dịch mã nguồn thành mã máy hoặc thông dịch mã nguồn khi chạy, Java được thiết kế để biên dịch mã nguồn thành bytecode, bytecode sau đó sẽ được môi trường thực thi (runtime environment) chạy tai lieu, luan van13 of 98. document, khoa luan13 of 98.
Cú pháp Java được vay mượn nhiều từ C và C++ nhưng có cú pháp hướng đối tượng đơn giản hơn và ít tính năng xử lý cấp thấp hơn Do đó việc viết một chương trình bằng Java dễ hơn, đơn giản hơn, đỡ tốn công sửa lỗi hơn
Java được khởi đầu bởi James - Gosling và bạn đồng nghiệp ở Sun Microsystems năm 1991 Ban đầu ngôn ngữ này được gọi là Oak (có nghĩa là cây sồi) do bên ngoài cơ quan của ông Gosling có trồng nhiều loại cây này
Java được phát hành vào năm 1994 Sau khi Oracle mua lại công ty Sun Microsystems năm 2009 - 2010, Oracle đã mô tả họ là "người quản lý công nghệ Java với cam kết không ngừng để bồi dưỡng một cộng đồng tham gia và minh bạch"
Lịch sử phiên bản java:
7 Java SE 6 (còn gọi là Mustang), được công bố 11 tháng 12 năm 2006
8 Java SE 7 (còn gọi là Dolphin), được bắt đầu từ tháng 8 năm 2006 và công bố ngày 28 tháng 7 năm 2011
11 JDK 10, 20 tháng 3 năm 2018 tai lieu, luan van14 of 98. document, khoa luan14 of 98.
Spring framework
Spring framework, hay ngắn hơn là Spring, là một cấu trúc dùng để xây dựng chương trình ứng dụng mã nguồn mở dành cho ngôn ngữ lập trình Java Phiên bản đầu tiên của nó do Rod Johnson viết và đã được ông xuất bản cùng với quyển sách đầu tay Expert One-on-One JavaEE Design and Development (Nhà xuất bản Wrox Press, Tháng 10 năm 2002)
Kiến trúc của Spring framework được ra mắt công chúng lần đầu tiên hồi tháng 6 năm 2003 dưới Giấy phép Apache - phiên bản 2.0 Phiên bản 1.0 đánh dấu mốc thành đạt đầu tiên được xuất bản vào tháng 3 năm 2004 và tiếp đó vào tháng 9 năm 2004, tháng 3 năm 2005
Tuy Spring framework không bắt buộc người ta phải tuân theo một mô hình lập trình cụ thể nào, song nó lan truyền rộng rải trong cộng đồng những người viết chương trình dùng Java, như một hình thức chủ yếu thay thế cho mô hình Enterprise Java Bean Theo thiết kế, bộ framework này giải phóng lập trình viên dùng Java, cho phép họ nhiều quyền tự do hơn và đồng thời cung cấp một giải pháp tiện lợi, đầy đủ dẫn chứng bằng tài liệu, dễ dàng sử dụng, phù hợp với những thực hành thông dụng trong công nghệ phần mềm
Bên cạnh những đặc trưng nền tảng của Spring framework là những cái có thể dùng được trong bất cứ một chương trình ứng dụng Java nào, rất nhiều các mở rộng và tiến bộ trong việc kiến tạo các trình ứng dụng dành cho nền tảng mạng web (web-based application) dựa trên nền Java Enterprise cũng tồn tại nữa Spring framework nổi tiếng cũng một phần do chính đặc thù kể trên và được giới thương mại công nhận như một nền tảng kiến trúc có tầm quan trọng trong chiến lược kiến tạo phần mềm tai lieu, luan van15 of 98. document, khoa luan15 of 98.
Phần đầu tiên của Spring framework ban đầu nguyên được Rod Johnson viết vào năm 2000 Vào năm 2001, những mô hình lập trình cho các trình ứng dụng Web được đại đa số sử dụng đều do Java Servlet API và Enterprise Java Bean cung cấp
Năm 2003 thành lập dự án phát tại Sourceforge để phát triển Spring Sau khi phát triển trên nền tảng ban đầu hơn một năm họ đã phát hành phiên bản đầu tiên (1.0) vào tháng 3 năm 2004
Spring framework đã làm cho những kỹ thuật vốn không được biết đến mấy trở nên những kỹ thuật được mọi người ưa chuộng trong một thời gian ngắn ngủi Một trong những kỹ thuật nổi tiếng hơn cả là kỹ thuật “đảo ngược quyền điều khiển” (Inversion of Control, IoC)
Năm 2005 cho thấy mức độ hưởng ứng nâng cao hơn những năm trước, nguyên do cũng vì những phiên bản mới được giới thiệu với những cột mốc đáng kể và những tính năng mới được thêm vào Diễn đàn Spring (Spring Forum) ra đời cuối năm 2004 cũng góp phần không nhỏ trong việc nâng cao tính phổ biến của bộ framework và từ đó đến nay đã sinh trưởng trở thành một nguồn thông tin quan trọng, giúp đỡ cho người sử dụng
Vào tháng 12 năm 2005, hội thảo đầu tiên về Spring Framework đã được tổ chức tại Miami, Florida thu hút 300 nhà phát triển trong 3 ngày và tiếp theo đó cuộc hội thảo ở Antwerp vào tháng 6 năm 2006, thu hút hơn 400 người 2.2.3 Một số khái niệm chính
Hai trong những thành phần chủ chốt và là nền tảng tạo nên sức mạnh của Spring chính là IoC và DI tai lieu, luan van16 of 98. document, khoa luan16 of 98.
2.2.3.1.1 Inversion of Control (IoC) IoC Container trong Spring được xây dựng dựa trên nguyên lý Inversion of Control (đảo ngược điều khiển) đã xuất hiện khá lâu trong các mẫu hình thiết kế (design pattern), và được phổ biến rộng rãi nhờ Robert C Martin và Martin Fowler Để hiểu về Spring, trước tiên chúng ta cần hiểu khái niệm IoC là gì? Muốn vậy, chúng ta cần trả lời câu hỏi: Control (điều khiển) trong chương trình phần mềm là gì, và Inversion (sự đảo ngược) đối với điều khiển trong ngữ cảnh này được hiểu như thế nào?
Khái niệm Control Flow (tạm dịch là luồng thực thi) được sử dụng cho trình tự thực hiện các câu lệnh, chỉ thị hoặc lời gọi hàm trong một chương trình, khi chương trình này thực thi
Do chương trình ngày càng phức tạp, nên các lập trình viên áp dụng phương pháp lập trình hướng đối tượng nhằm phân loại, chia tách các chức năng và gom thành các đối tượng Các lập trình viên còn tạo dựng các thư viện tạo sẵn để có thể sử dụng lại Luồng thực thi của chương trình, trong những tình huống cần xem xét ở mức tổng thể, không còn quan tâm đến các bước thực thi câu lệnh cụ thể nữa, mà chỉ xem xét đến quá trình gọi phương thức của các đối tượng trong ứng dụng cũng như các đối tượng của thư viện dựng sẵn
Các lập trình viên, khi xây dựng ứng dụng từ đầu, đã thực hiện hai nhiệm vụ: trực tiếp điều khiển luồng thực thi của chương trình và xây dựng các chức năng để đáp ứng nghiệp vụ của ứng dụng Thực tế, có nhiều chương trình hoặc bộ phận trong chương trình có luồng thực thi rất giống nhau, chẳng hạn phần tương tác với HTTP trong các ứng dụng web, phần unit testing trong các ứng dụng,… Việc trực tiếp tạo dựng và kiểm soát luồng thực thi của chương trình lặp đi lặp lại khi xây dựng nhiều ứng dụng sẽ làm mất nhiều công sức, chi phí, tai lieu, luan van17 of 98. document, khoa luan17 of 98.
8 tạo ra sự nhàm chán và dễ phát sinh lỗi Điều này tạo ra động lực cũng như môi trường để nguyên lý đảo ngược điều khiển nảy nở và phát triển
Hình 2.1 Luồng điều khiển của chương trình bình thường
Vậy sự “đảo ngược” (inversion) luồng điều khiển chương trình trong ngữ cảnh này được hiểu như thế nào? Chúng ta hãy xem xét 2 ví dụ dưới đây
Ví dụ 1: Ứng dụng web trong Java với JavaServlet
Khi lập trình ứng dụng web bằng JavaServlet cần thực hiện các bước lập trình như sau: tai lieu, luan van18 of 98. document, khoa luan18 of 98.
Tạo lớp đối tượng kế thừa từ HttpServlet, override các phương thức doGet(), doPost(),…
VueJS
Công nghệ HTML hỗ trợ tốt cho các trang web tĩnh, kiểu như trước năm
2000 vậy Khi chúng ta xây dựng 1 trang web với PHP, Node/Express, hay Ruby thì nó cũng chỉ là một trang web tĩnh với nội dung được thay đổi khi chúng ta gửi request về máy chủ, máy chủ sẽ render 1 trang với nội dung tương ứng Tuy nhiên mọi thứ đã thay đổi nhiều từ sự phát triển của HTML5, nhất là khi có sự hổ trợ từ những tập đoàn công nghệ lớn như Google, Yahoo, tai lieu, luan van29 of 98. document, khoa luan29 of 98.
Facebook, và sự tập hợp đông đảo của cộng đồng mã nguồn mở
Ngoài ra sự thành công của jQuery đã khiến JavaScript được nhiều người yêu thích vì tính đơn giản và dễ sử dụng Việc phát triển một website sử dụng AJAX thì không khó, chúng ta có thể dùng jQuery để làm việc này với $.ajax tuy nhiên làm thế nào để xây dựng một phần mềm có thể mở rộng, dễ test, nâng cấp và bảo trì thì không hề đơn giản vì bản thân JavaScript không được thiết kế ngay từ đầu để làm những việc này Do đó sự ra đời của những framework hỗ trợ lập trình viên xây dựng ứng dụng web 1 cách có hệ thống đã ra đời như ReactJS, , AngularJS,và VueJS
Vue.js là một framework linh động (nguyên bản tiếng Anh: progressive – tiệm tiến) dùng để xây dựng giao diện người dùng (user interfaces) Khác với các framework nguyên khối (monolithic), Vue được thiết kế từ đầu theo hướng cho phép và khuyến khích việc phát triển ứng dụng theo từng bước Khi phát triển lớp giao diện (view layer), người dùng chỉ cần dùng thư viện lõi (core library) của Vue, vốn rất dễ học và tích hợp với các thư viện hoặc dự án có sẵn Cùng lúc đó, nếu kết hợp với những kĩ thuật hiện đại như SFC (single file components) và các thư viện hỗ trợ, Vue cũng đáp ứng được dễ dàng nhu cầu xây dựng những ứng dụng một trang (SPA - Single-Page Applications) với độ phức tạp cao hơn nhiều
Ngày nay các ứng dụng web hiện đại thường được xây dựng như một Single Page Application (SPA) và VueJS là một framework tuyệt vời để xây dựng 1 SPA
Một Single Page Application là một ứng dụng web hiển thị vừa vặn trên một mặt của trang với mục đích giúp người dùng có trải nghiệm giống như đang dùng ứng dụng trên desktop và làm tăng hiệu suất của ứng dụng [2, tr7] Hay nói một cách khác là ứng dụng chạy bên trong trình duyệt mà không yêu tai lieu, luan van30 of 98. document, khoa luan30 of 98.
21 cầu phải tải lại toàn bộ trang web mỗi lần sử dụng
2.3.2 Các đặc trưng của VueJS Dưới đây là những đặc trưng nổi bật của AngularJS: kiến trúc MVVM, Two-way binding, Routing, , Form validation, Testing
Hình 2.9 Mô hình MVVM trong VueJS 2.3.2.1 Two-way binding tai lieu, luan van31 of 98. document, khoa luan31 of 98.
22 Để hiểu rõ hơn về two-way binding ta sẽ xem xét one-way binding trước Khi làm việc với các mô hình MVC framework khác chúng ta sẽ rơi vào trường hợp model và view chỉ được ghép với nhau một lần duy nhất, vì vậy mọi sự cập nhật dữ liệu từ một trong hai lớp đó đều không liên quan gì đến lớp còn lại Hệ quả là developer phải viết thêm phần “đồng bộ hóa” giữa hai lớp này Đó chính là one-way binding
Tuy nhiên VueJS có thể thực hiện được cả hai chiều, đó chính là two-way binding Hay nói một cách khác two-way binding trong AngularJS là tính năng đồng bộ hóa giữa model và view Quá trình đồng bộ luôn xảy ra giữa model và view Mọi sự thay đổi dữ liệu trong lớp này, ngay lập tức được cập nhật vào lớp kia [7, 11] Chúng ta chỉ cần “bind” một lần, và mọi thứ hoạt động trơn tru Hình 2-19 sẽ cho thấy rõ hơn về one-way binding và two-way binding
Hình 2.10 One-way binding và Two-way binding
1 Kích thước nhỏ gọn: Tỷ lệ thành công của JavaScript framework sẽ phụ thuộc vào kích thước của nó Kích thước càng nhỏ thì công năng sử dụng càng nhiều Kích thước của vue.js framework là 18–21KB, người dùng sẽ không mất thời gian để tải xuống và sử dụng Tuy nhiên, điều này không có nghĩa là tốc độ chạy của tai lieu, luan van32 of 98. document, khoa luan32 of 98.
23 vue.js thấp do kích thước nhỏ Thay vào đó, vue.js đánh bại tất cả các khung công tác cồng kềnh như React.js, Angular.js và Ember.js
2 Dễ dàng tìm hiểu và phát triển ứng dụng: Một trong những lý do framework này phổ biến là nó tương đối dễ hiểu Nhờ cấu trúc đơn giản của vue.js, người dùng có thể dễ dàng thêm phần mềm vào dự án website đang thực hiện của mình Cả hai mô hình quy mô nhỏ cũng như quy mô lớn đều có thể được phát triển thông qua framework này, do đó tiết kiệm rất nhiều thời gian Trong trường hợp xảy ra bất kỳ vấn đề nào, người dùng cũng có thể dễ dàng tìm ra các khu vực lỗi Tất cả là nhờ cấu trúc đơn giản của vue.js
3 Tích hợp đơn giản: Vue.js cũng là phần mềm được các web developer sử dụng khá phổ biến nhờ dễ dàng trong quá trình tích hợp với các ứng dụng hiện có Sự tiện lợi này xuất phát từ vue.js được xây dựng dựa trên JavaScript framework và do đó, có thể tích hợp được vào các ứng dụng khác xây dựng trên JavaScript tương đối đơn giản Như vậy, vue.js sẽ rất hữu ích cho các công việc như phát triển các ứng dụng web mới và thay đổi các ứng dụng đã có từ trước đó Có được khả năng tích hợp này là nhờ Vue.js có tất cả các yếu tố sẵn sàng.
MySQL
sở dữ liệu quan hệ Trong thực tế, SQL là ngôn ngữ chuẩn được sử dụng hầu hết cho hệ cơ sở dữ liệu quan hệ Tất cả các hệ thống quản lý cơ sở dữ liệu quan hệ (RDMS) như MySQL, MS Access, Oracle, Postgres và SQL Server… đều sử dụng SQL làm ngôn ngữ cơ sở dữ liệu chuẩn
SQL bắt đầu từ những năm 1970, khi các kỹ sư của IBM là Donald Chamberlin và Raymond Boyce thiết kế phiên bản đầu tiên để tương tác và tai lieu, luan van33 of 98. document, khoa luan33 of 98.
24 lấy dữ liệu được lưu trữ trong hệ thống cơ sở dữ liệu của công ty Họ gọi nó là SEQUEL, mặc dù sau đó họ buộc phải thay đổi nó do các vấn đề bản quyền SQL được sử dụng phổ biến vì nó có các ưu điểm sau:
Cho phép truy cập dữ liệu trong các hệ thống quản lý cơ sở dữ liệu quan hệ
Cho phép mô tả dữ liệu
Cho phép xác định dữ liệu trong cơ sở dữ liệu và thao tác dữ liệu đó
Cho phép nhúng trong các ngôn ngữ khác sử dụng mô-đun SQL, thư viện và trình biên dịch trước
Cho phép tạo và thả các cơ sở dữ liệu và bảng
Cho phép tạo chế độ view, thủ tục lưu trữ, chức năng trong cơ sở dữ liệu
Cho phép thiết lập quyền trên các bảng, thủ tục và view
Hầu như công ty nào lớn cũng cần xây dựng một hệ thống để lưu trữ cơ sở dữ liệu Mọi thứ trong cơ sở dữ liệu này sẽ được diễn tả ra thành nhiều bảng, có mối quan hệ với nhau Để truy vấn và lấy dữ liệu từ các bảng này nhằm tổng hợp thành thông tin nào đó, người ta dùng đến SQL thông qua các câu query
2.4.2 MySQL MySQL là một hệ thống quản trị cơ sở dữ liệu mã nguồn mở (Relational Database Management System, viết tắt là RDBMS) hoạt động theo mô hình client-server RDBMS là một phần mềm hay dịch vụ dùng để tạo và quản lý các cơ sở dữ liệu (Database) theo hình thức quản lý các mối liên hệ giữa chúng
MySQL là một trong số các phần mềm RDBMS RDBMS và MySQL thường được cho là một vì độ phổ biến quá lớn của MySQL Các ứng dụng tai lieu, luan van34 of 98. document, khoa luan34 of 98.
25 web lớn nhất như Facebook, Twitter, YouTube, Google, và Yahoo! đều dùng MySQL cho mục đích lưu trữ dữ liệu Kể cả khi ban đầu nó chỉ được dùng rất hạn chế nhưng giờ nó đã tương thích với nhiều hạ tầng máy tính quan trọng như Linux, macOS, Microsoft Windows, và Ubuntu
Giải thích các thuật ngữ sử dụng ở trên
Database Database là tập hợp dữ liệu theo cùng một cấu trúc Hãy thử nghĩ về việc chụp hình tự sướng: bạn nhấn nút chụp ảnh về chính bản thân bạn Hình ảnh là dữ liệu, thư viện lưu ảnh là cơ sở dữ liệu Cơ sở dữ liệu, hay database, là nơi chứa và sắp đặt dữ liệu Dữ liệu được đặt trong một bộ dữ liệu chung, dataset, được tổ chức sắp xếp giống như một bảng tính vậy Mỗi “bảng” này có liên hệ với nhau theo cách nào đó Vì vậy từ Relational (liên hệ) trong RDBMS có ý nghĩa như vậy Nếu phần mềm không hỗ trợ mô hình dữ liệu quan hệ với nhau như vậy thì gọi là DBMS
Open source Open source dịch là mã nguồn mở, có nghĩa là ai cũng có thể dùng và chỉnh sửa nó Bất kỳ ai cũng có thể cài đặt phần mềmn ày Bạn cũng có thể học cách tùy chỉnh phần mềm theo nhu cầu của bạn Tuy nhiên, giấy phép GPL (GNU Public License) quyết định bạn có thể làm gì tùy vào điều kiện nhất định Phiên bản thương mại cũng được xuất bản nếu bạn cần thêm chủ quyền linh hoạt và hỗ trợ cao cấp
Mô hình Client-server Máy tính cài đặt và chạy phần mềm RDBMS được gọi là client (máy khách) Mỗi khi chúng cần truy cập dữ liệu, chúng kết nối tới máy chủ (server) RDBMS Cách thức này chính là mô hình “client-server” tai lieu, luan van35 of 98. document, khoa luan35 of 98.
MySQL Server MySQL Server là máy tính hay một hệ các máy tính cài đặt phần mềm MySQL dành cho server để giúp bạn lưu trữ dữ liệu trên đó, để máy khách có thể truy cập vào quản lý Dữ liệu này được đặt trong các bảng, và các bảng có mối liên hệ với nhau MySQL server nhanh, an toàn, đáng tin cậy Phần mềm MySQL cũng miễn phí và được phát triển, phân phối và hỗ trợ bởi Oracle Corporation
MySQL Client MySQL client không hẵn phải cài phần mềm MySQL của Oracle mà là nói chung của mọi phần mềm có thể thực hiện truy vấn lên một MySQL server và nhận kết quả trả về MySQL client điển hình là đoạn mã PHP script trên một máy tính hay trên cùng server dùng để kết nối tới cơ sở dữ liệu MySQL database Phpmyadmin cũng là một MySQL client có giao diện người dùng Một số công cụ miễn phí dùng làm MySQL là:
MySQL Workbench (Mac, Windows, Linux), Miễn phí, mã nguồn mở
Sequel Pro (Mac), miễn phí, mã nguồn mở
HeidiSQL (Windows; chạy trên Mac hoặc Linux bằng WINE emulator), miễn phí
phpMyAdmin (web app), miễn phí, mã nguồn mở tai lieu, luan van36 of 98. document, khoa luan36 of 98.
Hình 2.11 Mô hình hoạt động MySQL
Hình 2.11 giải thích cấu trúc cơ bản về việc giao tiếp giữa client-server model Một máy client sẽ liên lạc với máy server trong một mạng nhất định Mỗi client có thể gửi một request từ giao diện người dùng (Graphical user interface – GUI) trên màn hình, và server sẽ trả về kết quả như mong muốn Miễn là cả hai hiểu nhau Cách vận hành chính trong môi trường MySQL cũng như vậy:
1 MySQL tạo ra bảng để lưu trữ dữ liệu, định nghĩa sự liên quan giữa các bảng đó
2 Client sẽ gửi yêu cầu SQL bằng một lệnh đặc biệt trên MySQL
3 Ứng dụng trên server sẽ phản hồi thông tin và trả về kết quả trên máy client
2.4.3 Ưu điểm và nhược điểm của MySQL 2.4.3.1 Ưu điểm
Dễ sử dụng: MySQL là cơ sở dữ liệu tốc độ cao, ổn định, dễ sử dụng và 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 ích rất mạnh tai lieu, luan van37 of 98. document, khoa luan37 of 98.
28 Độ bảo mật cao: MySQL rất thích hợp cho các ứng dụng có truy cập CSDL trên Internet khi sở hữu nhiều nhiều tính năng bảo mật thậm chí là ở cấp cao Đa tính năng: MySQL hỗ trợ rất nhiều chức năng SQL được mong chờ từ một hệ quản trị cơ sở dữ liệu quan hệ cả trực tiếp lẫn gián tiếp
Khả năng mở rộng và mạnh mẽ: MySQL có thể xử lý rất nhiều dữ liệu và hơn thế nữa nó có thể được mở rộng nếu cần thiết
Bootstrap và Responsive
Bootstrap là front-end framework, là một bộ sưu tập miễn phí các công cụ để tạo ra các trang web và các ứng dụng web Bootstrap bao gồm HTML và CSS dựa trên các mẫu thiết kế cho kiểu chữ, hình thức, các button và các thành phần giao diện khác, cũng như mở rộng tùy chọn JavaScript tai lieu, luan van38 of 98. document, khoa luan38 of 98.
Boostrap định nghĩa sẵn các class CSS giúp người thiết kế giao diện website tiết kiệm rất nhiều thời gian Các thư viện Bootstrap có những đoạn mã sẵn sàng cho chúng ta áp dùng vào website của mình mà không phải tốn quá nhiều thời gian để tự viết
Với Bootstrap, việc phát triển giao diện website để phù hợp với đa thiết bị trở nên dễ dàng hơn bao giờ hết Đây là xu hướng phát triển giao diện website đang rất được ưu chuộng hiện nay Bootstrap cung cấp tính năng responsive và mobile first, nghĩa là làm cho trang web có thể tự co giãn để tương thích với mọi thiết bị khác nhau, từ điện thoại di động đến máy tính bảng, máy tính xách tay, máy tính để bàn,
Một khía cạnh khác là responsive web design làm cho trang web cung cấp được trải nghiệm tuyệt vời cho người dùng trên nhiều thiết bị, kích thước màn hình khác nhau Đây là một đặc điểm vô cùng quan trọng vì chúng ta không thể lường trước được các thiết bị, kích thước màn hình sẽ sử dụng để truy cập vào trang web Một trang có thể hoạt động tốt bất kể sự biến đổi sẽ cung cấp một trải nghiệm người dùng tốt và nhất quán hơn một trang được thiết kế cho một loại thiết bị và kích thước màn hình cụ thể tai lieu, luan van39 of 98. document, khoa luan39 of 98.
Đặc thù hệ thống
Hiển thị dữ liệu cho người dùng (5)
Truyển dữ liệu cho view (4)
Xử lý yêu cầu (2) Trả kết quả truy vấn (3)
Hình 2.12 Tổng quan hệ thống
Hệ thống gồm 2 trang là trang xem phim và trang quản trị
Trang danh sách phim: gồm danh sách các phim lẻ và phim bộ
Trang chi tiết phim: hiển thị chi tiết tên phim, diễn viên, thời lượng , bình luận có trong bộ phim, đánh giá, phim mà người dùng đã chọn
Trang phim theo thể loại: danh sách các phim theo thể loại người dùng đã chọn
Trang xem phim: trang để phát phim cho người dùng xem
Trang đăng nhập đăng ký
Trang đăng nhập đăng ký
Trang quản lý người dùng Trang quản lý người dùng có các chức năng như: thêm xoá sửa người dùng, chọn làm admin, bỏ chọn làm admin
Trang quản lý phim tai lieu, luan van40 of 98. document, khoa luan40 of 98.
Trang quản lý phim trong đó có các chức năng như: thêm xoá sửa phim, quản lý bình luận, xoá những bình luận không phù hợp, quản lý quốc gia, quản lý diễn viên,…
Hệ thống có 3 loại người dùng
Bảng 2.1 Phân loại người dùng hệ thống
STT Kiểu người dùng Chức năng
1 Người dùng không có tài khoản trên website Khi truy cập vào website có thể xem phim và sử dụng chức năng tìm kiếm
2 Người dùng có tài khoản trên website Ngoài sử dụng các chức năng như xem phim và tìm kiếm thì kiểm tài khoản này có thể comment, download phim và yêu cầu post phim
3 Người dùng là Admin của hệ thống Quản lý các tài khoản của người dùng và quản trị nội dung của website
Google Firebase
Firebase là một nền tảng phát triển ứng dụng web và mobile, cung cấp cho các nhà phát triển một bộ công cụ và dịch vụ giúp họ phát triển các ứng chất lượng cao, tăng trưởng lượng người dùng và kiếm được nhiều lợi nhuận hơn tai lieu, luan van41 of 98. document, khoa luan41 of 98.
2.7.2 Lịch sử phát triển Năm 2011, startup tiền thân của Firebase được thành lập, được gọi là Envolve Nó cung cấp cho các nhà phát triển API cho phép tích hợp tính năng nhắn tin trực tuyến vào trang web của họ Điều thú vị là các nhà phát triển sử dụng Envolve không chỉ để làm nhắn tin trực tuyến Họ sử dụng Envolve để đồng bộ hóa dữ liệu ứng dụng, chẳng hạn như một trạng thái game giữa các user trong thời gian thực Điều đó đã dẫn đến các nhà sáng lập của Envolve tách riêng hệ thống chat và kiến trúc realtime Năm 2012, Firebase được tạo như một công ty cung cấp Backend as a Service với tính năng realtime
Sau khi được Google mua lại năm 2014, Firebase nhanh chóng phát triển thành một nền tảng đa chức năng như ngày nay
2.7.3 Các dịch vụ của Firebase Firebase chia các dịch vụ của nó thành 3 nhóm:
Hình 2.13 Các dịch vụ của Firebase tai lieu, luan van42 of 98. document, khoa luan42 of 98.
1 Realtime Database Firebase Realtime Database là một cơ sở dữ liệu NoSQL trên đám mây cho phép bạn lưu trữ và đồng bộ hóa dữ liệu giữa các user trong thời gian thực
Realtime Database cơ bản chỉ là một đối tượng JSON lớn mà các nhà phát triển có thể quản lý thời gian thực
Chỉ với một API duy nhất, Realtime Database cung cấp cho ứng dụng của bạn cả giá trị hiện tại của dữ liệu và bất kì cập nhật mới nào tai lieu, luan van43 of 98. document, khoa luan43 of 98.
Hình 2.15 Đồng bộ hoá thời gian thực Đồng bộ hóa thời gian thực giúp người dùng truy cập dữ liệu của họ dễ dàng từ bất kì thiết bị nào cũng như tương tác với các người dùng khác
Một lợi ích tuyệt vời khác của Realtime Database là nó cung cấp SDKs cho cả web và mobile, cho phép bạn xây dựng ứng dụng mà không cần server
Khi người dùng ngoại tuyến, Realtime Databse SDKs sử dụng local cache trên trình duyệt để lưu trữ thay đổi Khi thiết bị online các dữ liệu đó sẽ được tự động đồng bộ hóa
Realtime Database cũng tích hợp với Firebase Authentication để cung cấp một tiến trình xác thực đơn giản và trực quan
2 Authentication tai lieu, luan van44 of 98. document, khoa luan44 of 98.
Firebase Authentication cung cấp dịch vụ backend, SDKs sẵn sàng sử dụng, và các thư viện UI được làm sẵn để giúp ứng dụng của bạn xác thực người dùng
Thông thường, bạn phải mất cả tháng để xây dựng hệ thống xác thực và thường xuyên phải bảo trì nó Nhưng nếu bạn sử dụng Firebase, bạn chỉ dưới 10 dòng code để xử lý mọi thứ, bao gồm cả những thao tác phức tạp như sát nhập tài khoản
Bạn có thể xác thực người dùng qua các phương thức như: Email, Phone number, Facebook, Google, Twitter,
Sử dụng Firebase Authentication giúp dễ dang hơn cho việc xây dựng hệ thống xác thực an toàn, trong khi cũng cải thiện trải nghiệm cho người dùng
Firebase Authentication được phát triển bởi những người đã tạo ra Google Signin, Smart Lock và Chrome Password Manager tai lieu, luan van45 of 98. document, khoa luan45 of 98.
Firebase Cloud Messaging cung cấp một kết nối hiệu quả và đáng tin cậy giữa server và thiết bị của bạn, cho phép bạn gửi và nhận tin nhắn hoặc thông báo trên iOS, Android và Web mà không mất thêm chi phí
Bạn có thể gửi tin nhắn thông báo (giới hạn 2KB) hoặc tin nhắn dữ liệu (giới hạn 4KB)
Sử dụng FCM, bạn có thể dễ dàng xác định đối tượng mục tiêu với các phân khúc được định nghĩa trước hoặc do bạn tự định nghĩa, sử dụng nhân khẩu học và hành vi Bạn có thể gửi tin nhắn tới một nhóm các thiết bị được đăng kí theo các chủ đề xác định, hoặc bạn có thể nhận được chi tiết như một thiết bị duy nhất
FCM có thể gửi tin nhắn ngay lập tức hoặc trong tương lai theo múi giờ của người dùng Bạn có thể gửi dữ liệu tùy chỉnh như cài đặt độ ưu tiên, âm thanh, ngày hết hạn, và cũng theo dõi các sự kiện tùy chỉnh tai lieu, luan van46 of 98. document, khoa luan46 of 98.
CHƯƠNG THIẾT KẾ VÀ CÀI ĐẶT CHƯƠNG TRÌNH
Thiết kế cơ sở dữ liệu
3.1.1 Bảng actor_has_movie Dùng để lưu diễn viên có trong phim
Bảng 3.1 Bảng actor_has_movie
STT Tên field Kiểu dữ liệu
3.1.2 Bảng actors Dùng để lưu diễn viên
STT Tên field Kiểu dữ liệu
3.1.3 Bảng comments Dùng để lưu bình luận của người dùng
Bảng 3.2 Bảng comments tai lieu, luan van47 of 98. document, khoa luan47 of 98.
STT Tên field Kiểu dữ liệu
3.1.4 Bảng countries Dùng để lưu thông tin các nước
STT Tên field Kiểu dữ liệu
3.1.5 Bảng directors Dùng để lưu thông tin đạo diễn
STT Tên field Kiểu dữ liệu
3.1.6 Bảng favorites Dùng để lưu phim yêu thích
STT Tên field Kiểu dữ liệu
2 Movie_id Int tai lieu, luan van48 of 98. document, khoa luan48 of 98.
STT Tên field Kiểu dữ liệu
3.1.7 Bảng genre_has_movie Dùng để lưu thể loại có phim
Bảng 3.6 Bảng genre_has_movie
STT Tên field Kiểu dữ liệu
3.1.8 Bảng genres Dùng để lưu thể loại
STT Tên field Kiểu dữ liệu
3.1.9 Bảng images Dùng để lưu hình ảnh
STT Tên field Kiểu dữ liệu
3.1.10 Bảng movies Dùng để lưu thông tin phim tai lieu, luan van49 of 98. document, khoa luan49 of 98.
STT Tên field Kiểu dữ liệu
3.1.11 Bảng rates Dùng để lưu đánh giá phim
STT Tên field Kiểu dữ liệu
3.1.12 Bảng users Dùng để lưu thông tin người dùng tai lieu, luan van50 of 98. document, khoa luan50 of 98.
STT Tên field Kiểu dữ liệu
3.1.13 Bảng user_role Dùng để lưu vai trò người dùng
STT Tên field Kiểu dữ liệu
RESTful API
Hình 3.1, 3.2, 3.3 và 3.4 trình bày các REST API mà phía back-end (Spring boot) đã xây dựng để phía fornt-end (VueJS) sử dụng tai lieu, luan van51 of 98. document, khoa luan51 of 98.
Hình 3.1 RESTful API trang home
Hình 3.3 RESTful API User Role tai lieu, luan van52 of 98. document, khoa luan52 of 98.
Sơ đồ usecase
Bảng 3.13 Danh sách các actor
1 User User là đối tượng chính tác động trực tiếp và nhiều nhất vào hệ thống
User có thể thực hiện hầu như các chức năng của ứng dụng
2 Admin Admin là actor kế thừa actor user và thêm các chức năng quản trị
Bảng dưới đây trình bày các chức năng chính của ứng dụng
Bảng 3.14 Danh sách các usecase
STT Chức năng Mô tả
1 Login Xác thực và phân quyền cho người dùng khi họ sử dụng ứng dụng
2 Logout Thoát khỏi phiên làm việc
3 Sign up Đăng ký tài khoản để sử dụng ứng dụng
4 Change password Thay đổi mật khẩu người dùng
5 Add movie Thêm một phim mới
6 Edit movie Chỉnh sửa thông phim
9 Add user Thêm người dùng
10 Edit user Chỉnh sửa thông tin người dùng
11 Delete user Xóa người dùng tai lieu, luan van53 of 98. document, khoa luan53 of 98.
Dưới đây là sơ đồ mối quan hệ giữa các actor với actor, actor với use case và use case và use case
Chức năng của người dùng
Cập nhật thông tin cá nhân
Cập nhật mật khẩu Quản lý diễn viên
Cập nhật Quản lý thể loại
Hình 3.4 Sơ đồ usecase tai lieu, luan van54 of 98. document, khoa luan54 of 98.
3.3.1 Class Diagram genres users movies actors favorite comments user_role
-ID(PK): int slug:varchar(255)
-ID(PK): int name:varchar(255)
-ID(PK): int movie_id:int(20)
-ID(PK): int description:varchar(255)
-ID(PK): int description:varchar(255) slug:varchar(2550 avatar_id:int(20) country_id:int(20) user_role_id:int(20) image_id: int(20) country_id: int(20) num_rate:int(20) num_view:int(20) run_time:int(20) description: varchar(255) name: varchar(255) banner_id:int(20) name:varchar(255) user_id:int(20) movie_id:int(20) user_id:int(20) username:varchar(255) firstname:varchar(255) lastname:varchar(255) email:varchar(255) password:varchar(255) description: varchar(255)
-ID(PK): int movie_id:int(20) genre_id:int(20) name:varchar(255) description:varchar(255) birthday: timestamp
Hình 3.5 Class diagram tai lieu, luan van55 of 98. document, khoa luan55 of 98.
Send request login Require username & password Type username & password Send username & password check username & password return result return notificaion
Hình 3.6 Biểu đồ tuần tự đăng nhập tai lieu, luan van56 of 98. document, khoa luan56 of 98.
Open enter infomation & click create button createUser()
Check validate notify error validate [if false]
[if true] query into database confirm success and view list users after create confirm error [if false]
Hình 3.7 Biểu đồ tuần tự thêm người dùng tai lieu, luan van57 of 98. document, khoa luan57 of 98.
Open enter infomation & click save button updateUser()
Check validate notify error validate [if false]
[if true] query into database confirm success and view list users after create confirm error [if false]
Hình 3.8 Biểu đồ tuần tự cập nhật thông tin người dùng tai lieu, luan van58 of 98. document, khoa luan58 of 98.
3.3.3 Biểu đồ phân cấp chức năng
Quản lý phim Quản lý phân quyền
Xoá thể loại Thêm quyền
Hình 3.9 Biểu đồ phân cấp chức năng
Giao diện và chức năng
tai lieu, luan van59 of 98. document, khoa luan59 of 98.
50 Hình 3.10 Trang thể loại tai lieu, luan van60 of 98. document, khoa luan60 of 98.
51 Hình 3.11 Trang chủ tai lieu, luan van61 of 98. document, khoa luan61 of 98.
52 Hình 3.12 Trang xem phim tai lieu, luan van62 of 98. document, khoa luan62 of 98.
53 Hình 3.13 Trang thêm tài khoản người dùng tai lieu, luan van63 of 98. document, khoa luan63 of 98.
54 Hình 3.14 Trang quản lý người dùng tai lieu, luan van64 of 98. document, khoa luan64 of 98.
55 Hình 3.15 Trang quản lý phim tai lieu, luan van65 of 98. document, khoa luan65 of 98.
Hình 3.16 Trang login 3.4.2 Một số chức năng nổi bật
Tính năng đa ngôn ngữ của ứng dụng Ứng dụng hỗ trợ 2 ngôn ngữ là Tiếng Việt và Tiếng Anh tai lieu, luan van66 of 98. document, khoa luan66 of 98.
57 Hình 3.17 Ứng dụng với ngôn ngữ tiếng Việt tai lieu, luan van67 of 98. document, khoa luan67 of 98.
Hình 3.18 Ứng dụng với ngôn ngữ tiếng Anh tai lieu, luan van68 of 98. document, khoa luan68 of 98.
CHƯƠNG KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Kết quả đạt được
Nghiên cứu và trình bày một cách có hệ thống các nội dung cơ bản về Spring framework, VueJS,MySQL và một số công nghệ, kỹ thuật khác trong việc xây dựng một ứng dụng Java enterprise trên nền web
- Nắm được kiến trúc tổng quan của Spring Framework cũng như các nguyên lý cơ bản và cơ chế hoạt động của framework này
- Nắm được mô hình web MVC trong Spring framework và các cơ chế để bảo mật một ứng dụng web được hỗ trợ trong module Spring Security
- Xây dựng được ứng dụng web dạng SPA mà việc giao tiếp với server thông qua RESTful service với sự hỗ trợ của VueJS
- Thiết kế giao diện người dùng với HTM5 và Bootstrap có hỗ trợ responsive
- Xây dựng thành công web xem phim trực tuyến với đầy đủ các chức năng cơ bản.
Hạn chế
Các chức năng cơ bản của ứng dụng đã hoàn thành tốt, tuy nhiên do yêu cầu và phạm vi đề tài chỉ dừng lại ở mức demo công nghệ nên ứng dụng chưa hấp dẫn
Hạn chế về vật chất, không có host trên internet có cài đặt đầy đủ các phần mềm cần thiết tạo khó khăn trong việc thực hiện demo chương trình trên internet Vấn đề triển khai những công nghệ nêu trên không khó về tai lieu, luan van69 of 98. document, khoa luan69 of 98.
60 mặt kỹ thuật nhưng phải xây dựng một cơ sở hạ tầng đầy đủ và tốt để có thể thực thi ứng dụng.
Hướng phát triển
Tiếp tục tìm hiểu về một số cơ chế xác thực và phân quyền trong module Spring Security như cơ chế xác thực Oauth, Oauth2, OpenID,… để xây dựng ứng dụng với cơ chế bảo mật hơn
Bên cạnh đó tiếp tục tìm hiểu các module còn lại của Spring Framework như Spring AOP nhằm tích hợp vào hệ thống để thực hiện một số chức năng đặc biệt như ghi log người dùng
Tìm hiểu về web socket và kết hợp với VueJS để hướng đến việc xây dựng một ứng dụng web động với thời gian thực.