目录
[一、Spring MVC工作原理](#一、Spring MVC工作原理)
[二、Spring MVC框架依赖](#二、Spring MVC框架依赖)
[三、Spring MVC项目配置](#三、Spring MVC项目配置)
[四、Spring MVC框架配置](#四、Spring MVC框架配置)
[3、视图解析器配置( spring - mvc.xml )](#3、视图解析器配置( spring - mvc.xml ))
[五、Spring MVC示例](#五、Spring MVC示例)
[六、Spring MVC控制器](#六、Spring MVC控制器)
一、Spring MVC工作原理

如图所示,所有传入的请求都被作为前台控制器的 DispatcherServlet 拦截。
DispatcherServlet 从 XML 文件中获得一个处理程序映射的条目,并将请求转发给控制器。
控制器返回一个 ModelAndView 的对象。
DispatcherServlet 检查 XML 文件中的视图解析器条目并调用指定的视图组件。
二、Spring MVC框架依赖
pom.xml
javascript
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>版本号</version>
</dependency>
三、Spring MVC项目配置
web.xml
javascript
<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:config/springmvc</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
四、Spring MVC框架配置
1、注解驱动配置
javascript
<mvc:annotation-driven/>
2、组件扫描包配置
javascript
<context:component-scan base-package="com.example.controllers"/>
标签扫描包含控制器等组件的包,让 Spring 能自动发现和注册这些组件。
3、视图解析器配置(spring - mvc.xml )
javascript
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
这表示逻辑视图名对应的 JSP 文件在/WEB-INF/views/
目录下,且以.jsp
为后缀。
4、静态资源映射配置
javascript
<mvc:resources location="/resources/" mapping="/resources/**"/>
表示将/resources/
目录下的静态资源映射到/resources/**
路径供访问。
五、Spring MVC示例
文件结构
bash
spring-mvc-simple-example
├── src
│ └── main
│ ├── java
│ │ └── com
│ │ └── example
│ │ └── controller
│ │ └── HelloController.java
│ ├── resources
│ │ └── spring-mvc-config.xml
│ └── webapp
│ └── WEB-INF
│ ├── web.xml
│ └── views
│ └── hello.jsp
└── pom.xml
代码实现
1、
pom.xml
javascript<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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>spring-mvc-simple-example</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <dependencies> <!-- Spring Web MVC --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3.28</version> </dependency> <!-- Servlet API --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <port>8080</port> <path>/</path> </configuration> </plugin> </plugins> </build> </project>
2、
web.xml
javascript<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring-mvc-config.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
3、
spring-mvc-config.xml
javascript<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!-- 开启组件扫描 --> <context:component-scan base-package="com.example.controller"/> <!-- 开启注解驱动 --> <mvc:annotation-driven/> <!-- 视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"/> <property name="suffix" value=".jsp"/> </bean> </beans>
4、
HelloController.java
javapackage com.example.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class HelloController { @RequestMapping("/hello") @ResponseBody public String hello() { return "Hello, Spring MVC!"; } }
5、
hello.jsp
javascript<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <title>Hello Spring MVC</title> </head> <body> <h1>Hello, Spring MVC!</h1> </body> </html>
六、Spring MVC控制器
1、控制器定义
在 Spring MVC 中,通过在 Java 类上添加@Controller
注解来标识该类为一个控制器。
java
package com.example.controller;
import org.springframework.stereotype.Controller;
@Controller
public class UserController {
// 控制器方法将在这里定义
}
2、请求映射注解
/list
方法处理/users/list
的请求,/detail/{id}
方法处理类似/users/detail/1
这样带有路径参数的请求,@PathVariable
注解用于将路径中的参数值绑定到方法的参数上。
java
@Controller
@RequestMapping("/users")
public class UserController {
@RequestMapping("/list")
public String listUsers() {
// 处理获取用户列表的业务逻辑
return "userList"; // 返回逻辑视图名
}
@RequestMapping("/detail/{id}")
public String userDetail(@PathVariable("id") int userId) {
// 根据userId获取用户详情的业务逻辑
return "userDetail";
}
}