Chương 1: Cơ sở lý thuyết 1.1 Cơ sở lý luận và thực tiễn 1.1 Spring là gì? Spring là một Framework phát triển các ứng dụng Java được sử dụng bởi hàng triệu lập trình viên. Nó giúp tạo các ứng dụng có hiệu năng cao, dễ kiểm thử, sử dụng lại code… Spring nhẹ và trong suốt (nhẹ: kích thước nhỏ, version cơ bản chỉ khoảng 2MB; trong suốt: hoạt động một cách trong suốt với lập trình viên) Spring là một mã nguồn mở, được phát triển, chia sẻ và có cộng đồng người dùng rất lơn. Spring Framework được xây dựng dựa trên 2 nguyên tắc design chính là: Dependency Injection và Aspect Oriented Programming. Những tính năng core (cốt lõi) của Spring có thể được sử dụng để phát triển Java Desktop, ứng dụng mobile, Java Web.
Mục tiêu chính của Spring là giúp phát triển các ứng dụng J2EE một cách dễ dàng hơn dựa trên mô hình sử dụng POJO (Plain Old Java Object). Spring được chia làm nhiều module khác nhau, tùy theo mục đích phát triển ứng dụng mà ta dùng 1 trong các module đó. Dưới đây là kiến trúc tổng thể của Spring Framework. 10 Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 Hình 1.
Kiến trúc của Spring Test: tầng này cung cấp khả năng hỗ trợ kiểm thử với JUnit và TestNG. Core Container: Bao gồm các module spring core, beans, context và expression languate (EL) Spring core, bean cung cấp tính năng IOC và Dependency Injection. Spring Context hỗ trợ đa ngôn ngữ (internationalization), các tính năng Java EE như EJB, JMX. Expression Language được mở rộng từ Expresion Language trong JSP.
Nó cung cấp hỗ trợ việc setting/getting giá trị, các method cải tiến cho phép truy cập collections, index, các toán tử logic… AOP, Aspects and Instrumentation: những module này hỗ trợ cài đặt lập trình hướng khía cạnh (Aspect Oriented Programming), hỗ trợ tích hợp với AspectJ. Data Access / Integration Nhóm này bao gồm JDBC, ORM, OXM, JMS và module Transaction. Những module này cung cấp khả năng giao tiếp với database. Web Hay còn gọi là Spring MVC Nhóm này gồm Web, Web- Servlet… hỗ trợ việc tạo ứng dụng web.2 Lợi ích của Spring Spring cho phép lập trình viên sử dụng POJOs.
Việc sử dụng POJOs giúp bạn không phải làm việc với EJB, ứng dụng, các luồng chạy, cấu hình… đơn giản hơn rất nhiều. Spring được tổ chức theo kiểu mô đun. Số lượng các gói và các lớp khá nhiều, nhưng bạn chỉ cần quan tâm đến những gì bạn cần và không cần quan tâm đến phần còn lại. 11 Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 Spring hỗ trợ sử dụng khá nhiều công nghệ như ORM Framework, các logging framework, JEE, các thư viện tạo lịch trình (Quartz và JDK timer)… Module Web của Spring được thiết kế theo mô hình MVC nên nó cung cấp đầy đủ các tính năng giúp thay thế các web framework khác như Struts.2 Tổng quan về công nghệ chính 1.1 Tổng quan về ngôn ngữ lập trình Java Hình 1.
Ngôn ngữ lập trình java Java là một trong những ngôn ngữ lập trình hướng đối tượng. Nó được sử dụng trong phát triển phần mềm, trang web, game hay ứng dụng trên các thiết bị di động. Java được khởi đầu bởi James Gosling và bạn đồng nghiệp ở Sun MicroSystem năm 1991. Ban đầu Java được tạo ra nhằm mục đích viết phần mềm cho các sản phẩm gia dụng, và có tên là Oak.
Java được phát hành năm 1994, đến năm 2010 được Oracle mua lại từ Sun MicroSystem. Java được tạo ra với tiêu chí “Viết (code) một lần, thực thi khắp nơi” (Write Once, Run Anywhere – WORA). Chương trình phần mềm viết bằng Java có thể chạy trên mọi nền tảng (platform) khác nhau thông qua một 12 Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 môi trường thực thi với điều kiện có môi trường thực thi thích hợp hỗ trợ nền tảng đó.2 Tổng quan về IDE Intellij IntelliJ IDEA là một IDE (Integrated Development Environment) phổ biến được phát triển bởi JetBrains. Được thiết kế đặc biệt cho lập trình viên Java, Kotlin và các ngôn ngữ khác trên nền tảng JVM (Java Virtual Machine), IntelliJ IDEA cung cấp một loạt các tính năng mạnh mẽ để hỗ trợ quá trình phát triển phần mềm.
Dưới đây là một số điểm nổi bật của IntelliJ IDEA: Hỗ trợ nhiều ngôn ngữ và framework: Hình 1. IDE Intellij IntelliJ IDEA không chỉ hỗ trợ lập trình Java và Kotlin mà còn cung cấp tính năng tương tự cho nhiều ngôn ngữ khác như JavaScript, TypeScript, HTML, CSS, SQL và nhiều framework phổ biến như Spring, Hibernate, Android và others. Tích hợp công cụ phát triển: IntelliJ IDEA tích hợp với nhiều công cụ phát triển phổ biến như Maven, Gradle và Ant để quản lý dự án và phụ thuộc. Nó cũng hỗ trợ quản lý phiên bản với Git, SVN và Mercurial.
Tính năng thông minh: IDE cung cấp nhiều tính năng thông minh như code completion, refactoring, debugging và analysis để giúp lập trình viên viết mã nhanh chóng và hiệu quả. Hỗ trợ kiểm thử và triển khai: IntelliJ IDEA có các tính năng tích hợp để kiểm tra và triển khai ứng dụng, bao gồm cả tích hợp với các dịch vụ 13 Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 cloud như Amazon Web Services (AWS) và Google Cloud Platform (GCP). Plugin phong phú: IDE hỗ trợ plugin rất phong phú từ cộng đồng và từ JetBrains, giúp mở rộng các tính năng theo nhu cầu của người dùng. Hỗ trợ đa nền tảng: IntelliJ IDEA có thể chạy trên nhiều hệ điều hành như Windows, macOS và Linux.
IntelliJ IDEA có phiên bản Community (miễn phí) và Ultimate (trả phí), với phiên bản Ultimate cung cấp các tính năng mở rộng như hỗ trợ các ngôn ngữ và framework khác nhau. Đây là một trong những IDE phổ biến và được ưa chuộng trong cộng đồng phát triển phần mềm.3 Tổng quan về cơ sở dữ liệu MySQL Hình 1. Cơ sở dữ liệu MySQL MySQL là một hệ quản trị cơ sở dữ liệu (DBMS) mã nguồn mở phổ biến, được sử dụng rộng rãi trong các ứng dụng web và doanh nghiệp. Dưới đây là một số điểm nổi bật về MySQL: Mã nguồn mở: MySQL là một sản phẩm mã nguồn mở, điều này có nghĩa là bạn có thể sử dụng, sửa đổi và phân phối nó miễn phí.
Hỗ trợ nhiều nền tảng: MySQL có thể chạy trên nhiều hệ điều hành khác nhau như Windows, macOS và Linux, cũng như trên nhiều kiến trúc phần cứng. Tính năng mạnh mẽ: MySQL cung cấp một loạt các tính năng mạnh mẽ như hỗ trợ các loại dữ liệu phong phú, các phương thức kỹ thuật số, các chức năng lưu trữ và quản lý quyền truy cập. 14 Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 Hiệu suất cao: MySQL được tối ưu hóa để cung cấp hiệu suất cao, với khả năng xử lý các tác vụ truy vấn và ghi dữ liệu nhanh chóng và hiệu quả. Độ tin cậy và khả năng mở rộng: MySQL có tính năng độ tin cậy cao và khả năng mở rộng tốt, cho phép bạn xây dựng và quản lý cơ sở dữ liệu lớn và phức tạp.
Hỗ trợ cộng đồng lớn: Với một cộng đồng người dùng và phát triển lớn, bạn có thể dễ dàng tìm thấy tài liệu, hướng dẫn và hỗ trợ từ cộng đồng MySQL. MySQL có nhiều phiên bản khác nhau, bao gồm MySQL Community Edition (miễn phí), MySQL Standard Edition (phải trả phí) và MySQL Cluster (dành cho các ứng dụng có nhu cầu cao về khả năng mở rộng và độ tin cậy). 15 Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 Chương 2: Phân tích thiết kế hệ thống 2. Giới thiệu Xây dựng một website bán Lego ứng dụng công nghệ Spring mang lại sự thuận tiện và linh hoạt.
Java cung cấp môi trường phát triển mạnh mẽ, trong khi MySQL giúp quản lý dữ liệu hiệu quả. Website này cho phép thực hiện các chức năng cơ bản nhất của một website bán hàng. Qua sự kết hợp giữa Spring Java và MySQL, dự án sẽ tận dụng IDE Intellij để phát triển và quản lý. Việc này đòi hỏi thiết kế cơ sở dữ liệu chặt chẽ và giao diện người dùng thân thiện.
Tích hợp linh hoạt giữa giao diện người dùng và cơ sở dữ liệu giúp đảm bảo hiệu suất và trải nghiệm người dùng tốt. Khảo sát sơ bộ hệ thống 2. Yêu cầu chức năng hệ thống Website bán đồ chơi Logo gồm có các chức năng sau: Đăng nhập, đăng ký Mua hàng Xem sản phẩm Thêm giỏ hàng 2. Yêu cầu phi chức năng - Bố cục chặt chẽ, dễ hiểu, dễ sử dụng - Ngôn từ dễ hiểu - Thời gian tải nhanh 2.
Phân tích hệ thống 2. Mô hình hóa chức năng hệ thống Biểu đồ use case tổng quát 16 Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 Hình 2. Sơ đồ usecase tổng quát - Use case Đăng Nhập cho phép người dùng đănh nhập vào hệ thống. - Use case Đănh Ký cho phép người dùng đăng ký tài khoản.
- Use case Xem Tài Khoản cho phép người dùng xem thông tin tài khoản. - Use case Xem Chi Tiết Sản Phẩm cho phép người dùng xem thông tin chi tiết của sản phẩm. - Use case Thêm Sản Phẩm Vào Giỏ Hàng cho phép người dùng thêm sản phẩm vào bên trong giỏ hàng - Use case Thanh Toán cho phép người dùng thanh toán giỏ hàng. - Use case Xem Danh Mục Sản Phẩm: cho phép người dùng xem các danh mục sản phẩm và các sản phẩm có trong danh mục đó.
17 Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 Biểu đồ thực thể liên kết Hình 2. Biểu đồ thực thể liên kết 2. Mô tả chi tiết use case 2. Mô tả use case “Đăng nhập” Use case cho phép người dùng đăng nhập vào hệ thống để sử dụng các chức năng của hệ thống.
Luồng sự kiện: o Luồng cơ bản: 1) Use case bắt đầu khi người dùng click vào mục “Sign Up” trên thanh header ở màn hình trang chủ. Hệ thống sẽ chuyển người dùng tới giao diện dăng nhập. 2) Người dùng nhập email và mật khẩu đã đăng ký, hệ thống sẽ truy vấn trường email và mật khẩu bên trong bảng User để xác thực đăng nhập. Nếu 18 Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 đăng nhập thành công người dùng sẽ sử dụng được các chức năng theo quyền của tài khoản đã đăng ký.
Use case kết thúc. o Luồng rẽ nhánh: 1) Nếu người dùng nhập sai email hoặc mật khẩu, một thông báo được hiện ra báo cho người quản trị sai mật khẩu hoặc email ko tồn tại. 2) Tại bất kỳ thời điểm nào trong quá trình thực hiện use case nếu không kết nối được với cơ sử dữ liệu thì hệ thống sẽ hiển thị một thông báo lỗi và use case kết thúc. Các yêu cầu đặc biệt: Không có Tiền điều kiện: Người dùng phải đăng ký tài khoản trước đó Hậu điều kiện: Không có Điểm mở rộng: Không có.