如何理解SpringMVC中的MVC

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

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

三层架构

为了满足“高内聚、低耦合”的思想,我们把程序结构分为三层,分别是展示层、业务逻辑层和数据访问层。每一层单独负责其职责,各层之间通过接口相互访问,通过对象模型作为数据载体在各层之间传递数据。相信学过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执行流程。

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

3.快速体验SpringMVC

  • 导入依赖
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.1.6.RELEASE</version>
</dependency>
  • 配置核心控制器DispatcherServlet

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

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

<servlet>
    <servlet-name>mvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!-- 声明Spring容器所需的配置文件位置 -->
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:mvc.xml</param-value>
    </init-param>
    <!-- DispatcherServlet优先启动 -->
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>mvc</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>
  • 后端控制器

等价于之前定义的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的配置文件,在配置文件中指明了包扫描路径。

<beans         xmlns="http://www.springframework.org/schema/beans"
                xmlns:context="http://www.springframework.org/schema/context"
                xmlns:mvc="http://www.springframework.org/schema/mvc"
                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/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.qf.controller"></context:component-scan>
</beans>
  • 访问

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

http://localhost:8080/hello/test1

4.总结

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ღ᭄陽先生꧔ꦿ᭄

你的鼓励将是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值