Java Spring Boot bài 5: Cấu trúc dự án bán hàng và tổ chức giao diện với Thymeleaf Layout

Java Spring Boot Bài 1: Giới Thiệu Về Spring Boot

🎯 Mục tiêu bài học:

  • Hiểu rõ cách tổ chức các package trong dự án Spring Boot chuẩn MVC.
  • Phân biệt giữa Entity, Model (DTO) để truyền dữ liệu.
  • Tổ chức giao diện web bằng Thymeleaf Layout giúp tái sử dụng và dễ bảo trì.

1. Cấu trúc package trong dự án

src/
└── main/
    └── java/
        └── com.lungcode/
            ├── config/
            ├── controller/
            ├── entity/
            ├── model/
            ├── repository/
            └── service/

🗂️ Giải thích các package:

  • com.lungcode.config
    Chứa các lớp cấu hình như WebConfig, SecurityConfig, cấu hình upload file, hay cấu hình Thymeleaf Layout.
  • com.lungcode.controller
    Chứa các @Controller điều hướng luồng xử lý giữa người dùng và dữ liệu. Ví dụ: HomeController, ProductController,…
  • com.lungcode.entity
    Chứa các @Entity ánh xạ với bảng trong cơ sở dữ liệu (ví dụ: Product, User, Order…).
  • com.lungcode.model
    Chứa các DTO (Data Transfer Object) để hiển thị dữ liệu ra view, tách biệt với Entity.
    👉 Gợi ý: Sử dụng Model giúp tránh lộ dữ liệu nhạy cảm từ Entity (VD: mật khẩu).
  • com.lungcode.repository
    Chứa các interface extends JpaRepository, phục vụ thao tác với CSDL.
  • com.lungcode.service
    Chứa logic xử lý nghiệp vụ.
    Có thể chia nhỏ:
  • ProductService, UserService
  • ProductServiceImpl nếu áp dụng Interface + Implementation pattern.

2. Cài đặt và cấu hình Thymeleaf Layout

📦 Bước 1: Thêm thư viện hỗ trợ layout vào pom.xml

<dependency>
    <groupId>nz.net.ultraq.thymeleaf</groupId>
    <artifactId>thymeleaf-layout-dialect</artifactId>
</dependency>

🗂️ Bước 2: Tạo giao diện layout

📁 File: src/main/resources/templates/layout.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org"
      xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
<head>
    <title>Spring Boot Shop</title>
</head>
<body>

    <header>
        <h2>🛒 LungCode Shop</h2>
    </header>

    <main layout:fragment="content">
        <!-- Nội dung trang sẽ được chèn vào đây -->
    </main>

    <footer>
        <p>© 2025 LungCode</p>
    </footer>

</body>
</html>

📄 Bước 3: Sử dụng layout trong trang con

📁 File: home.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org"
      xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
      layout:decorate="~{layout}">
<body>

<main layout:fragment="content">
<h3>Chào mừng đến với cửa hàng Spring Boot</h3>
</main>

</body>
</html>

✅ Kết quả:

  • Bạn chỉ cần chỉnh sửa một lần trong layout.html (header, footer, menu…)
  • Các trang con kế thừa giao diện gốc và chỉ thay đổi phần nội dung riêng biệt (fragment tên là content)

🔧 Gợi ý bổ sung:

  • Có thể tạo thêm layout cho trang admin, ví dụ admin-layout.html để phân biệt giao diện người dùng và quản trị.
  • Nên tạo các fragment riêng cho header, navbar, footer… để sử dụng với cả layout hoặc page đơn.

🧠 Tổng kết

Thành phầnMục đích chính
configCấu hình hệ thống
controllerĐiều hướng request / response
entityĐại diện bảng CSDL
model (DTO)Dữ liệu hiển thị lên view, tránh lộ thông tin
repositoryTruy vấn dữ liệu
serviceChứa logic xử lý chính
Thymeleaf LayoutTái sử dụng layout, chia nhỏ HTML dễ bảo trì

Total
0
Shares
Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Previous Post
Java Spring Boot Bài 1: Giới Thiệu Về Spring Boot

Java Spring Boot bài 4: Tổng quan Thymeleaf – template engine cho Spring Boot

Next Post
Java Spring Boot Bài 1: Giới Thiệu Về Spring Boot

Java Spring Boot Bài 6: CRUD cho danh mục (Category) – Spring Boot + Thymeleaf + JPA + Tìm kiếm + Sắp xếp

Related Posts