首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Spring MVC 學習筆記(一):MVC 架構概覽與環境搭建實戰

     編輯:Java 綜合教學

Spring MVC 學習筆記(一):MVC 架構概覽與環境搭建實戰

一、MVC 架構核心概念

MVC 是 Model(模型)、View(視圖)、Controller(控制器)三單詞首字母縮寫,屬於一種軟體架構模式而非單純設計模式。其核心目的是將業務邏輯、數據模型、界面顯示三者分離,降低視圖與業務邏輯之間的雙向耦合,提升代碼可維護性與擴展性。

常見伺服器端 MVC 框架包括:Struts、Spring MVC、ASP.NET MVC、Zend Framework、JSF;前端 MVC/MVVM 框架則有 AngularJS、React、Vue、Backbone 等。MVC 衍生出 MVP(Model-View-Presenter)、MVVM(Model-View-ViewModel)等變體,適應不同場景需求。

二、Spring MVC 框架特性解析

Spring MVC 隸屬 Spring Framework 體系,是基於 Java 實現的輕量級 Web 框架,核心優勢在於:

  • 輕量高效:核心容器啟動快、佔用資源少
  • 無縫整合 Spring 生態:與 IOC、AOP、事務管理等完美協作
  • 功能豐富:內建 RESTful、數據驗證、類型轉換、綁定機制、國際化、主題解析等
  • 靈活鬆耦合:基於介面編程,支援多種控制器實現方式

核心架構組件

Spring Web MVC 圍繞 DispatcherServlet 這個前端控制器設計,請求流程如下:

  1. 請求到達 DispatcherServlet
  2. 透過 HandlerMapping 尋找對應處理器
  3. 執行 Controller 處理業務邏輯,構建 Model
  4. ViewResolver 解析視圖名稱
  5. 視圖渲染模型數據,返回響應

框架提供清晰角色分工:控制器、驗證器、命令對象、表單對象、模型對象、處理器映射、視圖解析器等,每個角色可由專門物件實現,支援強大的配置方式、適配性強、業務代碼可重用、綁定驗證可定制、HandlerMapping 與 ViewResolution 策略靈活、Model 轉換基於 Map 鍵值對、本地化主題解析可定制、JSP 標籤庫豐富等特性。

三、實戰:構建第一個 Spring MVC 專案——Hello World

3.1 使用 Maven 建立 Web 專案

在 Eclipse 中建立 Maven 專案,勾選 "Create a simple project",不使用原型。專案結構調整重點:

  • 將 WebContent 內容遷移至 src/main/webapp
  • 刪除 WebContent 目錄
  • 修改部署配置,設定 webapp 為專案根目錄
  • 若不在 pom.xml 添加 Server Runtime 依賴,需手動添加伺服器庫

3.2 添加核心依賴

<properties>
    <spring.version>4.3.0.RELEASE</spring.version>
</properties>

<dependencies>
    <!-- Spring 核心容器 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
    </dependency>
    
    <!-- Spring MVC -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
    </dependency>
    
    <!-- JSTL 標籤庫 -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>
</dependencies>

3.3 配置 web.xml 註冊 DispatcherServlet

<servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:springmvc-servlet.xml</param-value>
    </init-param>
</servlet>

<servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

關鍵點:load-on-startup 設為 1 確保啟動時初始化;url-pattern 設為 / 攔截所有請求(不含 .jsp 等靜態資源)。

3.4 編寫 Spring MVC 配置文件

<beans xmlns="https://www.springframework.org/schema/beans"
       xmlns:context="https://www.springframework.org/schema/context"
       xmlns:mvc="https://www.springframework.org/schema/mvc"
       xsi:schemaLocation="...">

    <!-- 啟用註解掃描,基礎包路徑 -->
    <context:component-scan base-package="com.zhangguo.springmvc01" />

    <!-- 靜態資源由預設 Servlet 處理 -->
    <mvc:default-servlet-handler />

    <!-- 啟用 MVC 註解驅動 -->
    <mvc:annotation-driven />

    <!-- 視圖解析器:前綴 + 後綴 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/view/" />
        <property name="suffix" value=".jsp" />
    </bean>
</beans>

視圖置於 /WEB-INF/view/ 可防止用戶直接訪問 JSP,提升安全性。

3.5 建立控制器

@Controller
@RequestMapping("/Hello")
public class HelloWorld {
    
    @RequestMapping("/Sayhi")
    public String sayHi(Model model) {
        model.addAttribute("message", "Hello Spring MVC!");
        return "sayhi";  // 對應 /WEB-INF/view/sayhi.jsp
    }
}

@Controller 標識為 Spring Bean,@RequestMapping 定義 URL 映射,方法參數 Model 攜帶數據到視圖,返回值為視圖邏輯名稱。

3.6 建立視圖頁面

<%@ page contentType="text/html;charset=UTF-8" %>
<%@ taglib prefix="c" uri="https://java.sun.com/jsp/jstl/core" %>
<html>
<head><title>Hello Spring MVC!</title></head>
<body>
    <h2>${message}</h2>
</body></html>

3.7 啟動測試

啟動 Tomcat,訪問 https://localhost:8080/專案名/Hello/Sayhi,頁面顯示 "Hello Spring MVC!" 即代表環境搭建成功。

3.8 完整示例下載

點擊下載完整示例代碼

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved