Spring MVC 初學者指南:深入了解 Spring 的強大框架

365限制结束投注 2025-10-11 04:49:11 admin 阅读 6091

FacebookLinkedInTweet更新日期: 2025 年 2 月 21 日

本文為 Java 常見框架與伺服器 系列文,第 10 篇:

Web 伺服器與應用伺服器的區別與搭配——打造高效能 Web 架構

什麼是 Servlet?——Java Web 開發的核心技術

Tomcat 入門指南:從零開始了解 Java Web 伺服器

Apache 軟體基金會 (ASF) 完整指南:新手入門必讀

新手入門:什麼是 JBoss?完整指南

新手指南:什麼是 Red Hat?完整介紹與應用解析

新手指南:什麼是 WebLogic?完整介紹與應用解析

新手指南:什麼是 WebSphere?完整介紹與應用解析

Spring 框架新手指南:深入理解 Spring 的核心概念與應用

Spring MVC 初學者指南:深入了解 Spring 的強大框架 👈進度

在現代 Java Web 開發中,Spring MVC 是最受歡迎的框架之一。

它基於 Spring 框架,提供強大的模型-視圖-控制器(Model-View-Controller,簡稱 MVC)架構,能夠有效地組織 Web 應用程式,使開發變得更簡單、更靈活。

本篇文章將詳細介紹 Spring MVC 的概念、架構、核心組件,以及如何建立一個簡單的 Spring MVC 應用程式。

如果你是 Java 開發新手,或者想學習如何使用 Spring MVC 來開發 Web 應用,那麼這篇文章將對你非常有幫助!

什麼是 Spring MVC?

Spring MVC 是 Spring Framework 提供的一個 基於 MVC 設計模式 的 Web 應用開發框架。

它提供了一個靈活且模組化的架構,使得開發者能夠更容易地管理 Web 應用程式的各個部分。

MVC 設計模式

MVC(Model-View-Controller)是一種流行的軟體設計模式,用於分離應用程式的不同部分,以提高可維護性和可測試性:

Model(模型): 負責處理應用程式的業務邏輯和數據。

View(視圖): 負責顯示數據,通常是 HTML 或 JSP 頁面。

Controller(控制器): 負責處理請求,與 Model 交互並返回相應的 View。

Spring MVC 完全遵循 MVC 模式,提供了一個強大的請求處理機制,使開發 Web 應用變得更加簡單。

Spring MVC 的架構

Spring MVC 的架構主要由 前端控制器(DispatcherServlet)、控制器(Controller)、服務層(Service)、數據訪問層(Repository) 和 視圖(View) 等核心組件組成。

這些組件互相協作,負責處理 Web 請求,將用戶的需求轉換為具體的業務邏輯和視圖回應。

當用戶訪問一個 Spring MVC 應用程式時,整個處理流程如下:

處理流程

1️⃣ 用戶發送請求

用戶透過瀏覽器輸入網址,例如 https://www.hukp.cn/login,發送一個請求到 Web 伺服器。

2️⃣ DispatcherServlet(前端控制器)接收請求

所有進入的 Web 請求,無論是 GET、POST 還是其他 HTTP 方法,都會先被 Spring MVC 的 DispatcherServlet 截獲。

它的主要作用是作為整個 Spring MVC 應用的中央調度器,負責協調請求的處理流程。

3️⃣ DispatcherServlet 將請求分派給 Controller

當 DispatcherServlet 接收到請求後,會根據 URL 對應關係(HandlerMapping) 來決定應該把請求轉發給哪個 Controller 來處理。例如:

/login → LoginController

/products → ProductController

如果請求的 URL 沒有對應的 Controller,則會返回 404 錯誤。

4️⃣ Controller(控制器)處理請求

Controller 負責處理具體的業務邏輯。例如:

@Controller

@RequestMapping("/login")

public class LoginController {

@GetMapping

public String showLoginPage() {

return "login"; // 返回 "login" 視圖名稱

}

}

當 Controller 收到 /login 請求時,它可能會:

呼叫 Service 層 來進行數據處理,例如驗證用戶登入。

根據業務邏輯的結果,選擇要回應的視圖。

5️⃣ Service 層與 Repository 層處理業務邏輯與數據存取

如果 Controller 需要查詢數據,例如驗證用戶登入資訊,它會調用 Service 層,而 Service 層又會進一步請求 Repository 層 查詢數據庫。

@Service

public class UserService {

@Autowired

private UserRepository userRepository;

public User findUserByUsername(String username) {

return userRepository.findByUsername(username);

}

}

Repository 層負責直接與數據庫互動,並將結果返回給 Service 層,最終傳遞回 Controller。

6️⃣ Controller 返回 ModelAndView 給 DispatcherServlet

當 Controller 執行完業務邏輯後,它會返回一個 視圖名稱(View) 和 數據模型(Model) 給 DispatcherServlet,例如:

@GetMapping("/welcome")

public ModelAndView welcomePage() {

ModelAndView mav = new ModelAndView("welcome");

mav.addObject("message", "歡迎使用 Spring MVC!");

return mav;

}

這裡 welcome 是視圖名稱,而 message 是要傳遞到視圖的數據。

7️⃣ DispatcherServlet 透過 ViewResolver 找到對應的視圖

當 DispatcherServlet 收到 ModelAndView("welcome") 後,它會通過 ViewResolver(視圖解析器),將 welcome 這個視圖名稱轉換成 對應的 HTML、JSP 或者 Thymeleaf 頁面。

然後再把 message 變數傳遞到視圖。

8️⃣ 最終視圖(View)呈現結果給用戶

視圖引擎(如 JSP、Thymeleaf 或 FreeMarker)會接收 Model 中的數據,並動態生成 HTML,然後返回給用戶的瀏覽器,例如:

預設訊息

這樣,當用戶訪問 /welcome 頁面時,瀏覽器就會顯示:

歡迎使用 Spring MVC!

完整的流程圖

graph TB

%% (A) 使用者端

A["使用者請求: https:\/\/www\.hukp\.cn\/login"]

%% (1) Controller 區域

subgraph "Controller 區域"

B["DispatcherServlet"]

C["HandlerMapping"]

D["LoginController"]

end

%% (2) Model 區域

subgraph "Model 區域"

E["UserService"]

F["UserRepository"]

G["(Database)"]

end

%% (3) View 區域

subgraph "View 區域"

H["ViewResolver"]

I["JSP / FreeMarker"]

end

%% (Z) 使用者瀏覽器 (最終回應)

J["使用者瀏覽器"]

%% --- 流程箭頭 + 編號 ---

A -->|"\(1\) 請求"| B

B -->|"\(2\) 查找對應的 Controller"| C

C -->|"\(3\) 找到對應的 Controller"| D

D -->|"\(4\) 處理請求,調用 Service"| E

E -->|"\(5\) 查詢數據庫"| F

F -->|"\(6\) 從 Database 取得數據"| G

G -->|"\(7\) 回傳查詢結果"| F

F -->|"\(8\) 回傳給 Service"| E

E -->|"\(9\) 回傳結果給 Controller"| D

D -->|"\(10\) 返回 ModelAndView"| B

B -->|"\(11\) 透過 ViewResolver 解析視圖"| H

H -->|"\(12\) 找到對應的 JSP / Thymeleaf"| I

I -->|"\(13\) 生成 HTML 並回應給使用者"| J

如何建立一個 Spring MVC 專案?

接下來,我們將一步步建立一個簡單的 Spring MVC Web 專案。

建立 Spring Boot 專案

最簡單的方式是使用 Spring Boot,它內建 Spring MVC,讓開發更高效。

步驟 1:使用 Spring Initializr 建立專案

訪問 Spring Initializr。

選擇 Spring Boot 版本(如 3.1)。

選擇 Maven 或 Gradle 作為專案管理工具。

添加依賴:

Spring Web

Thymeleaf(可選)

生成並下載專案。

步驟 2:建立 Controller

在專案的 src/main/java/com/example/demo/controller 目錄下建立 HelloController.java:

package com.example.demo.controller;

import org.springframework.stereotype.Controller;

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

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.ResponseBody;

@Controller

@RequestMapping("/hello")

public class HelloController {

@GetMapping

@ResponseBody

public String sayHello() {

return "Hello, Spring MVC!";

}

}

這個 Controller 會處理 /hello 的請求,並返回 Hello, Spring MVC!。

步驟 3:運行應用

在專案根目錄執行:

mvn spring-boot:run

或者使用 Gradle:

./gradlew bootRun

然後在瀏覽器打開 http://localhost:8080/hello,就能看到輸出 Hello, Spring MVC!。

Spring MVC 的進階功能

使用 Model 來傳遞數據

如果我們想在視圖中顯示數據,可以使用 Model:

@GetMapping("/greet")

public String greet(Model model) {

model.addAttribute("message", "Welcome to Spring MVC!");

return "greeting";

}

這樣 greeting.html 視圖就能訪問 message 變數。

使用 Thymeleaf 作為模板引擎

Spring MVC 支持多種視圖技術,如 JSP、Thymeleaf 等。Thymeleaf 是 Spring 官方推薦的模板引擎。

範例 src/main/resources/templates/greeting.html:

Greeting Page

Default Message

這樣當用戶訪問 /greet,就會顯示 Welcome to Spring MVC!。

處理表單提交

Spring MVC 也能輕鬆處理 Web 表單。假設我們有一個簡單的表單:

對應的 Controller:

@PostMapping("/submit")

public String submit(@RequestParam String username, Model model) {

model.addAttribute("user", username);

return "result";

}

這樣用戶提交表單後,result.html 可以顯示用戶名。

結語

Spring MVC 是一個強大且靈活的 Web 框架,它提供了一整套完整的解決方案,使 Web 應用的開發變得更加簡單和高效。

本文介紹了 Spring MVC 的基本概念、架構和實作步驟,希望對初學者有所幫助。

如果你想進一步學習,建議深入研究 Spring Boot、RESTful API、Spring Security 等相關技術,這些都是開發現代 Web 應用不可或缺的技能! 🚀

相关文章

天天炫斗为什么进不去

《剑网3怀旧服》相思子在哪采集

h5是什么意思?全面解析!

苹果5换开机排线教程 iphone5s更换开机排线