SpringMVC 架构


1. 前言

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


2. 顶级架构模式

当前主流的web mvc框架大都使用的是前端控制器模式(FrontController),什么是前端控制器模式呢?



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

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

3. 顶级架构视图


4.架构实现流程

  • SpringMVC使用一个Servlet(DispacherServlet)代理所有的请求,详见前端控制器模式。将请求发送给对应的处理器处理,较好的分离了每一个处理器的职责。
  • 为什么使用HandlerAdapter?

    SpringMVC中的处理器是方法级别的处理器,而非类级别的处理,这样只要不定义类变量,就很容易在单例的情况下保证线程安全。同时对处理器进行统一封装,最大程度重用代码。

5.再谈体系结构

SpringMVC 架构的更多相关文章

  1. Web项目中JSP页面的一种调试方法与出现的问题 -- SpringMVC架构测试

    在前端开发中,尤其是MVC架构多人开发,负责前端的童鞋总是需要做静态页面,再和后台连接前无法使用变量如EL表达式等测试功能,所以本人引入了一个模板jsp数据测试专用文件,专门配置所有的变量,然后在待测 ...

  2. SpringMvc架构下css、js、jpg加载失败问题

    SpringMvc架构下css.js.jpg加载失败问题 springMvc搭建成功后,页面出现一些错误,jsp.js等静态资源加载失败.导致页面没有显示任何样式以及 此处原因很简单,是因为相对路径在 ...

  3. SpringMVC学习笔记之一(SpringMVC架构及与Mybatis整合)

    一.SpringMVC入门 1.1Springmvc是什么 Spring web mvc和Struts2都属于表现层的框架,它是Spring框架的一部分,我们可以从Spring的整体结构中看得出来,如 ...

  4. 1、SpringMVC架构

    1.SpringMVC架构 1.1 Spring web mvc 介绍 spring web mvc和Struts2都属于表现层的框架,它是Spring框架的一部分,我们可以从Spring的整体结构中 ...

  5. springMVC课程笔记(一)springMVC架构原理分析

    一.springMVC架构原理分析 1.先搞清楚什么是springMVC: 其实springMVC是spring框架中的一个模块,springMVC和spring无需通过中间整合层整合,SpringM ...

  6. SpringMVC架构实现原理

    SpringMVC架构实现原理 一.SpringMVC介绍 Spring mvc是一个基于mvc的web框架.其中核心类是DispatcherServlet,它是一个Servlet,顶层是实现的Ser ...

  7. SpringMVC架构&组件&执行流程

    SpringMVC架构: 组件: DIspatcherServlet:前端控制器.相当于mvc模式的c,是整个流程控制的中心,负责调用其他组件处理用户的请求,降低了组件之间的耦合性. HandlerM ...

  8. SpringMVC架构(一)

    SpringMVC架构 1.1Spring web mvc介绍 Spring web mvc和Struts2都属于表现层的框架,它是Spring框架的一部分,我们可以从Spring的整体结构中看得出来 ...

  9. 纯手写SpringMVC架构,用注解实现springmvc过程

    1.第一步,首先搭建如下架构,其中,annotation中放置自己编写的注解,主要包括service controller qualifier RequestMapping 第二步:完成对应的anno ...

随机推荐

  1. 用java操作XML文件(DOM解析方式)

    XML 可扩展标记语言(Extensible Markup Language),是独立于软件和硬件的传输工具. XML的作用: (1)用作配置文件 (2)简化数据共享 (3)简化数据传输 XML DO ...

  2. zzuliOJ 1904小火山的股票交易;

    #include <stdio.h> #include <algorithm> #include <string.h> using namespace std; # ...

  3. centos6.5搭建lnmp环境

    注:本文原文链接:http://www.cnblogs.com/xiaoit/p/3991037.html 本文只是做保存使用 1:查看环境: [root@10-4-14-168 html]# cat ...

  4. ABP的事件总线和领域事件(EventBus & Domain Events)

    http://www.aspnetboilerplate.com/Pages/Documents/EventBus-Domain-Events EventBus EventBus是个单例,获得Even ...

  5. Windows上安装Maven

    Maven的具体参考书可以看:<Maven实战> 下载maven可以到:http://maven.apache.org/ Maven的eclipse基本使用可以在这里看到:http://w ...

  6. Sql Server 简单查询 异步服务器更新语句

    //结构:select 子句 [into 子句] from 子句  [where 子句] [group by 子句]  [having 子句] [order by 子句] select  dept_c ...

  7. c# 调用分页(控制器端的)与时间的格式

    1.在操作的model中: 2.在控制器中: , command.PageSize);//将从数据库获取到的集合进行分页 var gridModel = new DataSourceResult { ...

  8. mysql之group_concat函数详解

    函数语法: group_concat( [DISTINCT]  要连接的字段   [Order BY 排序字段 ASC/DESC]   [Separator '分隔符'] ) 下面举例说明: sele ...

  9. 文件过滤器 filter

    OpenFileDialog对话框的Filter属性说明: 首先说明一个示例,分析一下Filter属性的构成:“ Excel文件|*.xls ”,前面的“Excel文件”成为标签,是一个可读的字符串, ...

  10. 编程之美2014挑战赛 复赛 Codehunt平台试题答案

    var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...