使用Java和Spring MVC構建Web應用

省赚客开发者团队發表於2024-07-20

使用Java和Spring MVC構建Web應用

大家好,我是微賺淘客系統3.0的小編,是個冬天不穿秋褲,天冷也要風度的程式猿!

在現代企業中,Web 應用程式是最常見的應用型別之一。Spring MVC 是一個強大且流行的 Java Web 框架,用於構建功能強大且易於維護的 Web 應用程式。本文將透過實際示例展示如何使用 Java 和 Spring MVC 構建一個簡單的 Web 應用。

1. 專案結構

在開始之前,我們需要了解 Spring MVC 專案的基本結構。一個典型的 Spring MVC 專案包含以下幾個主要部分:

  • Controller: 處理使用者請求並返回檢視。
  • Service: 業務邏輯層,處理具體的業務操作。
  • Repository: 資料訪問層,與資料庫進行互動。
  • Model: 資料模型,表示應用程式的核心資料。
  • View: 使用者介面,顯示資料給使用者。

2. 設定專案

首先,我們使用 Maven 建立一個 Spring Boot 專案,這樣可以簡化配置。以下是 pom.xml 檔案的關鍵部分:

<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/POM/4.0.0">
    <modelVersion>4.0.0</modelVersion>
    <groupId>cn.juwatech</groupId>
    <artifactId>spring-mvc-demo</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <properties>
        <java.version>11</java.version>
        <spring.boot.version>2.5.4</spring.boot.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>runtime</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

3. 建立模型

我們建立一個簡單的 User 模型類,並使用 JPA 註解將其對映到資料庫表:

package cn.juwatech.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private String email;

    // Getters and Setters
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

4. 建立資料訪問層

使用 Spring Data JPA,我們可以建立一個簡單的 UserRepository 介面:

package cn.juwatech.repository;

import cn.juwatech.model.User;
import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository<User, Long> {
}

5. 建立服務層

服務層包含業務邏輯。在這個示例中,我們建立一個 UserService 類來處理使用者資料的業務邏輯:

package cn.juwatech.service;

import cn.juwatech.model.User;
import cn.juwatech.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Optional;

@Service
public class UserService {

    @Autowired
    private UserRepository userRepository;

    public List<User> findAllUsers() {
        return userRepository.findAll();
    }

    public Optional<User> findUserById(Long id) {
        return userRepository.findById(id);
    }

    public User saveUser(User user) {
        return userRepository.save(user);
    }

    public void deleteUser(Long id) {
        userRepository.deleteById(id);
    }
}

6. 建立控制器

控制器處理使用者請求,並將資料傳遞給檢視。以下是一個 UserController 示例:

package cn.juwatech.controller;

import cn.juwatech.model.User;
import cn.juwatech.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

@Controller
@RequestMapping("/users")
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping
    public String listUsers(Model model) {
        model.addAttribute("users", userService.findAllUsers());
        return "user/list";
    }

    @GetMapping("/{id}")
    public String getUser(@PathVariable("id") Long id, Model model) {
        model.addAttribute("user", userService.findUserById(id).orElse(null));
        return "user/detail";
    }

    @GetMapping("/new")
    public String newUserForm(Model model) {
        model.addAttribute("user", new User());
        return "user/form";
    }

    @PostMapping
    public String saveUser(@ModelAttribute User user) {
        userService.saveUser(user);
        return "redirect:/users";
    }

    @PostMapping("/{id}/delete")
    public String deleteUser(@PathVariable("id") Long id) {
        userService.deleteUser(id);
        return "redirect:/users";
    }
}

7. 建立檢視

檢視是與使用者互動的部分。在本例中,我們使用 Thymeleaf 作為模板引擎。以下是一個簡單的 Thymeleaf 檢視示例:

src/main/resources/templates/user/list.html:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>User List</title>
</head>
<body>
    <h1>User List</h1>
    <table>
        <tr>
            <th>ID</th>
            <th>Name</th>
            <th>Email</th>
            <th>Actions</th>
        </tr>
        <tr th:each="user : ${users}">
            <td th:text="${user.id}"></td>
            <td th:text="${user.name}"></td>
            <td th:text="${user.email}"></td>
            <td>
                <a th:href="@{/users/{id}(id=${user.id})}">View</a>
                <form th:action="@{/users/{id}/delete(id=${user.id})}" method="post">
                    <button type="submit">Delete</button>
                </form>
            </td>
        </tr>
    </table>
    <a href="/users/new">Add New User</a>
</body>
</html>

8. 配置 Spring Boot 應用程式

最後,建立一個主應用程式類來啟動 Spring Boot 應用程式:

package cn.juwatech;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringMvcDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringMvcDemoApplication.class, args);
    }
}

9. 啟動應用

使用 Maven 構建並執行應用程式:

mvn spring-boot:run

訪問 http://localhost:8080/users 即可看到使用者列表,進行使用者的檢視、新增和刪除操作。

本文著作權歸聚娃科技微賺淘客系統開發者團隊,轉載請註明出處!

相關文章