Spring Web MVC 框架简称 Spring MVC,Spring MVC 属于 SpringFrameWork 的后续产品,已经融合在 Spring Web Flow 里面。实现了 Web 开发中的经典的 MVC(Model-View- Controller)模式。使用 Spring 可插入的 MVC 架构,从而在使用 Spring 进行 WEB 开发时,可以选择使用 Spring 的 Spring MVC 框架或集成其他 MVC 开发框架, MVC 由以下 3 部分组成: ♞ 模型(Model):应用程序的核心功能,管理模块中用到的数据和值。 ♞ 视图(View):提供模型的展示,管理模型如何显示给用户,它是应用程序的外观。 ♞ 控制器(Controller):对用户的输入做出反应,管理用户和视图的交互,是连接模型和视图的枢纽。 Spring Web MVC 是基于 Servlet APl 来构建的,自 Spring 框架诞生之日起,就包含在 Spring 中了。要使用 Spring Web MVC 框架的功能,需要添加 spring-webmvc 模块。
♞ 浏览器发送请求到服务器,DispatcherServlet(前端核心控制器) 匹配所有请求 ♞ DispatcherServlet 将 url 发送给 HandleMapping(处理器映射器) ♞ HandleMapping 查找是否有符合该路径的方法,有则将方法全限定名返回给 DispatcherServlet,没有则报 404 ♞ DispatcherServlet 拿到 HandleMapping 返回的全限定名,将其交给 HandleAdapater(处理器适匹配器) ♞ HandleAdpater 拿到全限定名后执行方法 ♞ 方法返回 视图名称,HandleAdpater 将其返回给 DispatcherServlet ♞ DispatcherSerclet 拿到 视图名称 后,将其交给 ViewResolver(视图解析器) ♞ ViewResolver 拿到 视图名称 查找是否有匹配的资源 ♞ 有则将 视图 返回给 DispatcherServlet ♞ DispatcherServlet 拿到 视图 后,将其交给 View 渲染,填充数据后,DispatcherServlet 将 视图 响应给浏览器
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 开启注解扫描 -->
<context:component-scan base-package="com.software.spring"/>
<!-- 开启 MVC 注解支持 -->
<mvc:annotation-driven/>
</beans>
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<!-- 配置前端核心控制器 -->
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 初始化参数, 指定加载配置文件 -->
<init-param>
<!-- 参数名 -->
<param-name>contextConfigLocation</param-name>
<!-- 值 -->
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<!--
load-on-startup 元素标记容器是否应该在 web 应用程序启动的时候就加载这个 servlet,即实例化并调用 init() 方法
它的值必须是一个整数,表示 servlet 被加载的先后顺序。
如果该元素的值为负数或者没有设置,则容器会当 servlet 被请求时再加载
如果值为正整数或者 0 时,表示容器在应用启动时就加载并初始化这个 servlet
值越小,servlet 的优先级越高,就越先被加载。值相同时,容器就会自己选择顺序来加载。
-->
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
/**
* Created with IntelliJ IDEA.
*
* @author Demo_Null
* @date 2020/8/24
* @description 控制器
*/
@Controller
public class DemoController {
/*
* value:用于指定请求的 URL。它和 path 属性的作用是一样的
* method:用于指定请求的方式
* params:用于指定限制请求参数的条件。它支持简单的表达式。要求请求参数的 key 和 value 必须和配置的一模一样
* headers:指定限制请求的请求头信息
*/
@RequestMapping(value = "/get", method = RequestMethod.GET)
public void get() {
System.out.println("请求到了~~~~");
}
}
☞ 打包项目
☞ 配置 Tomcat
☞ 启动项目
启动项目之后,请求 Tomcat 中配置好的 URL + @RequestMapping 上配置好的请求路径就可以请求到对应的方法。