Luận văn: Xây dựng Website xem phim bằng VueJS và Java Spring Boot

Tài liệu chi tiết về cách xây dựng website xem phim online. Ứng dụng kết hợp framework VueJS cho frontend và Java Spring Boot cho backend.

Chuyên ngành

Công nghệ thông tin

Người đăng

Ẩn danh

Thể loại

Báo cáo thực tập tốt nghiệp

2020

70
0
0

Phí lưu trữ

30 Point

Tóm tắt

I. Tổng Quan Về Framework VueJS và Java Spring Boot

VueJS và Java Spring Boot là hai công nghệ hiện đại được sử dụng rộng rãi trong phát triển ứng dụng web hiện nay. VueJS là một framework JavaScript tiến tiến với khả năng xây dựng giao diện người dùng động và tương tác cao, trong khi Java Spring Boot cung cấp nền tảng backend mạnh mẽ để xây dựng các dịch vụ RESTful API. Sự kết hợp của hai công nghệ này tạo nên một kiến trúc ứng dụng web hoàn chỉnh, cho phép các lập trình viên phát triển website xem phim trực tuyến với hiệu suất tối ưu. Framework VueJS nổi bật với mô hình MVVM đơn giản, trong khi Spring Boot đơn giản hóa việc cấu hình và triển khai ứng dụng Java. Cách tiếp cận này đã được chứng minh hiệu quả trong nhiều dự án thực tế, đặc biệt là các nền tảng giải trí và phát trực tuyến nội dung.

1.1. VueJS Framework Frontend Tối Ưu

VueJS là một framework JavaScript nhẹ nhàng nhưng mạnh mẽ, được thiết kế để xây dựng Single Page Application (SPA). Nó cung cấp hệ thống two-way data binding cho phép tự động đồng bộ dữ liệu giữa model và view. Các đặc trưng nổi bật của VueJS bao gồm thành phần (components) tái sử dụng, quản lý trạng thái hiệu quả, và tương tác DOM vô cùng mượt mà. Đối với website xem phim, VueJS giúp tạo giao diện thân thiện, responsive và tải nhanh cho người dùng.

1.2. Java Spring Boot Backend Mạnh Mẽ

Java Spring Boot là framework backend hiện đại, giúp đơn giản hóa việc phát triển ứng dụng Java doanh nghiệp. Nó cung cấp IoC (Inversion of Control), AOP (Aspect Oriented Programming), và tích hợp các thư viện phổ biến một cách tự động. Spring Boot cho phép xây dựng RESTful API mạnh mẽ để phục vụ dữ liệu phim, quản lý người dùng, và xử lý các giao dịch phức tạp. Kiến trúc MVC của Spring Boot đảm bảo mã nguồn sạch, bảo trì tốt và dễ mở rộng cho website xem phim online.

II. Kiến Trúc Hệ Thống Website Xem Phim Online

Kiến trúc website xem phim trực tuyến được xây dựng dựa trên mô hình client-server hiện đại. Phía frontend sử dụng VueJS để tạo giao diện người dùng đẹp mắt, tương tác mượt mà, với khả năng xem phim theo danh mục thể loại, tìm kiếm phim, và quản lý tài khoản người dùng. Phía backend sử dụng Java Spring Boot để cung cấp các RESTful API endpoint, xử lý logic business, quản lý cơ sở dữ liệu, và xác thực người dùng. Hệ thống sử dụng MySQL để lưu trữ dữ liệu phim, diễn viên, người dùng, và Firebase để xử lý xác thực người dùng, lưu trữ hình ảnh, và các dịch vụ đám mây khác. Kiến trúc này đảm bảo tính bảo mật, hiệu suất cao, và khả năng mở rộng cho ứng dụng.

2.1. Cơ Sở Dữ Liệu MySQL và Thiết Kế Schema

MySQL được chọn làm hệ quản trị cơ sở dữ liệu chính cho website xem phim vì ưu điểm hiệu suất cao, độ tin cậykhả năng mở rộng. Schema dữ liệu bao gồm các bảng chính: movies (phim), genres (thể loại), actors (diễn viên), users (người dùng), và các bảng quan hệ như genre_has_movie, actor_has_movie. Thiết kế này cho phép quản lý quan hệ nhiều-nhiều giữa phim, diễn viên, và thể loại một cách hiệu quả và linh hoạt.

2.2. RESTful API và Điểm Cuối Dịch Vụ

RESTful API được xây dựng trên Java Spring Boot cung cấp các endpoint tiêu chuẩn như: /api/movies (danh sách phim), /api/users (quản lý người dùng), /api/genres (thể loại phim), và /api/auth (xác thực). Mỗi endpoint tuân theo nguyên tắc REST với các HTTP method: GET (lấy dữ liệu), POST (thêm dữ liệu), PUT (cập nhật), DELETE (xóa). Điều này cho phép VueJS frontend giao tiếp dễ dàng với backend, đồng thời duy trì tính độc lập và khả năng tái sử dụng của API.

III. Các Tính Năng Chính Của Website Xem Phim

Website xem phim online được phát triển với các tính năng chính nhằm cung cấp trải nghiệm giải trí tốt nhất cho người dùng. Tính năng xem phim cho phép người dùng phát hành động phim trực tuyến với chất lượng cao, hỗ trợ định dạng video đa dạng. Tính năng tìm kiếm và phân loại phim theo thể loại, năm phát hành, và xếp hạng giúp người dùng dễ dàng tìm thấy nội dung yêu thích. Hệ thống quản lý người dùng bao gồm đăng ký tài khoản, đăng nhập, lưu danh sách phim yêu thích, và quản lý hồ sơ cá nhân. Admin dashboard cung cấp công cụ quản lý phim, diễn viên, người dùng, và thống kê sử dụng hệ thống. Giao diện hỗ trợ đa ngôn ngữ (Tiếng Việt, Tiếng Anh) và responsive design trên tất cả thiết bị.

3.1. Chức Năng Đăng Nhập và Xác Thực Người Dùng

Hệ thống xác thực người dùng sử dụng Firebase Authentication để đảm bảo bảo mật cao. Người dùng có thể đăng ký tài khoản mới, đăng nhập bằng email/password, hoặc sử dụng các phương pháp xác thực bên thứ ba. Hệ thống quản lý user roles phân biệt giữa admin, người dùng thông thường, và khách. Token JWT được sử dụng để duy trì session an toàn giữa client và server, bảo vệ các API endpoint nhạy cảm.

3.2. Quản Lý Nội Dung Phim và Metadata

Admin có thể thêm, cập nhật, xóa phim thông qua dashboard quản lý. Mỗi phim lưu trữ thông tin chi tiết: tiêu đề, mô tả, năm phát hành, thể loại, danh sách diễn viên, poster, và liên kết video. Hệ thống hỗ trợ quản lý nhiều thể loạinhiều diễn viên cho mỗi bộ phim. Bootstrap và Responsive Design đảm bảo giao diện hiển thị đẹp trên mọi kích thước màn hình, cung cấp trải nghiệm người dùng tối ưu trên desktop, tablet, và mobile.

IV. Kết Luận và Hướng Phát Triển Tương Lai

Dự án xây dựng website xem phim trực tuyến bằng VueJSJava Spring Boot đã chứng minh tính khả thi của kiến trúc hiện đại trong phát triển ứng dụng web. Sự kết hợp giữa frontend linh hoạt của VueJS và backend mạnh mẽ của Spring Boot tạo nên một nền tảng ổn định, hiệu suất cao. MySQL cung cấp lưu trữ dữ liệu đáng tin cậy, trong khi Firebase bổ sung các dịch vụ đám mây thiết yếu. Kết quả đạt được bao gồm một ứng dụng web hoàn chỉnh, thoả mãn các yêu cầu chức năng chính, hỗ trợ đa ngôn ngữresponsive design. Hướng phát triển tương lai có thể bao gồm tích hợp machine learning để gợi ý phim cá nhân hóa, hỗ trợ phát trực tuyến HD/4K, thêm tính năng bình luận xã hội, và mở rộng thị trường ra các nước khác.

4.1. Kết Quả Đạt Được và Những Bài Học

Dự án đã thành công trong việc xây dựng website xem phim đầy đủ tính năng với kiến trúc microservices hiện đại. Các bài học quan trọng bao gồm tầm quan trọng của thiết kế cơ sở dữ liệu tốt, tương tác API RESTful hiệu quả, và trải nghiệm người dùng responsive. Teamwork giữa frontend và backend developer đã chứng minh hiệu quả trong việc phân chia công việc và tối ưu hóa quy trình phát triển.

4.2. Những Hướng Phát Triển Tiếp Theo

Các cải tiến tương lai có thể bao gồm tích hợp hệ thống gợi ý phim sử dụng AI/Machine Learning, triển khai live streaming cho các sự kiện phim, thêm tính năng mua/thuê nội dung, và tích hợp thanh toán trực tuyến. Mở rộng thị trường quốc tế, hỗ trợ phụ đề tự động bằng công nghệ ASR, và xây dựng ứng dụng mobile native cho iOS/Android cũng là những hướng đi tiềm năng.

21/12/2025

Trích đoạn nội dung tài liệu

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 2 document, khoa luan12 of 98. tai lieu, luan van13 of 98.

và Bootstrap: Trong phần Spring framework chúng tôi sẽ giới thiệu sơ lược về framework này và một số khái niệm liên quan, tiếp theo sẽ trình bày về 3 module là Spring Boot, Spring MVC và Spring Security. - Phần VueJS sẽ trình bày tổng quan về framework này và những đ ặc trưng nổi bật của nó. - Phần tiếp theo trình bày về MySQL, các dạng của MySQL; giới thiệu về MySQL và ưu điểm của hệ quản trị CSDL này. - Phần cuối cùng sẽ giới thiệu về Bootstrap và tính năng responsive mà Bootstrap hỗ trợ trong việc xây dựng giao diện người dùng cho ứng dụng web.

Chương 3: Sau khi tìm hiểu về Spring, VueJS, MySQL và Bootstrap chương này trình bày phần phân tích, thiết kế và cài đặt ứng dụng xem phim trực tuyến sử dụng các công nghệ vừa nêu. Chương 4: Những kết quả đạt được, thảo luận những vấn đề khó khăn và đưa ra hướng phát triển trong tương lai. Ngôn ngữ lập trình Java 2. 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. 3 document, khoa luan13 of 98. tai lieu, luan van14 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: 1. Java SE 6 (còn gọi là Mustang), được công bố 11 tháng 12 năm 2006. 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.

JDK 8, 18 tháng 3 năm 2014 10. JDK 9, 21 tháng 9 năm 2017 11. JDK 10, 20 tháng 3 năm 2018 4 document, khoa luan14 of 98. tai lieu, luan van15 of 98.

Tổng quan Spring 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 đá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. 5 document, khoa luan15 of 98.

tai lieu, luan van16 of 98. Lịch sử phát triển 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. 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. 6 document, khoa luan16 of 98.

tai lieu, luan van17 of 98. 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í, 7 document, khoa luan17 of 98. tai lieu, luan van18 of 98. 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.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: 8 document, khoa luan18 of 98. tai lieu, luan van19 of 98. Tạo lớp đối tượng kế thừa từ HttpServlet, override các phương thức doGet(), doPost(),… - Đăng ký trong file cấu hình Deployment Descriptor tương ứng Servlet này với đường dẫn xác định. đến? Ai chịu trách nhiệm chuyển đổi các thông điệp HTTP (HTTP Request và HTTP Response) thành các đối tượng Java (HttpServletRequest và HttpServletResponse) để truyền cho các hàm doGet(), doPost()? Đó chính là Servlet Container.2 Servlet Container Ví dụ 2: Lập trình kiểm thử đơn vị (Unit testing) với Junit Trong quá trình phát triển các thành phần chức năng của ứng dụng, chúng ta thường áp dụng kiểm thử đơn vị để đảm bảo chức năng đó vẫn chạy đúng trong suốt quá trình ứng dụng được mở rộng và phát triển thêm.

Để tạo bộ unit test, chúng ta chỉ cần tạo một lớp đối tượng, định nghĩa các phương thức khởi tạo, phương thức kết thúc và các phương thức test. Sau đó, chúng ta chỉ việc chạy bộ test để kiểm thử. 9 document, khoa luan19 of 98. tai lieu, luan van20 of 98.

Việc điều khiển trình tự thực thi các phương thức được giao cho thư viện bên ngoài đảm nhiệm chẳng hạn như TestNG hoặc JUnit.3 : Kiểm thử đơn vị với JUnit Với hai ví dụ trên, chúng ta nhận thấy trong các ứng dụng đã có sự thay đổi vai trò. Ứng dụng không còn ôm đồm vừa trực tiếp tạo dựng và kiểm soát luồng thực thi, vừa xây dựng chức năng nghiệp vụ. Việc kiểm soát luồng thực thi được tách khỏi chức năng nghiệp vụ và bị đẩy ra bên ngoài.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ