zoukankan      html  css  js  c++  java
  • 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就会去执行自己写的控制器中的具体方法来完成请求。

  • 相关阅读:
    201504051930_《移动APP框架——MUI——HTML5》
    201503121644_《ios直播协议相关》
    2010502260926_《avolon》
    201502251333_《avolon作用域》
    201502251308_《fekit》
    使用Eclipse下载CRaSH源代码
    网络流量监控工具
    Map的putAll方法验证
    bat脚本中%~dp0含义解释
    CD管理和检索软件比较
  • 原文地址:https://www.cnblogs.com/ljq2622/p/10753919.html
Copyright © 2011-2022 走看看