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 的核心是 DispatcherServlet(前端控制器),它掌管用戶請求與系統回應。整體流程如下:
DispatcherServlet 接收DispatcherServlet 根據 HandlerMapping 找到對應的 ControllerModelAndViewDispatcherServlet 透過 ViewResolver 解析視圖

在原有 Spring JAR 基礎上,需額外添加兩個核心包:
spring-web.jar:支援 UI 模板、郵件服務、緩存等spring-webmvc.jar:Spring MVC 核心實現包

<?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>
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;
}
}
<?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>
<%@ 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>
在瀏覽器輸入:https://localhost:8080/SpringMvc_one/hello.do

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