先说说什么是MVC

MVC(Model, View, Controller) 是模型(model)-视图(view)-控制器(controller)的缩写.

模型(model): 通俗的讲就是数据建立的模型. 可以看做是一组数据集合.

视图(View): 页面响应的内容.

控制器(Controller): 主要控制视图和模型做最后的处理的一层.




springmvc 无法连接Controller_springmvc返回html


MVC的出现更好的避免原先代码和视图否揉在一起的群魔乱舞的时代.

描述一下这个场景, 当有用户访问我们的URL的时候, 需要做的就是找到该URL对应的Controller方法. 并把Controller方法里面做的处理, 返回给用户.

这里有个关键点, 就是我们怎么找到Controller方法, 并怎么返回给请求的对象. 这个时候, 我们就需要了解一下SpringMVC框架. 其实它和其他的框架大同小异, SpringMVC属于请求驱动. 就是说: 所有的设计都围绕一个中央的Servlet来处理. 它在负责把所有的请求分发到对应的控制器. 相当于找了一个大管家. 你有什么要求, 就向它提. 这个时候, 他就负责给你找对应的控制器. 该控制器的名字叫做: DispatcherServlet. 来自: org.springframework.web.servlet.DispatcherServlet 担任重要职责. 分析代码可以看出来. 该类, 就是一个前端控制器模式.

DispatcherServlet: 看父类王上翻, 发现它其实就是一个Servlet(基类为HTTPServlet). 所以, 如果想要使用它, 你要做的就是配置web.xml 或者是Servlet3.x之后的Java Config 方式配置. 如果不使用SpringBoot 你会看到如下的代码. 或者是与此类似的.


springmvc 无法连接Controller_springmvc返回html_02


编程的方式(JavaConfig)


springmvc 无法连接Controller_配置文件_03


那在SpringBoot中, 如何加载的呢? 这里就需要知道一个问题, 就是SpringBoot的所有自动化配置,

该包为: spring-boot-autoconfigure-2.1.0.RELEASE.jar 并以*AutoConfiguration.java命名.

所以找到包: org.springframework.boot.autoconfigure.web.servlet; 找到对应的DispatcherServletAutoConfiguration


springmvc 无法连接Controller_springmvc返回html_04


具体的加载代码:


springmvc 无法连接Controller_MVC_05


SpringBoot中web的依赖, 其实就是SpringMVC, 它并没有新创建什么, 只是在原来的基础上. 做了自动化. 什么是自动化呢? 就是把一系列有规则的动作, 按照规则运行并使用.

Spring Web MVC

其实大家都是叫做SpringMVC, 但是官方文档全程为Spring Web MVC. 就相当于JavaScript 叫做js一样. 接下来我们引用SpringMVC框架.

加入对应的依赖. 这一个依赖就是完成了SpringMVC的依赖. 加入该依赖不需要写一行配置文件, 就可以启动一个Web项目.


springmvc 无法连接Controller_配置文件_06


这里我们需要引用一个模板引擎. thymeleaf. 也是Spring官方推荐使用的.


springmvc 无法连接Controller_MVC_07


从Spring Boot 2.x开始, 已经是基于thymeleaf的3.x版本了. 如下:


springmvc 无法连接Controller_MVC_08


我们先看一下我们现在的项目架构图.


springmvc 无法连接Controller_MVC_09


目录结构说明:

src/main/java 代表存放的是java源代码

src/main/resources 代表是存放的配置文件, 或者是mybatis, hibernate的xml配置文件

src/test/java 代表存放的是Java的测试代码

src/test/resources 代表存放测试代码的配置文件

默认情况下 src/main/resources 是没有目录和文件的, 这个时候, 我们创建2个目录, 一个叫做 static 一个叫做templates

static: springboot的默认静态资源目录. 可以在配置文件中修改.

templates: springboot的默认模版文件目录. 可以在配置文件中修改.

新调整目录如下:


springmvc 无法连接Controller_配置文件_10


接下来我们编写页面文件. 在templates 中加入 index.html


springmvc 无法连接Controller_MVC_11


编写Controller


springmvc 无法连接Controller_配置文件_12


这个时候, 我们访问http://localhost:8080 或者 http://localhost:8080/index.html 就可以看到下面的效果.


springmvc 无法连接Controller_springmvc返回html_13


我们简单的描述一下这个流程. 我们在访问该路径时, 找到对应的Controller: @RequestMapping(value= {