• SpringMVC工作流程


    SpringMVC工作流程

     

        一、SpringMVC简介

        SpringMVC是一种基于Spring实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,使用了MVC架构模式的思想,将web层进行职责解耦,并管理应用所需对象的生命周期,为简化日常开发,提供了很大便利。

        SpringMVC提供了总开关DispatcherServlet;请求处理映射器(Handler Mapping)和处理适配器(Handler Adapter),视图解析器(View Resolver)进行视图管理;动作处理器Controller接口(包含ModelAndView,以及处理请求响应对象request和response),配置灵活,支持文件上传,数据简单转化等强大功能。

      二、工作流程与介绍

           

          (1)客户端通过url发送请求

        <a href="hello">入门程序</a>

          (2-3)核心控制器Dispatcher Servlet接收到请求,通过系统或自定义的映射器(Handler Mapping)配置找到对应的handler,并将url映射的控制器controller返回给核心控制器。

    比如上面请求的hello,通过处理器映射器找到sayhello方法。然后返回给核心控制器(Dispatcher Servlet)   

          (4)通过核心控制器找到系统或默认的适配器

    //控制器类
    @Controller
    public class HelloController {
    
        @RequestMapping(path ="/hello")//说简单一点这里的作用就是建立请求路径和控制器之间的关系,但用户请求这个地址时就可以直接调用控制器进行跳转
        public String sayHello() {
            System.out.println("hello springmvc");
            return "success";
        }
    }

          (5-7)由找到的适配器,调用实现对应接口的处理器,并将结果返回给适配器,结果中包含数据模型和视图对象,再由适配器返回给核心控制器

          这里返回需要找的页面为seccess.jsp

          (8-9)核心控制器将获取的数据和视图结合的对象传递给视图解析器,获取解析得到的结果,并由视图解析器响应给核心控制器(进行找seccess.jsp的操作)

        <!--视图解析器-->
        <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/pages/"/>
            <property name="suffix" value=".jsp"/>
        </bean>

          (10)核心控制器将结果返回给客户端

      三、适配器作用

        SpringMVC涉及的映射器,视图解析器的作用不难理解,映射器负责将前端请求的url映射到配置的处理器,视图解析器将最终的结果进行解析,但中间为什么要经过一层适配器呢,为什么不经映射器找到controller后直接执行返回呢?

        那是因为SpringMVC为业务处理器提供了多种接口实现(例如实现了Controller接口),而适配器就是用来根据处理器实现了什么接口,最终选择与已经注册好的不同类型的Handler Adapter进行匹配,并最终执行,例如,SimpleControllerHandlerAdapter是支持实现了controller接口的控制器,如果自己写的控制器实现了controller接口,那么SimpleControllerHandlerAdapter就会去执行自己写的控制器中的具体方法来完成请求。

  • 相关阅读:
    Linux修改root密码报错
    Python中的排序---冒泡法
    Python随机数
    Python中的深拷贝和浅拷贝
    Couldn’t download https://raw.githubusercontent.com/certbot/certbot/ 问题解决
    Python内置数据结构----list
    Python内置数据结构
    Vue指令
    computed 和 watch
    Vue的数据响应式
  • 原文地址:https://www.cnblogs.com/ljq2622/p/10753919.html
Copyright © 2020-2023  润新知