spring专题---第三部分MVC---快速搭建一个spring mvc项目

在这里插入图片描述

本篇总结内容如下:

    spring mvc是什么
    spring mvc能干什么
    spring mvc 实现原理(核心组件+工作流程+如何使用)
    流程梳理
    总结
    分享和交流

spring mvc是什么

    spring mvc 是 Spring Framework 用来提供的web组件,它的全称其实叫Spring Web MVC。它是目前主流的实现MVC设计模式的框架,提供了前端路由映射、视图解析等功能,让web开发变得更简单便捷。Spring MVC是以spring IOC容器为基础的,由于它和IOC都是spring家族成员的一个组件,因此可以无缝衔接,从而大大简化了它的配置,不存在整合的概念。spring MVC是Java web开发者必须要掌握的框架。

spring mvc能干什么

    刚刚已经说过,spring MVC是MVC设计模式的框架,那么说一下MVC设计模式,其是一种常用的软件架构方式,将代码分离成三个模块:controller(控制层)、model(模型层)、view(视图层),各个模块负责不同的工作,整合实现整体的业务需求。
    MVC流程:controller收到客户的请求,调用Model相关代码完成业务逻辑操作,并获取业务数据返回给controller,controller再结合view完成业务数据的视图层渲染,并将结果响应给客户端。如下图所示:
在这里插入图片描述
    spring MVC对上边这个MVC流程进行了封装,帮助开发者屏蔽了底层的代码,并开放相关接口供开发者调用,让MVC开发变得更见简单便捷。

spring mvc 实现原理

核心组件
(1)DispatcherServlet:前端控制器,负责调度其他组件的执行,可降低不同组件之间的耦合性,是整个spring MVC的核心模块。
(2)Handler:处理器,完成具体业务逻辑,相当于servlet或action
(3)HandlerMapping:DispatcherServlet是通过HandlerMapping将请求映射到不同的Handler
(4)HandlerInterceptor:处理器拦截器,是一个接口,如果我们需要做一些拦截处理,可以来实现这个接口。
(5)HandlerExecutionChain:处理器执行链,包括两部分内容,即Handler和HandlerInterceptor(系统会有一个默认的HandlerInterceptor,如果需要额外拦截处理,可以添加拦截器设置)。
(6)HandlerAdapter:处理器适配器,Handler执行业务方法之前,需要进行一系列的操作包括表单数据的验证、数据类型的转换、将表单数据封装到POJO等,这一系列的操作,都是由HandlerAdapter来完成,DispatcherServlet是通过HandlerAdapter执行不同的Handler。
(7)ModelAndView:装载了模型数据和视图信息,作为Handler的处理结果,返回给DispatcherServlet。
(8)ViewResolver:视图解析器,DispatcherServlet通过它将逻辑视图解析成物理视图,最终将渲染结果响应给客户端。
以上这些便是spring MVC的核心组件,或许你看完之后还是不清楚,其实这些记不清楚也无所谓,因为不影响你后边的使用。但是我们要知道它们之间是怎么交互的。
工作流程:
(1)客户端请求被DispatcherServlet(前端控制器)接收。
(2)根据HandlerMapping映射到Handler
(3)生成Handler和HandlerInterceptor(如果有则生成)
(4)Handler和HandlerInterceptor以HandlerExecutionChain的形式一并返回给DispatcherServlet。
(5)DispatcherServlet通过HandlerAdapter调用Handler方法做业务逻辑处理。
(6)返回一个ModelAndView对象给DispatcherServlet。
(7)DispatcherServlet将获取的ModelAndView对象传给ViewResolver视图解析器,将逻辑视图解析成物理视图View。
(8)ViewResolver返回一个View给DispatcherServlet。
(9)DispatcherServlet根据View进行视图渲染(将模型数据填充到视图中)。
(10)DispatcherServlet将渲染后的视图响应给客户端。
组件太多,或许看的还是迷迷糊糊,那么没关系,我画了一个图演示一下完整流程。
在这里插入图片描述
     我嫌网上作图太麻烦,就随手画了一个,画的难看见谅了。
     看到上边的流程,大家可能有些担心,如此多的组件,开发起来一定很麻烦,其实不然。spring MVC很多组件都是由框架提供,作为开发者我们直接使用即可,并不需要自己手动编写代码,众多组件中真正需要我们自己编写的只有两个,即Handler(处理业务逻辑)和View(jsp做展示)。其实,众多框架中,都是这样一个道理,业务代码和页面肯定都要我们自己写啊,框架又不知道我们想做什么业务和页面展示对吧。
如何使用:
(1)环境搭建

创建maven工程,引入spring mvc依赖

        <!--pom.xml-->>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>4.3.1.RELEASE</version>
        </dependency>

(2)在web.xml中配置spring mvc的DispatcherServlet。

  <!--web.xml-->>
  <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:spring-web.xml</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>

(3)创建springmvc.xml配置文件。

    <!--springmvc.xml-->>
    <!--base-package包下要包含所有@controller的类-->>
    <context:component-scan base-package="com.summer.shh.controller"/>
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>

目标资源路径=前缀+返回值+后缀。
(4)创建Handler类

@Controller
@RequestMapping(value = "/testController")
public class TestController {

    @RequestMapping(value = "/test")
    public String Test(){
        System.out.println("doing Test");
        return "index";
    }
}

切记@RequestMapping(value = “/xxxx”)一定要加 /
(5)创建一个jsp页面,在webapp下
(6)启动tomcat,打开浏览器输入URL进行测试。
在这里插入图片描述

流程梳理

(1)DispatcherServlet接收到URL请求testController/test,结合@Controller下@RequestMapping(“testController”)和@RequestMapping(“test”)注解将请求交给test业务方法。
(2)执行test业务方法,控制打印日志,并返回“test"字符串。
(3)结合spring mvc.xml中的视图解析器配置,找到目标资源:/index.jsp,即根目录的index.jsp。将该JSP资源返回给客户端完成响应。
至此spring mvc搭建成功。

总结

    本篇我们介绍了spring mvc的基本概念、工作流程即如何快速搭建环境。

分享交流

    以上便是我对这一部分的理解,如果有错误或者你有其他疑惑都可以留言给出,我都会一一进行回复,希望对你有所帮助,如果写的不好也请您多多包涵。欢迎在下方补充留言哟。
    对SSM框架感兴趣的童鞋,可以移步这里,在这里你可以快速的搭建好一个SSM框架。
    如果你在写项目的时候,遇到一些不寻常的问题,也可以关注我的博客园,上边会发布一些我在写项目中遇到的各种问题以及解决方式。

发布了21 篇原创文章 · 获赞 27 · 访问量 4284

猜你喜欢

转载自blog.csdn.net/llllxxxxyyyy/article/details/104099580
今日推荐