Tìm hiểu framework spring và xây dựng ứng dụng quản lý nhạc phía client
TRƯỜNG ĐẠI HỌC AN GIANG KHOA KỸ THUẬT - CÔNG NGHỆ - MÔI TRƯỜNG NGUYỄN THIỆN AN – DTH114081 KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC NGÀNH CÔNG NGHỆ THÔNG TIN TÌM HIỂU FRAMEWORK SPRING VÀ XÂY DỰNG ỨNG DỤNG QUẢN LÝ NHẠC PHÍA CLIENT AN GIANG – 05/2015 TRƯỜNG ĐẠI HỌC AN GIANG KHOA KỸ THUẬT - CÔNG NGHỆ - MÔI TRƯỜNG NGUYỄN THIỆN AN – DTH114081 KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC NGÀNH CÔNG NGHỆ THÔNG TIN TÌM HIỂU FRAMEWORK SPRING VÀ XÂY DỰNG ỨNG DỤNG QUẢN LÝ NHẠC PHÍA CLIENT Giảng viên hướng dẫn Thạc sĩ Huỳnh Lý Thanh Nhàn AN GIANG – 05/2015 iii LỜI CẢM ƠN Trước hết tôi xin tỏ lòng biết ơn sâu sắc đến Thạc sĩ Huỳnh Lý Thanh Nhàn, thầy đã tận tình hướng dẫn, giúp đỡ tôi rất nhiều trong suốt quá trình thực hiện luận văn này. Sự hiểu biết sâu sắc về khoa học cũng như kinh nghiệm của thầy chính là tiền đề giúp tôi hoàn thành luận văn. Tôi cũng xin chân thành cảm ơn Tiến sĩ Nguyễn Văn Hòa, thầy đã hướng dẫn và chỉ ra con đường tốt để tôi có thể được làm luận văn tại TMA và đồng thời học hỏi kinh nghiệm thực tế từ dự án đang hoạt động. Giúp tôi không còn bở ngỡ và lo lắng sau khi ra trường. Tôi chân thành cảm ơn quý thầy, cô Khoa Kỹ thuật – Công nghệ - Môi trường, Trường Đại học An Giang đã tận tình truyền đạt kiến thức trong bốn năm học tập. Với vốn kiến thức được tiếp thu trong quá trình học không chỉ là nền tảng cho quá trình nghiên cứu khóa luận mà còn là hành trang để tôi bước vào đời một cách vững chắc và tự tin. Tôi chân thành cảm ơn chị Nguyễn Ngọc Tuyền – giám đốc DC4 và anh Nguyễn Hải Âu – senior manager của TMA đã cho phép và tạo điều kiện thuận lợi để tôi được làm luận văn tại công ty. Đồng thời tôi xin gởi lời cảm ơn chân thành đến anh Nguyễn Hoàng Diệu là người đã giúp đỡ tôi rất nhiều về mặt kỹ thuật trong suốt thời gian tại TMA. Tôi cũng xin gửi lời cảm ơn đến các bạn lớp DH12TH đã chia sẽ và giúp đỡ tôi trong quá trình học tập tại Đại học An Giang. Đặc biệt tôi xin cảm ơn bạn Lê Thành Được đã cùng tôi nghiên cứu, làm việc nhóm trong suốt quá trình thực hiện luận văn. Cuối cùng, tôi xin cảm ơn chân thành với lòng biết ơn sâu sắc đến ba mẹ, chị hai và gia đình đã nuôi dưỡng và dạy bảo tôi nên người và tạo cho tôi c điều kiện tốt để được học tập và phát triển. Với vốn kiến thức hạn hẹp và thời gian thực hiện có hạn nên không tránh khỏi những thiếu sót. Rất mong nhận được những ý kiến đng gp của quý thầy cô và anh chị trong TMA, đ sẽ là hành trang quý giá giúp tôi hoàn thiện kiến thức của mình sau này. Xin chân thành cảm ơn! An Giang, ngày 20 tháng 05 năm 2015 Sinh viên thực hiện Nguyễn Thiện An iv NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN Giảng viên hướng dẫn (Ký và ghi rõ họ tên) Nội dung nhận xét: - Đồng ý hay không đồng ý cho sinh viên báo cáo TTCK; Nếu không đồng ý cần ghi rõ lý do. - Kết quả đạt được so với yêu cầu. - Ý kiến khác (nếu có). v TÓM TẮT Ngày nay tỷ lệ các dự án phần mềm thất bại hoặc không đáp ứng được các yêu cầu ban đầu là rất cao với hơn 83,8%. Bên cạnh đ chi phí cho việc bảo trì và mở rộng hệ thống luôn lớn hơn nhiều lần so với các pha khác trong quy trình phát triển một hệ thống. Một trong những nguyên nhân cơ bản nhất khiến các dự án thất bại là do các thành phần quá phụ thuộc lẫn nhau, chồng chéo, không có tính sử dụng lại. Vì vậy trong quy trình phát triển phần mềm hiện đại, xây dựng và phát triển một hệ thống bao giờ cũng đặt việc tạo ra các thành phần riêng rẽ độc lập, có sự phân biệt rõ ràng về trách nhiệm, có tính sử dụng lại cao lên làm ưu tiên hàng đầu. Tuy nhiên, điều này là không dễ dàng bởi tính độc lập của các thành phần sẽ bị giảm đi do cách mà chúng liên kết với nhau. Luận văn này sẽ tập trung tìm hiểu và giới thiệu sơ lược về Spring, những đặc tính vượt trội, ưu việt của nó trong việc tạo ra các ứng dụng đòi hỏi sự module hóa và có khả năng sử dụng lại cao. Đồng thời trình bày thêm về một số công nghệ như JMS, MongoDB, AngularJS, Bootstrap hiện đang được các công ty phần mềm sử dụng để cùng với Spring tạo nên một ứng dụng web enterprise. 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 ứng dụng quản lý nhạc trên nền web. Ứng dụng sẽ được thiết kế thành hai module chính là module client và module server. Trong luận văn này chúng tôi sẽ trình bày chi tiết phần thiết kế và xây dựng module client. Module server sẽ được đề cập trong luận văn của bạn Lê Thành Được. vi ABSTRACT Nowadays, the percentage of software project fails or does not meets the original requirements which are very high with more than 83.3%. Besides, the cost for maintaining and expanding the system is much bigger than another phases of the process of developing a system. One of the most basic reasons for project failure is due to components that is too interdependent, overlapping and non-reusable. Therefore, in the process of modern software development, building and developing a system that always put the creative independent separating components, there is a clear distinction of responsibility, taking into using again high up as top priority. However, this is not easy because the independence of the components will be reduced by the way that it link together. These thesis will focus on understanding and briefing introduction about Spring framework, superior properties, outstanding features in creative application that requires modularizing and capacity of reusing high. Beside that, further description of some technologies such as JMS, MongoDB, AngularJS and Bootstrap which are currently software companies use to create a web application enterprise with Spring framework. After studying, we are going to use the result of the studying to build an application. It aims to illustrate the theoretical part presented. We are going to build a Music Manager application on the web. Application is going to be designed in two main modules: client module and server module. In this thesis we will present about details of the designing and building client module. Server module is going to be discussed in thesis of Le Thanh Duoc. vii MỤC LỤC LỜI CẢM ƠN iii NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN iv TÓM TẮT v ABSTRACT vi MỤC LỤC vii DANH MỤC HÌNH ix DANH MỤC BẢNG xi DANH SÁCH TỪ VIẾT TẮT xii Chương 1 TỔNG QUAN 1 1.1 LÝ DO CHỌN ĐỀ TÀI 1 1.2 ĐẶT VẤN ĐỀ VÀ HƯỚNG GIẢI QUYẾT 2 1.3 PHẠM VI ĐỀ TÀI 3 1.4 PHƯƠNG PHÁP NGHIÊN CỨU 4 1.5 BỐ CỤC LUẬN VĂN 4 Chương 2 CƠ SỞ LÝ THUYẾT 5 2.1 NGÔN NGỮ LẬP TRÌNH JAVA 5 2.1.1 Java và lịch sử phát triển 5 2.1.2 Java Reflection 5 2.2 SPRING FRAMEWORK 9 2.2.1 Tổng quan về Spring 9 2.2.2 Lịch sử phát triển 9 2.2.3 Một số khái niệm chính 10 2.2.4 Các module 14 2.2.5 Spring Core 15 2.2.6 Spring MVC 27 2.2.7 Spring Security 34 2.3 JAVA MESSAGE SYSTEM (JMS) 37 2.3.1 Hệ thống gửi nhận thông điệp (messaging system) 37 2.3.2 Tổng quan về JMS 38 2.3.3 Các mô hình gửi nhận thông điệp trong JMS 39 2.4 ANGULARJS 41 2.4.1 Tổng quan về AngularJS 41 2.4.2 Các đặc trưng của AngularJS 42 viii 2.5 MONGODB 46 2.5.1 Tổng quan về NoSQL 46 2.5.2 MongoDB 48 2.6 BOOTSTRAP VÀ RESPONSIVE 49 Chương 3 THIẾT KẾ VÀ CÀI ĐẶT CHƯƠNG TRÌNH 50 3.1 MÔ HÌNH ỨNG DỤNG 50 3.2 THIẾT KẾ MESSAGE 53 3.3 THIẾT KẾ CƠ SỞ DỮ LIỆU 54 3.4 RESTful API 56 3.5 CƠ CHẾ BẢO MẬT ỨNG DỤNG 57 3.6 SƠ ĐỒ USECASE 57 3.7 GIAO DIỆN VÀ CHỨC NĂNG 60 3.7.1 Một số giao diện chính 60 3.7.2 Một số chức năng nổi bật của ứng dụng 64 Chương 4 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 66 4.1 KẾT QUẢ ĐẠT ĐƯỢC 66 4.2 HẠN CHẾ 66 4.3 HƯỚNG PHÁT TRIỂN 66 TÀI LIỆU THAM KHẢO 67 PHỤ LỤC 1: HƯỚNG DẪN TRIỂN KHAI ỨNG DỤNG 68 PHỤ LỤC 2: GIỚI THIỆU MAVEN 77 ix DANH MỤC HÌNH Hình 1.1: Chi phí cho các pha phát triển một hệ thống 1 Hình 2.1: Kiến trúc tổng quát Java Reflaction API 6 Hình 2.2: Luồng điều khiển của chương trình bình thường 11 Hình 2.3: Servlet Container 12 Hình 2.4: Kiểm thử đơn vị với JUnit 12 Hình 2.5: Mô hình ứng dụng áp dụng IoC 13 Hình 2.6: Các module của Spring framework 14 Hình 2.7: Singleton scope 18 Hình 2.8: Prototype scope 19 Hình 2.9: Spring IoC Container 20 Hình 2.10: Kiến trúc module Spring MVC 27 Hình 2.11: Sơ đồ luồng xử lý của Spring MVC 28 Hình 2.12: Luồng xử lý một request trong Spring MVC 29 Hình 2.13: Mô hình hệ thống gửi nhận thông điệp 37 Hình 2.14: Mô hình tổng quát JMS 39 Hình 2.15: Hai mô hình gửi nhận message trong JMS 40 Hình 2.16: Mô hình point - to - point 40 Hình 2.17: Mô hình publish - subscribe 41 Hình 2.18: Single Page Application 42 Hình 2.19: Kiến trúc MVC trong AngularJS 43 Hình 2.20: One-way binding và Two-way binding 43 Hình 3.1: Mô hình ứng dụng 50 Hình 3.2: Mô hình chi tiết của ứng dụng 51 Hình 3.3: Luồng thực thi của ứng dụng 52 Hình 3.4: Module client 53 Hình 3.5: Sơ đồ class Message 54 Hình 3.6: Document trong giao diện RoboMongo 55 Hình 3.7: RESTful API về bài hát 56 Hình 3.8: RESTful API về user 56 Hình 3.9: Cơ chế bảo mật ứng dụng 57 Hình 3.10: Sơ đồ use case của actor user 58 Hình 3.11: Sơ đồ use case của actor Role_User 59 Hình 3.12: Sơ đồ use case của actor Role_Admin 59 Hình 3.13: Giao diện đăng ký người dùng 60 Hình 3.14: Giao diện đăng nhập 60 Hình 3.15: Giao diện play nhạc 61 Hình 3.16: Giao diện bài hát được chia sẻ 61 Hình 3.17: Giao diện danh sách bài hát 61 Hình 3.18: Giao diện tìm kiếm bài hát 62 Hình 3.19: Giao diện sửa thông tin bài hát 62 Hình 3.20: Giao diện sửa thông tin user 62 Hình 3.21: Giao diện quản lý user 63 Hình 3.22: Giao diện thống kê các thông tin 63 Hình 3.23: Giao diện đổi password 63 x Hình 3.24: Giao diện sửa thông tin user của admin 64 Hình 3.25: Email kích hoạt tài khoản khi đăng ký thành công 64 Hình 3.26: Tài khoản trước và sau khi kích hoạt 64 Hình 3.27: Ứng dụng với ngôn ngữ Tiếng Việt 65 Hình 3.28: Ứng dụng với ngôn ngữ Tiếng Anh 65 [...]... về Spring framework chúng tôi sẽ tập trung tìm hiểu và trình bày 3 module: Spring core, Spring MVC và Spring Security Một số module khác được trình bày trong luận văn của bạn Lê Thành Được 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 ứng dụng quản lý nhạc trên nền web Ứng dụng. .. và xây dựng ứng dụng quản lý nhạc phía client Nội dung luận văn này sẽ tập trung tìm hiểu và giới thiệu về Spring, một framework với những đặc tính vượt trội và ưu việt trong việc tạo ra các hệ thống đòi hỏi sự module hóa và có khả năng sử dụng lại cao Đồng thời tìm hiểu thêm một số framework và kỹ thuật khác hiện đang được các công ty phần mềm sử dụng để tích hợp với Spring tạo nên một ứng dụng web... NoSQL; giới thiệu về MongoDB 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, JMS, AngularJS, MongoDB 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 quản lý nhạc phía client sử dụng các công nghệ vừa nêu... vụ quản lý giao dịch cho các đối tượng trong bất kỳ ứng dụng nào sử dụng Spring Với Spring AOP chúng ta có thể tích hợp declarative transaction management vào trong ứng dụng mà không cần dựa vào EJB component Spring AOP module cũng đưa lập trình metadata vào trong Spring Sử dụng cái này chúng ta có thể thêm annotation vào source code để hướng dẫn Spring nơi và làm thế nào để liên hệ với aspect Spring. .. tính của MVC pattern để xây dựng các ứng dụng Web MVC framework thì 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, Velocity, Tiles và generation of PDF và Excel file 2.2.5 Spring Core 2.2.5.1 Bean Trong Spring các object được quản lý bởi IoC container và được gọi là bean Một bean thì đơn giản là một đối tượng được khởi tạo, phân phát và được quản lý bởi IoC container [6,... sử dụng và truy cập qua các thiết bị di động tăng một cách nhanh chóng, xu hướng thiết kế và viết các ứng dụng thích hợp với các thiết bị di động đang trở thành một xu hướng tất yếu Các hệ thống đã được phát triển để có thể sẵn sàng cho các trang web phù hợp với thiết bị di động và các ứng dụng trên thiết bị di động Chính vì những lý do trên nên chúng tôi chọn đề tài Tìm hiểu Framework Spring và xây. .. thống bị đảo ngược so với cách tương tác truyền thống [4, tr1] IoC trong Spring cũng hoàn toàn mang ý nghĩa như trên Trong Spring các đối tượng chính để xây dựng ứng dụng thì được quản lý bởi Spring IoC container Và IoC container gọi các đối tượng đó là các bean Một bean chỉ đơn giản là một đối tượng được khởi tạo và quản lý bởi Spring IoC container 2.2.3.2 Dependency Injection (DI) Dependency Injection... module client và module server Trong luận văn này chúng tôi sẽ trình 3 bày phần thiết kế và xây dựng module client Module server sẽ được trình bày trong luận văn của bạn Lê Thành Được PHƯƠNG PHÁP NGHIÊN CỨU 1.4 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ư JMS, AngularJS, MongoDB, Maven của các tác giả trong và. .. 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,... 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 Người lập trình đã ủy thác việc kiểm soát luồng thực thi ứng dụng cho một thành phần (thường là thư viện dựng sẵn) bên ngoài đảm nhiệm, chỉ còn tập trung vào chức . thiết bị di động và các ứng dụng trên thiết bị di động. Chính vì những lý do trên nên chúng tôi chọn đề tài Tìm hiểu Framework Spring và xây dựng ứng dụng quản lý nhạc phía client . Nội dung. 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 ứng dụng quản lý nhạc. HỌC NGÀNH CÔNG NGHỆ THÔNG TIN TÌM HIỂU FRAMEWORK SPRING VÀ XÂY DỰNG ỨNG DỤNG QUẢN LÝ NHẠC PHÍA CLIENT Giảng viên hướng dẫn Thạc sĩ Huỳnh Lý Thanh Nhàn AN GIANG –