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

Spring MVC 入門指南:架構原理、請求流程與實戰範例

     編輯:Java 綜合教學

什麼是 Spring MVC?

Spring MVC 是 Spring Framework 的後續產品,已融合於 Spring Web Flow 中。它提供了構建 Web 應用程式的全功能 MVC 模組,與 Struts2 一樣屬於優秀的 MVC 框架。自 Spring 2.5 引入註解式 Controller 及 Spring 3 後的持續完善,使得採用 Spring MVC 開發結構清晰明了,開發效率大幅提升。

簡單來說,Spring 框架提供了可插拔的 MVC 架構,讓開發者在使用 Spring 進行 Web 開發時,既可選擇 Spring 自家的 Spring MVC,也能整合 Struts1、Struts2 等其他 MVC 框架。

Spring MVC 請求處理流程

Spring MVC 的核心是 DispatcherServlet(前端控制器),它掌管用戶請求與系統回應。整體流程如下:

  1. 用戶發送請求,DispatcherServlet 接收
  2. DispatcherServlet 根據 HandlerMapping 找到對應的 Controller
  3. Controller 處理業務邏輯,返回 ModelAndView
  4. DispatcherServlet 透過 ViewResolver 解析視圖
  5. 視圖渲染數據,最終響應給用戶

Spring MVC 流程圖一 Spring MVC 流程圖二

核心組件說明

  • DispatcherServlet:中央調度器,不處理具體業務,只負責分派
  • Controller:處理具體業務邏輯
  • View:視圖層,負責數據展示(JSP、XML、JSON 等)
  • ViewResolver:視圖解析器,將邏輯視圖名解析為實際視圖

Spring MVC 完整實戰範例

1. 引入必要 JAR 包

在原有 Spring JAR 基礎上,需額外添加兩個核心包:

  • spring-web.jar:支援 UI 模板、郵件服務、緩存等
  • spring-webmvc.jar:Spring MVC 核心實現包

JAR 包列表 spring-web spring-webmvc

2. 配置 web.xml 中的前端控制器

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="https://java.sun.com/xml/ns/javaee"
    xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="https://java.sun.com/xml/ns/javaee https://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <display-name></display-name>
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:applicationContext.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
</web-app>

3. 定義處理器

package cn.zhang.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

public class MyController implements Controller {
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
        ModelAndView mv = new ModelAndView();
        mv.addObject("m", "呵呵");
        mv.setViewName("WEB-INF/jsp/one.jsp");
        return mv;
    }
}

4. 配置視圖解析器

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="https://www.springframework.org/schema/beans"
    xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="https://www.springframework.org/schema/context"
    xsi:schemaLocation="https://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
        https://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
    <bean id="/hello.do" class="cn.zhang.controller.MyController"></bean>
</beans>

5. 編寫 JSP 視圖

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<% String path = request.getContextPath();
   String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <base href="<%=basePath%>">
    <title>我的第一個 SpringMVC</title>
</head>
<body>
    Hello!friends!
</body>
</html>

6. 瀏覽器訪問驗證

在瀏覽器輸入:https://localhost:8080/SpringMvc_one/hello.do

執行結果

總結

Spring MVC 採用經典的 MVC 設計模式,通過 DispatcherServlet 統一分派請求,配合註解開發,大幅簡化了 Web 應用構建。掌握其核心流程與配置方式,是 Java Web 開發者的必備技能。

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