Chương 1: CƠ SỞ LÝ THUYẾT 1. Ngôn ngữ Java Java là một một ngôn ngữ lập trình hiện đại, bậc cao, hướng đối tượng, bảo mật và mạnh mẽ. và là một Platform. Platform: Bất cứ môi trường phần cứng hoặc phần mềm nào mà trong đó có một chương trình chạy, thì được hiểu như là một Platform.
Với môi trường runtime riêng cho mình (JRE) và API, Java được gọi là Platform. Ngôn ngữ lập trình Java ban đầu được phát triển bởi Sun Microsystems do James Gosling khởi xướng và phát hành vào năm 1995. Phiên bản mới nhất của Java Standard Edition là Java SE 8. Với sự tiến bộ của Java và sự phổ biến rộng rãi của nó, nhiều cấu hình đã được xây dựng để phù hợp với nhiều loại nền tảng khác nhau.
Spring Framework và các công nghệ sử dụng Spring framework là một Java Platform mã nguồn mở, một giải pháp gọn nhẹ dành cho Java Enterprise. Với Spring Framework các nhà phát triển có thể tạo ra các mã có hiệu suất cao, dễ kiểm thử và có thể sử dụng lại được. Các tính năng core của Spring Framework có thể được sử dụng trong việc phát triển bất kỳ ứng dụng Java nào. Bên cạnh đó, phần mở rộng được sử dụng để xây dựng các ứng dụng web trên nền tảng Java EE.
Mục tiêu của Spring Framework là làm cho việc phát triển ứng dụng J2EE dễ dàng hơn và thúc đẩy việc lập trình tốt hơn bằng mô hình POJO-based. Spring Boot Spring Boot là một dự án phát triển bởi JAV (ngôn ngữ java) trong hệ sinh thái Spring framework. Nó giúp cho các lập trình viên chúng ta đơn giản hóa quá trình lập trình một ứng dụng với Spring, chỉ tập trung vào việc phát triển business cho ứng dụng. Hibernate Hibernate là một thư viện ORM (Object Relational Mapping) mã nguồn mở giúp lập trình viên viết ứng dụng Java có thể map các objects (pojo) với hệ quản trị cơ sở dữ liệu quan hệ, và hỗ trợ thực hiện các khái niệm lập trình hướng đối tượng với cớ dữ liệu quan hệ.
JPA JPA là viết tắt của Java Persistence API, nó là một đặc tả Java cho việc ánh xạ giữa các đối tượng Java với cơ sở dữ liệu quan hệ sử dụng công nghệ phổ biến là ORM (Object Relational Mapping). JPA cung cấp đầy đủ các công cụ cho phép chúng ta có thể thao tác với cơ sở dữ liệu một cách đơn giản và nhanh chóng. JPA có thể dùng để persist một đối tượng Java (POJO – Plain Old Java Object) vào trong cơ sở dữ liệu hoặc lấy dữ liệu từ cơ sở dữ liệu và ánh xạ (mapping) ra các đối tượng Java một cách đơn giản. Kiến trúc hệ thống Kiến trúc Spring Boot dựa trên Spring framework.
Vì vậy, nó chủ yếu sử dụng các tính năng và module của Spring MVC, Spring Core: Hình 1 - 2. Kiến trúc hệ thống 1. Cơ sở dữ liệu MySQL MySQL là hệ quản trị cơ sở dữ liệu tự do nguồn mở phổ biến nhất thế giới và được các nhà phát triển rất ưa chuộng trong quá trình phát triển ứng dụng. Vì MySQL là hệ quản trị cơ sở dữ liệu tốc độ cao, ổn định và dễ sử dụng, có tính khả chuyển, 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 5 ích rất mạnh.
Với tốc độ và tính 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. Ví dụ table trong MySQL MySQL là một trong những ví dụ rất cơ bản về Hệ Quản trị Cơ sở dữ liệu quan hệ sử dụng Ngôn ngữ truy vấn có cấu trúc (SQL). Kiến trúc của MySQL 6 1. Back-end Sử dụng Maven để quản lý các dependencies.
Maven là công cụ quản lý và thiết lập tự động 1 dự án phần mềm. Chủ yếu dùng cho các lập trình viên Java, nhưng nó cũng có thể được dùng để xây dựng và quản lý các dự án dùng Java, Ruby, Scala hay ngôn ngữ khác. - Khởi tạo dự án, Cấu trúc file, folder Hình 1 - 5. Cấu trúc file, folder - Khởi tạo ứng dụng, cấu hình Port và kết nối với Cơ sở dữ liệu 7 Hình 1 - 6.
Cấu hình Hình 1 - 7. Khai báo dependency trong POM - Xây dựng API, nhóm sử dụng cấu trúc dữ liệu RESTful được biết đến rộng rãi trong giới lập trình web nói chung và lập trình ứng dụng nói riêng. - Có thể nói bản thân REST không phải là một loại công nghệ. Nó là phương thức tạo API với nguyên lý tổ chức nhất định.
Những nguyên lý này nhằm hướng dẫn lập trình viên tạo môi trường xử lý API request được toàn diện. Front-end Nhóm sử dụng Bootstrap cho thiết kế giao diện người dùng. Bootstrap là một framework CSS miễn phí sử dụng mã nguồn mở dùng cho mục đích phát triển web front-end cho thiết bị di động. Bên cạnh những mẫu thiết kế kiểu chữ, biểu mẫu, nút hay thanh điều hướng bằng ngôn ngữ HTML, CSS và JavaScript, - Khởi tạo dự án, Cấu trúc file, folder Hình 1 - 8.
Khởi tạo dependency cho Bootstrap trong POM 9 - Bootstrap cũng hỗ trợ đồng thời xử lý các sự kiện Javascript sử dụng thư viện jQuery. jQuery là một thư viện JavaScript được thiết kế đơn giản hóa thao tác HTML DOM, cũng như xử lý sự kiện, hoạt ảnh CSS, và Ajax. Khởi tạo dependency cho jQuery trong POM Hình 1 - 10. Cấu trúc file, folder 1.
Thymeleaf Thymeleaf là một Java Template Engine có thể làm việc với cả hai môi trường Web và môi trường không phải Web. Nó phù hợp hơn khi được sử dụng để phục vụ XHTML/HTML5 trên tầng View (View Layer) của ứng dụng Web dựa trên kiến trúc MVC. Nó có thể xử lý bất kỳ một file XML nào, thậm chí trên các môi trường offline (Không trực tuyến). Nó hỗ trợ đầy đủ để tương tác với Spring Framework.
- Khởi tạo dự án, Cấu trúc file, folder 10 Hình 1 - 11. Khởi tạo dependency cho Thymeleaf trong POM - Mục tiêu chính của Thymeleaf là mang lại các template tự nhiên, đồng nhất, đơn giản (nature templates) và dễ dàng bảo trì. Để đạt được điều này, Thymeleaf xây dựng trên khái niệm về các mẫu tự nhiên (natural templates) để chèn logic của nó vào các file template mà không ảnh hưởng đến template. Điều này giúp thu hẹp khoảng cách giữa các nhóm thiết kế và phát triển.
Workflow của thymeleaf khi kết hợp với Spring Boot 11 Chương 2: KHẢO SÁT HIỆN TRẠNG 2. Hình ảnh Tiki Đánh giá: Ưu điểm Nhược điểm ✔ Thiết kế giao diện đẹp, đồng nhất × Bố cục không rõ ràng, giao diện rối về màu sắc và thiết kế mắt ✔ Dễ dàng tìm kiếm sản phẩm, lịch × Quá nhiều thành phần trong một sử tìm kiếm rất hiệu quả trang ✔ Tốc độ load trang nhanh × Quá nhiều danh mục sản phẩm và ✔ Bộ lọc đa dạng quảng cáo ✔ Thông tin sản phẩm đầy đủ, nhiều × Không có Menu chính × Không có Responsive cho Web hình ảnh và video ✔ Cho phép đánh giá, nhận xét ✔ Lịch sử đơn hàng, quản lý tài khoản người dùng tốt ✔ Có chức năng Chat ✔ Nhiều hình thức thanh toán 12 2. Hình ảnh Shopee Đánh giá: Ưu điểm Nhược điểm ✔ Giao diện thiết kế dễ nhìn × Quá nhiều quảng cáo ✔ Nhiều hình thức thanh toán × Chưa có hỗ trợ Chat ✔ Có phần đánh giá, nhận xét sản × Load trang, hình ảnh, video không phẩm, phân loại sản phẩm dựa trên ổn định số sao giúp người mua, dễ tham × Nhiều chức năng chỉ được áp dụng khảo với Mobile App (có thể là chính ✔ Có phần mô tả chi tiết cho từng sản sách khuyến khích người dùng tải App của Shopee) phẩm ✔ Hỗ trợ tìm kiếm theo nhiều tùy chọn (giá cả, số sao, phân loại…) ✔ Hệ thống Category, Style đa dạng, rất hiệu quả 13 2. Hình ảnh Lazada Đánh giá: Ưu điểm Nhược điểm ✔ Giao diện thiết kế dễ nhìn × Quá nhiều quảng cáo, Banner ✔ Nhiều hình thức thanh toán quảng cáo to quá mức so với sản ✔ Đánh giá, nhận xét sản phẩm, phân phẩm loại sản phẩm dựa trên số sao giúp × Mobile App cho người mua và người mua, dễ tham khảo người bán là 2 ứng dụng tách biệt ✔ Có phần mô tả chi tiết cho từng sản phẩm ✔ Có hỗ trợ Chat ✔ Hỗ trợ tìm kiếm theo nhiều chỉ tiêu (giá cả, số sao, phân loại…) 14 2.
Hình ảnh Etsy Đánh giá: Ưu điểm Nhược điểm ✔ Thiết kế giao diện mới lạ, trẻ trung × Bố cục chưa rõ ràng, quá nhiều ✔ Có Responsive cho Web thành phần trong một trang ✔ Dễ dàng tìm kiếm sản phẩm × Chỉ cho phép thanh toán Online ✔ Tốc độ load trang nhanh × Không có lịch sử tìm kiếm ✔ Danh mục sản phẩm phân cấp rất × Mobile App cho người mua và người bán là 2 ứng dụng tách biệt chi tiết ✔ Bộ lọc đa dạng ✔ Thông tin sản phẩm đầy đủ, nhiều hình ảnh và video ✔ Cho phép đánh giá, nhận xét sản phẩm ✔ Có chức năng Chat 15 Chương 3: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 3. Phân tích chức năng 3. Phía Khách (Guest) STT Chức năng Mô tả 1 Đăng ký Đăng ký tạo tài khoản người dùng 2 Xem/Tìm kiếm sản phẩm Tìm kiếm, xem danh sách, chi tiết sản phẩm Bảng 3 - 1. Chức năng phía Khách 3.
Phía Người mua (Customer) STT Chức năng Mô tả 1 Đăng nhập Đăng nhập vào hệ thống 2 Đăng xuất Đăng xuất khỏi hệ thống 3 Tạo mật khẩu mới Tạo mật khẩu mới chỉ với email, khi quên mật khẩu 4 Quản lý tài khoản cá nhân Thay đổi mật khẩu 5 Quản lý thông tin cá nhân Xem, sửa thông tin cá nhân, ảnh đại diện, ảnh bìa 6 Quản lý địa chỉ cá nhân Xem, sửa, xóa địa chỉ cá nhân 7 Quản lý đơn hàng Xem lịch sử mua hàng, theo dõi trạng thái, hủy đơn hàng 8 Quản lý giỏ hàng Xem, thêm, cập nhật sản phẩm trong giỏ hàng 9 Đặt hàng Đặt hàng, thanh toán 10 Phản hồi, đánh giá Phản hồi, đánh giá sản phẩm 11 Theo dõi trạng thái đơn Theo dõi trạng thái của đơn hàng đã đặt hàng Bảng 3 - 2. Chức năng phía Người mua 3.