zoukankan      html  css  js  c++  java
  • SpringMVC 架构

    SpringMVC 架构


    1. 前言

    SpringMVC是目前java世界中最为广泛应用的web框架,最然从学习SpringMVC的第一个程序--helloworld至今,已有好几个年头。其间伴随着项目的同时找资料,看文档,也涉猎过部分源代码,基本明白了SpringMVC是怎么回事,遇到需求知道如何写代码,在哪写代码。但是对SpringMVC并没有深入理解,并没有一个系统的认识。对于涉及到配置或工作原理时,就显得有些局促。尤其是SpringBoot用得越来越多,简化了大量的配置,在一些比较高级的用法的时候感觉有点莫名奇妙,不知所以。所以,最近准备系统研究下web开发中大行其道的SpringMVC.


    2. 顶级架构模式

    当前主流的web mvc框架大都使用的是前端控制器模式(FrontController),什么是前端控制器模式呢?
    FrontController
    前端控制器模式提供了一个集中的请求处理机制,所有的请求都将由一个单一的处理程序处理。该处理程序可以做一个通用的控制,如认证,授权,记录日至或者跟踪请求,然后将请求传递给响应的处理程序。以下是这种设计模式的主要组成部分:

    • 前端控制器(Front Controller):处理应用程序所有类型的请求,进行统一处理,解析请求参数,将请求发送给具体的Controller处理。
    • 调度器(Dispatcher/Controller):接收前端控制器的调度,调用相关对象处理请求。
    • 视图模板(ViewTemplate):为响应请求而创建的模型视图对象。

    3. 顶级架构视图

    DispatcherServlet 架构


    4.架构实现流程

    DispatcherServlet impl

    • SpringMVC使用一个Servlet(DispacherServlet)代理所有的请求,详见前端控制器模式。将请求发送给对应的处理器处理,较好的分离了每一个处理器的职责。
    • 为什么使用HandlerAdapter?
      SpringMVC中的处理器是方法级别的处理器,而非类级别的处理,这样只要不定义类变量,就很容易在单例的情况下保证线程安全。同时对处理器进行统一封装,最大程度重用代码。

    5.再谈体系结构

    体系结构

  • 相关阅读:
    mysql主从复制搭建
    centos下安装mysql
    Elasticsearch5.1.1+ik分词器+HEAD插件安装小记
    cento下安装elasticsearch2.4.2小记
    plotly线上绘图和离线绘图的区别
    利用ZotFile对Zotero中的文献进行整理
    数据0-1标准化
    指针和引用的区别
    C++中使用sstream进行类型转换(数字字符串转数字、数字转数字字符串)
    C++ 中字符串查找、字符串截取、字符串替换
  • 原文地址:https://www.cnblogs.com/dragonfei/p/6129712.html
Copyright © 2011-2022 走看看