使用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
即可看到使用者列表,進行使用者的檢視、新增和刪除操作。
本文著作權歸聚娃科技微賺淘客系統開發者團隊,轉載請註明出處!