Java Spring Boot Bài 3: Tạo Dự Án Ứng Dụng Web Bán Hàng Với Spring Boot + Thymeleaf + Oracle DB

Giới thiệu khóa học: Xây dựng Web Bán Hàng Online với Java Spring Boot, Oracle DB và Thymeleaf

Sau khi đã cài đặt xong môi trường phát triển, trong bài học này bạn sẽ:

  • Nắm được cách khởi tạo một project Spring Boot chuẩn
  • Cấu hình kết nối Oracle Database
  • Tạo cấu trúc dự án ứng dụng web bán hàng
  • Tích hợp Thymeleaf cho giao diện web

🧰 1. Tạo project Spring Boot mới trong Eclipse

Bước 1: Mở Eclipse → File > New > Spring Starter Project

  • Project Name: banhang-online
  • Type: Maven
  • Packaging: Jar
  • Java Version: 17 hoặc phù hợp với JDK bạn đã cài

Group: com.lungcode.springshop

Artifact: springshop

Name: springshop

Description: Ứng dụng bán hàng online với Spring Boot

Package: com.lungcode.springshop

📌 Ảnh minh họa gợi ý: Chụp màn hình bước cấu hình project Spring Starter.

Bước 2: Chọn các dependency:

  • Spring Web:
    • Cung cấp các công cụ để tạo Controller, xử lý request/response
    • Tích hợp sẵn Tomcat làm web server nội bộ
    • Dễ dàng tạo các API hoặc giao diện web HTML với Thymeleaf
    • 📦 Bao gồm:
      • Spring MVC
      • Tomcat embedded
      • Jackson (để convert JSON)
  • Thymeleaf:
    • Template engine để hiển thị HTML động
    • Tích hợp chặt với Spring MVC
    • Cho phép truyền dữ liệu từ Controller ra view
    • Hỗ trợ các tính năng như điều kiện (th:if), vòng lặp (th:each)
  • Spring Data JPA:
    • Giúp làm việc với DB bằng interface (JpaRepository)
    • Hạn chế viết SQL thủ công
    • Tự động ánh xạ entity với bảng
    • Hỗ trợ custom query theo tên hàm
  • Oracle Driver (Không có sẵn trong Maven Cntrer, phải tải file hoặc lên mạng ìm dependency về cấu hình)
    • Oracle Driver chính là cầu nối giữa ứng dụng Java Spring Boot và cơ sở dữ liệu Oracle.
    • Oracle cung cấp sẵn ojdbc8.jar hoặc ojdbc11.jar dùng để:
      • Gửi câu lệnh SQL từ Java tới Oracle DB.
      • Nhận kết quả truy vấn và trả về Java để xử lý.
  • Spring Boot DevTools:
  • Tự động reload khi sửa code
  • Hữu ích trong quá trình phát triển
  • Không nên dùng trong môi trường production
  • Validation:
  • Hỗ trợ kiểm tra dữ liệu người dùng nhập
  • Sử dụng annotation:
    • @NotNull, @NotBlank
    • @Email, @Size, @Min, @Max

Nhấn Finish để hoàn tất.

🗂 2. Cấu trúc thư mục mặc định của Spring Boot

Khi tạo xong, bạn sẽ thấy cấu trúc thư mục như sau:

src/
 └── main/
     ├── java/
     │   └── com.lungcode.springshop/
     │       ├── config/
     │       ├── controller/
     │       ├── entity/
     │       ├── repository/
     │       ├── service/
     │       └── Application.java
     └── resources/
         ├── static/
         ├── templates/
         └── application.properties

💡 Giải thích chi tiết

🔸 src/main/java/

Nơi chứa toàn bộ code Java chính của ứng dụng.

📌 com.lungcode.springshop

Package gốc, nên đặt theo tên miền ngược của bạn + tên project.

  • config/:
    Chứa các class cấu hình Spring như: Cấu hình bảo mật, cấu hình template, cấu hình CORS, Bean, DataSource…
  • controller/:
    Nơi chứa các class điều khiển luồng dữ liệu (@Controller, @RestController).
    Nhiệm vụ: Tiếp nhận request từ người dùng, gọi Service xử lý và trả về dữ liệu hoặc giao diện.
  • entity/:
    Chứa các class đại diện cho bảng trong cơ sở dữ liệu (còn gọi là Model hoặc POJO).
    Dùng @Entity để ánh xạ bảng trong Oracle DB.
  • repository/:
    Chứa interface dùng để truy vấn dữ liệu từ DB.
    Thường extends JpaRepository hoặc CrudRepository.
  • service/:
    Nơi xử lý nghiệp vụ, logic chính.
    Thường có annotation @Service và đứng giữa Controller và Repository.
  • Application.java:
    File khởi động ứng dụng, có @SpringBootApplication và chứa hàm main().
    Khi chạy sẽ bật toàn bộ Spring Boot Framework.

🔸 src/main/resources/

Nơi chứa tài nguyên cấu hình và giao diện web.

  • static/:
    Chứa file tĩnh như:
    • ảnh (.jpg, .png)
    • CSS, JavaScript.
      Khi chạy, web sẽ truy cập qua URL trực tiếp (/static/css/style.css/css/style.css).
  • templates/:
    Chứa các file giao diện HTML sử dụng Thymeleaf.
    Spring sẽ tìm file HTML trong đây để trả về cho client.
  • application.properties:
    File cấu hình chính của Spring Boot:
    Kết nối Database, cấu hình port, Thymeleaf, logging, email server, v.v.

Kết luận:

Mỗi thư mục có một nhiệm vụ rõ ràng, tuân theo nguyên tắc:
Controller -> Service -> Repository -> Database
và tách biệt code giao diện, code logic, cấu hình ra riêng biệt.

🔧 3. Kiểm tra file pom.xml

File pom.xml sẽ chứa các dependency bạn đã chọn. Kiểm tra nội dung có dạng:

<project xmlns="http://maven.apache.org/POM/4.0.0"   
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0   
         http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <groupId>com.lungcode</groupId>
    <artifactId>springshop</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>SpringShop</name>
    <description>Dự án web bán hàng sử dụng Spring Boot, Oracle DB và Thymeleaf</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.2.5</version> <!-- Hoặc version phù hợp với Java bạn dùng -->
        <relativePath/>
    </parent>

    <properties>
        <java.version>17</java.version>
    </properties>

    <dependencies>
        <!-- Spring Web -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- Spring Data JPA -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

        <!-- Oracle JDBC Driver -->
        <dependency>
            <groupId>com.oracle.database.jdbc</groupId>
            <artifactId>ojdbc8</artifactId>
            <version>19.3.0.0</version>
        </dependency>

        <!-- Thymeleaf Template Engine -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

        <!-- DevTools (Reload nóng) -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
        </dependency>

        <!-- Testing -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <!-- Plugin để biên dịch Java -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

📌 Nếu thiếu, bạn có thể thêm thủ công các dependency cần thiết.


3️⃣4. Cấu hình kết nối Oracle DB

Tại file application.properties:

spring.datasource.url=jdbc:oracle:thin:@localhost:1521:XE
spring.datasource.username=your_username
spring.datasource.password=your_password
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.database-platform=org.hibernate.dialect.Oracle12cDialect

👉 Lưu ý: thay your_usernameyour_password bằng tài khoản Oracle thực tế.

🚀 5. Viết Controller đầu tiên để kiểm tra ứng dụng

Tạo một class mới tên là HomeController.java trong package controller.

package com.yourcompany.banhang.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HomeController {
    @GetMapping(&amp;quot;/&amp;quot;)
    public String home() {
        return &amp;quot;index&amp;quot;; // sẽ trả về file index.html trong thư mục templates
    }
}

🧾 6. Tạo file index.html để hiển thị giao diện

Tạo file index.html trong thư mục src/main/resources/templates.

&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html xmlns:th=&amp;quot;http://www.thymeleaf.org&amp;quot;&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;gt;
    &amp;lt;title&amp;gt;Trang chủ&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;h1&amp;gt;Chào mừng đến với ứng dụng bán hàng online!&amp;lt;/h1&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;

⚙ 7. Chạy thử ứng dụng

Nhấn chuột phải vào file BanhangOnlineApplication.javaRun As > Spring Boot App
(Hoặc có thể click chuôt phải vào thư mưc ứng dụng -> Run As > Spring Boot App)
Mở trình duyệt và truy cập:

http://localhost:8080/

Bạn sẽ thấy dòng chữ “Chào mừng đến với ứng dụng bán hàng online!”

📌 Kết luận

Bạn đã hoàn thành bài học 3 với các nội dung:

  • Tạo project Spring Boot bằng Eclipse
  • Thêm dependency phù hợp
  • Cấu hình kết nối Oracle DB
  • Tạo controller và view cơ bản
  • Chạy ứng dụng đầu tiên

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
Giới thiệu khóa học: Xây dựng Web Bán Hàng Online với Java Spring Boot, Oracle DB và Thymeleaf

Java Spring Boot bài 2: Cài đặt môi trường lập trình với Eclipse

Next Post
Giới thiệu khóa học: Xây dựng Web Bán Hàng Online với Java Spring Boot, Oracle DB và Thymeleaf

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

Related Posts