SpringMVC-简单总结
要学习一项技术,首先要知道, 它是什么, 为什么要用它 , 它由哪些东西组成, 每个东西是干什么的, 它们怎么综合在一起的
参考博客: 平凡希: https://www.cnblogs.com/xiaoxi/p/6164383.html
幸运草铃兰: https://blog.csdn.net/xingyuncaojun/article/details/80633495
参考书籍:《JavaEE 互联网轻量级框架整合开发 SSM框架和Redis实现》
一.SpringMVC是什么?
SpringMVC是Spring框架后续开发的一个模块, 它是一个基于MVC模式的开发框架.
早期的MVC由Servlet, JavaBean, JSP组成, 用户请求先到达Servlet, Servlet作为控制器接收请求,然后调度JavaBean来读写数据库的数据,最后将处理结果放在JSP中,返还展现给用户.
这样的模式就是MVC模式, Servlet扮演Controller(控制器)角色, JavaBean扮演Model(模型)角色, JSP扮演View(视图)角色. 这样设计的好处就是, 前后端有了一定的分离, 前端与后端只有一定的数据交流, 减少了一定的耦合(依然有耦合), 而控制器和模型的分离,使得大量代码有了重用的可能.
传统的MVC框架还是存在着一定的耦合性, 比如模型层夹杂着业务层和数据库的访问, 所以SpringMVC把传统的模型层拆分为了:Service(业务层)和DAO(数据访问层). 在Service下可以通过Spring的声明式事务操作数据访问层, 而在业务层上还允许我们访问NoSQL,这样能满足现代互联网系统的性能.
SpringMVC最大的特点是结构松散, 耦合度较低, 对各个模块进行了分离,使得各自负责各自的逻辑.
二.为什么要用SpringMVC?
SpringMVC的特点已经在上面描述过了, 就是在传统MVC模式下,将Model层拆分为 Service和DAO. 其最大的特色就是结构松散, 比如几乎可以在SpringMVC中使用各类视图, 包括JSON,JSP,XML,PDF等,所以它能满足手机端,页面端和平板电脑端的各类请求.
SpringMVC和Struts对比:
①SpirngMVC的入口是Servlet, Struts是Filter
②SpringMVC是基于方法设计的,而Struts是基于类设计的,每次发一次请求都会实例一个Action
③SpringMVC更加简洁,开发效率比Struts高, 能够处理ajax请求
三.SpringMVC的组件与流程
1.组件:
①核心控制器 DispatcherServlet :
作用: 接收请求, 响应结果 , 降低组件之间的耦合度
SpringMVC框架是围绕DispatcherServlet工作的, 它是整个流程控制的中心. 它负责协调和组织不同组件完成请求处理并返回响应工作.
②处理器映射器 HandlerMapping:
作用: 根据请求路径找到相应的处理器
HandlerMapping根据用户的请求找到对应的Handler(它可能是一个Controller方法, 也可能是一个Controller对象,Servlet对象 或者 HttpRequestHandler对象), 并将Handler与一堆HandlerInterceptor(拦截器)封装到HandlerExecutionChain对象中
SpringMVC可以根据不同的方式来进行处理器的映射 , 如:配置文件方式, 注解方式, 实现接口方式等.
③处理器适配器 HandlerAdapter:
作用: 根据Handler找到支持它的HandlerAdapter, 然后通过这个HandlerAdapter来执行这个Handler和其拦截器, 最终得到ModelAndView对象.
就像上面的Handler种类说的, 根据Handler的不同,适配的HandlerAdapter的种类也不同. 他可能是SimpleControllerHandlerAdapter(Controller类型的Handler), 也可能是SimpleServletHandlerAdapter(Serlvet类型的Hand;er), 或者HttpRequestHandlerAdapter(HttpRequestHandler类型的Handler)
④视图解析器 ViewResolver :
作用:进行视图解析, 把一个逻辑上的视图名称解析为一个真正的视图(View对象)
ViewResolver负责将处理结果生成View视图, ViewResolver首先根据逻辑视图名称解析成物理视图名即具体的页面地址, 再生成View视图对象, 最后对View进行渲染将处理结果通过页面展示给用户. SpringMVC提供了很多View视图类型, 包括:jstlView , freemarkerView, pdfView等.
⑤处理器 Handler :
作用: 处理具体的用户请求
可以理解为广义上的Controller, 和在HandlerAdapter中所描述的一样, Handler有很多种,它可能是一个Controller的方法, 一个Controller, 一个Servlet, 一个HttpRequestHandler, 但是它们的作用都是为了处理具体的用户请求.
⑥视图 View :
作用: View接口的主要作用是用于处理视图, 然后返回给客户端.
2.组件控制流程:
图片转自:https://www.cnblogs.com/xiaoxi/p/6164383.html
流程简介:
1.用户发送请求>>>>>DispatcherServlet:
DispatcherServlet受到请求后,自己不做处理,而是首先委托HandlerMapping进行第一步处理,自己只作为统一访问点, 进行全局的流程控制
2.DispatcherServlet>>>>>>>HandlerMapping:
HandlerMapping根据请求查找对应的Handler, 并将Handler对象和其多个HandlerInterceptor(拦截器)对象包装为一个HandlerExecutionChain(执行链)对象 并返回给DispatcherServlet
3.DispatcherServlet>>>>>>>HandlerAdapter:
HandlerAdapter根据Handler的种类,找到支持对应类型的适配器,如SimpleControllerHandlerAdapter支持Controller类型的Handler, 这样Handler就可以在适合的运行环境下运行. 对应类型HandlerAdapter会执行对应的Handler, 以及执行目标方法前后需要执行的拦截器. 最终完成功能处理, 并返回一个ModelAndView对象到DispatcherServlet;
4.DispatcherServlet>>>>>>>ViewResolver:
根据ModelAndView的逻辑视图名, ViewResolver将其解析为具体的View对象.
5.View >>>>> 渲染
View对象会根据传进来的Model模型数据进行渲染,此处的Model实际是一个Map数据结构,因此很容易支持其他视图技术;
6.返回控制权给DispatcherServlet,由DispatcherServlet返回响应给用户,到此一个流程结束。
SpringMVC-简单总结的更多相关文章
- SpringMVC简单配置
SpringMVC简单配置 一.eclipse安装Spring插件 打开help下的Install New Software 点击add,location中输入http://dist.springso ...
- SpringMVC简单入门
SpringMVC简单入门 与大家分享一下最近对SpringMVC的学习,希望本文章能对大家有所帮助. 首先什么是SpringMVC? Spring 为展现层提供的基于MVC设计理念的优秀的Web框架 ...
- SpringMVC简单实例(看起来有用)
SpringMVC简单实例(看起来有用) 参考: SpringMVC 基础教程 简单入门实例 - CSDN博客http://blog.csdn.net/swingpyzf/article/detail ...
- SpringMVC简单使用教程
一.SpringMVC简单入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于SpringMVC的配置 <!--conf ...
- eclipse建立springMVC 简单项目
http://jinnianshilongnian.iteye.com/blog/1594806 如何通过eclipse建立springMVC的简单项目,现在简单介绍一下. 工具/原料 eclip ...
- 基于注解的SpringMVC简单介绍
SpringMVC是一个基于DispatcherServlet的MVC框架,每一个请求最先访问的都是DispatcherServlet,DispatcherServlet负责转发每一个Request请 ...
- Intellij IDEA +MAVEN+Jetty实现SpringMVC简单查询功能
利用 Intellij IDEA +MAVEN+Jetty实现SpringMVC读取数据库数据并显示在页面上的简单功能 1 新建maven项目,配置pom.xml <project xmlns= ...
- SpringMvc简单实例
Spring MVC应用一般包括4个步骤: (1)配置web.xml,指定业务层对应的spring配置文件,定义DispatcherServlet; (2)编写处理请求的控制器 (3)编写视图对象,例 ...
- springMVC 简单事例
本帖最后由 悲观主义者一枚 于 2015-1-31 17:55 编辑 使用SpringMvc开发Android WebService入门教程1.首先大家先创建一个JavaWeb项目2.然后加入Spri ...
- SpringMVC学习总结(四)——基于注解的SpringMVC简单介绍
SpringMVC是一个基于DispatcherServlet的MVC框架,每一个请求最先访问的都是 DispatcherServlet,DispatcherServlet负责转发每一个Request ...
随机推荐
- React 精要面试题讲解(二) 组件间通信详解
单向数据流与组件间通信 上文我们已经讲述过,react 单向数据流的原理和简单模拟实现.结合上文中的代码,我们来进行这节面试题的讲解: react中的组件间通信. 那么,首先我们把看上文中的原生js代 ...
- Colorful Bricks CodeForces - 1081C ( 组合数学 或 DP )
On his free time, Chouti likes doing some housework. He has got one new task, paint some bricks in t ...
- js 简单弹框toast
新建toast.js文件 function Toast(msg,duration){ duration=isNaN(duration)?3000:duration; var m = document. ...
- 起步wex5 谷歌浏览器兼容性问题,CheckBox不显示
- call, apply 和 bind 方法
我们知道,每个函数在调用的时候会产生一个执行上下文环境,而这个执行上下文环境中包含了诸如 this 等等信息.即当我们调用函数的时候,内部的 this 已经明确地隐式绑定到了某一个对象上.如果我们希望 ...
- TCP/IP的四元组、五元组、七元组
TCP/IP的四元组.五元组.七元组 四元组是: 源IP地址.目的IP地址.源端口.目的端口 五元组是: 源IP地址.目的IP地址.协议号.源端口.目的端口 七元组是: 源IP地址.目的IP地址.协议 ...
- win10子系统 (linux for windows)打造python, pytorch开发环境
一.windows设置 0.启用windows子系统 控制面板--程序--启用或关闭windows功能--勾选适用于linux的Windows子系统 确定后会重启电脑 1.下载Ubuntu 在Micr ...
- Hibernate对应关系(了解)
布置的任务要用就写一下总结一下 hibernate有以下几种关系 一对一 一对多 多对一 多对多 首先这些对应关系是分单向和双向的 单向和双向有什么区别呢? 这个双向单向是面向对象的说法 意思就是你更 ...
- Sql知识点总结
一.数据库对象:表(table) 视图(view) 序列(sequence) 索引(index) 同义词(synonym) 视图(view) : 存储起来的 select 语句 create view ...
- SAM求多个串的最长公共子串
又学到一个\(SAM\)的新套路QvQ 思路 考虑用其中的一个串建个\(SAM\),然后用其他的串在上面匹配,匹配时更新答案 首先有一个全局变量\(len\),表示当前已匹配的长度.假设目前在点\(u ...