如何理解SpringMVC中的MVC

1.MVC与三层关系架构的关系

很多同学会认为MVC就是三层架构。其实它们之间区别又有联系,准确的说是站在不同的视角描述着相同的概念

如何理解SpringMVC中的MVC_第1张图片

三层架构

为了满足“高内聚、低耦合”的思想,我们把程序结构分为三层,分别是展示层、业务逻辑层和数据访问层。每一层单独负责其职责,各层之间通过接口相互访问,通过对象模型作为数据载体在各层之间传递数据。相信学过JavaWeb的同学,对三层架构的应用已经有一定的认识。在三层架构中,我们提到了对象模型、展示层等概念。而这些概念在MVC架构中有了新的身份。

MVC模型

MVC来自于Model、View、Controller三个单词。

  • Model:模型表示业务规则。模型在MVC中拥有最多的处理任务。模型中承载的数据可被视图View来使用,且可被多个View重复使用。
  • View:视图是用户看到的,且可以与之交互的界面。在视图中并不会产生真正的处理,只是作为输出数据并允许进行用户交互。
  • Controller:控制器旨在接受用户的输入并调用模型和视图来完成用户的需求。控制器本身不做任何处理,只是根据接受的请求来决定调用哪个模型去处理请求,并确定哪个视图来显示返回的数据。

看完MVC的解释后我们发现,MVC离不开三层架构,而三层架构的执行逻辑其实就是MVC执行逻辑。

2.SpringMVC

Spring Web MVC是基于Servlet API构建的原始Web框架,从一开始就包含在Spring框架中。

SpringMVC简化了我们在构建MVC项目时的繁琐操作,而其内部拥有着堪称完美的MVC模型底层执行逻辑。

如何理解SpringMVC中的MVC_第2张图片

在上面的执行流程图中详细介绍了SpringMVC在收到请求后是如何通过核心控制器、处理映射器、处理适配器、视图解析器来完成整个MVC执行流程。

下面索尔老师带大家快速搭建一个SpringMVC项目。

3.快速体验SpringMVC

  • 导入依赖

    org.springframework
    spring-webmvc
    5.1.6.RELEASE
  • 配置核心控制器DispatcherServlet

作为一个MVC框架,首先要解决的是如何能够收到请求。所有请求都会经过该核心控制器。此控制器在接收到请求后,还会负责springMVC的核心的调度管理。

Servlet作为核心控制器的技术实现再合适不过了


    mvc
    org.springframework.web.servlet.DispatcherServlet
    
    
        contextConfigLocation
        classpath:mvc.xml
    
    
    1


    mvc
    /
  • 后端控制器

等价于之前定义的Servlet,由DispatcherServlet根据请求路径来调度。在hello方法中可以加入业务逻辑层的调用,这也是三层架构的体现。


@Controller //声明这是一个控制器
@RequestMapping("/hello")  //访问路径
public class HelloController {
        @RequestMapping("/test1")  //访问路径
        public String hello(){
                System.out.println("hello world");
                return "redirect:index.jsp"; // 跳转:/index.jsp

        }
}
  • 配置文件

SpringMVC项目中用到的业务Bean和实体Bean也同样需要Spring容器来管理,因此需要Spring的配置文件,在配置文件中指明了包扫描路径。


        
        
  • 访问

完成配置后通过浏览器访问Controller定义的Web路径,既可以问到index.jsp页面内容。

http://localhost:8080/hello/test1

4.总结

SpringMVC是Spring核心框架里的重要组件,掌握他可以快速提升Web项目开发效率。

你可能感兴趣的:(mvc)