1.Springmvc是什么

是一个表现层框架,用于接受请求及参数,响应请求回显数据。

2.SpringMVC处理流程

SpringMVC流程

  1、  用户发送请求至前端控制器DispatcherServlet。

  2、  DispatcherServlet收到请求调用HandlerMapping处理器映射器。(根据请求路径映射到哪一个方法上@RequestMapping)

  3、  处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找具体要处理的那个方法),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。

  4、  DispatcherServlet调用HandlerAdapter处理器适配器(根据不同的处理器找到不同的处理器是配置去执行)。

  5、  HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。

  6、  Controller执行完成返回ModelAndView。

  7、  HandlerAdapter将controller执行结果响应封装到ModelAndView中返回给DispatcherServlet。

  8、  DispatcherServlet将ModelAndView传给ViewReslover视图解析器。

  9、  ViewReslover解析后返回具体View。

  10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。

  11、DispatcherServlet响应用户。

组件说明

以下组件通常使用框架提供实现:

  • DispatcherServlet:前端控制器

  用户请求到达前端控制器,它就相当于mvc模式中的c,dispatcherServlet是整个流程控制的中心,由它调用其它组件处理用户的请求,dispatcherServlet的存在降低了组件之间的耦合性。

  • HandlerMapping:处理器映射器

   HandlerMapping负责根据用户请求找到Handler即处理器,springmvc提供了不同的映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。

  • Handler:处理器

  Handler 是继DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下Handler对具体的用户请求进行处理。

  由于Handler涉及到具体的用户业务请求,所以一般情况需要程序员根据业务需求开发Handler。

  • HandlAdapter:处理器适配器

  通过HandlerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。

  • View Resolver:视图解析器

  springmvc框架提供了很多的View视图类型的支持,包括:jstlView、freemarkerView、pdfView等。我们最常用的视图就是jsp。

  一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展示给用户,需要由程序员根据业务需求开发具体的页面。

说明:在springmvc的各个组件中,处理器映射器、处理器适配器、视图解析器称为springmvc的三大组件。

需要用户开放的组件有handler、view

注解映射器和适配器

组件扫描器

  使用组件扫描器省去在spring容器配置每个controller类的繁琐。使用<context:component-scan>自动扫描标记@controller的控制器类,配置如下:

  <!-- 扫描controller注解,多个包中间使用半角逗号分隔 -->
<context:component-scanbase-package="cn.itcast.springmvc.controller.first"/>

RequestMappingHandlerMapping

  注解式处理器映射器,对类中标记@RequestMapping的方法进行映射,根基RequestMapping定义的Url匹配RequestMapping标记的方法,匹配成功返回HanderMethod对象给前端控制器,HandlerMethod  独享中封装url对应的方法Method。  

  从spring3.1版本开始,废除了DefaultAnnotationHandlerMapping的使用,推荐使用RequestMappingHandlerMapping完成注解式处理器映射。  

  注解描述:@RequestMapping:定义请求url到处理器功能方法的映射  标记在当前方法名上。

  RequestMappingHandlerAdapter

  注解式处理器适配器,对标记@ResquestMapping的方法进行适配。

  从spring3.1版本开始,废除了AnnotationMethodHandlerAdapter的使用,推荐使用RequestMappingHandlerAdapter完成注解式处理器适配。配置如下:

<!--注解适配器 -->
<beanclass="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>

 <mvc:annotation-driven>

  springmvc使用<mvc:annotation-driven>自动扫描加载RequestMappingHandlerMapping和RequestMappingHandlerAdapter,可用在springmvc.xml配置文件中使用<mvc:annotation-driven>替代注解处理器  和适配器的配置。版本3.1之后采用此方式进行映射配置 ,此配置将代替上述的   RequestMappingHandlerMappingRequestMappingHandlerAdapter,若有自定义配置则还需上述两个进行自定义配置。

 视图解析器

在springmvc.xml文件配置如下:

<beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver">
<propertyname="viewClass"value="org.springframework.web.servlet.view.JstlView"/>
     <propertyname="prefix"value="/WEB-INF/jsp/"/>
<propertyname="suffix"value=".jsp"/>
</bean>
  • InternalResourceViewResolver:支持JSP视图解析
  • viewClass:JstlView表示JSP模板页面需要使用JSTL标签库,所以classpath中必须包含jstl的相关jar 包。此属性可以不设置,默认为JstlView。
  • prefix 和suffix:查找视图页面的前缀和后缀,最终视图的址为:
  • 前缀+逻辑视图名+后缀,逻辑视图名需要在controller中返回ModelAndView指定,比如逻辑视图名为hello,则最终返回的jsp视图地址 “WEB-INF/jsp/hello.jsp”

springmvc与struts2不同

1、 springmvc的入口是一个servlet即前端控制器,而struts2入口是一个filter过虑器。

2、 springmvc是基于方法开发(一个url对应一个方法),请求参数传递到方法的形参,可以设计为单例或多例(建议单例),struts2是基于类开发,传递参数是通过类的属性,只能设计为多例。

3、 Struts采用值栈存储请求和响应的数据,通过OGNL存取数据, springmvc通过参数解析器是将request请求内容解析,并给方法形参赋值,将数据和视图封装成ModelAndView对象,最后又将ModelAndView中的模型数据通过reques域传输到页面。Jsp视图解析器默认使用jstl。

下一篇将简单抒写一个SpringMVC demo

  

  

 

SpringMVC深入浅出(一)的更多相关文章

  1. SSM-SpringMVC-04:SpringMVC深入浅出理解HandleMapping(源码刨析)

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 先从概念理解,从中央调度器,携带参数request,调度到HandleMapping处理器映射器,处理器映射器 ...

  2. 深入浅出Spring(五) SpringMVC

    上一篇深入浅出Spring(四) Spring实例分析的博文中,咱们已经可以了解Spring框架的运行原理和实现过程,接下来咱们继续讲解Spring的一个延伸产品——Spring MVC 1.Spri ...

  3. 深入浅出 SpringMVC - 2 提升篇

    前言: 本篇笔记是继 深入浅出 SpringMVC - 1 后的续篇,主要介绍了 SpringMVC 的实际小应用,包括 SpringMVC 的数据格式化.使用 JSR 303 验证标准 在 Spri ...

  4. Spring框架系列(5) - 深入浅出SpringMVC请求流程和案例

    前文我们介绍了Spring框架和Spring框架中最为重要的两个技术点(IOC和AOP),那我们如何更好的构建上层的应用呢(比如web 应用),这便是SpringMVC:Spring MVC是Spri ...

  5. 深入浅出 SpringMVC - 1

    前言: 本篇笔记是LZ在之前学习 SpringMVC 框架时所的记录,分两篇分享,此篇为基础篇,包括 SpringMVC 环境在 Eclipse 中的搭建,SpringMVC 的 HelloWorld ...

  6. 【SSH系列】深入浅出SpringMvc+入门Demo

    Spring MVC框架是有一个MVC框架,通过实现Model-View-Controller模式来很好地将数据.业务与展现进行分离.从这样一个角度来说,Spring MVC和Struts.Strut ...

  7. 深入浅出Struts2+Spring+Hibernate框架

    一.深入浅出Struts2 什么是Struts2? struts2是一种基于MVC的轻量级的WEB应用框架.有了这个框架我们就可以在这个框架的基础上做起,这样就大大的提高了我们的开发效率和质量,为公司 ...

  8. 深入浅出JMS(四)--Spring和ActiveMQ整合的完整实例

    第一篇博文深入浅出JMS(一)–JMS基本概念,我们介绍了JMS的两种消息模型:点对点和发布订阅模型,以及消息被消费的两个方式:同步和异步,JMS编程模型的对象,最后说了JMS的优点. 第二篇博文深入 ...

  9. [MVC] 深入浅出Spring MVC

    [MVC] 深入浅出Spring MVC 转:http://4925054.blog.51cto.com/4915054/1176855 Spring MVC主要包括以下要点: 1:由Dispatch ...

随机推荐

  1. LoadRunner 录制问题集锦

    关键词:各路录制小白汇集于此 虽然知道君对录制不感冒,但总是看到扎堆的人说这些问题,忍不住要站出来了. 百度虽好,帮助了很多小白,但关键是百度并没有排除错误内容,经过历史的几年传播,错的都快变对的了, ...

  2. 基于crypto++国产加密软件SM4的实现,顺带加了ase,base64

    唔,美国压制得越狠,各种替代产品就越能活. 本文分享SM4的一种快速实现与集成方式.             SM4(原名SMS4)是中华人民共和国政府采用的一种分组密码标准,由国家密码管理局于201 ...

  3. Java面向对象学习目录

    Java面向对象学习目录 以下为面向对象学习目录,有待补充的部分,我还会再后续的学习过程中加以补充与修改~ 一.面向对象编程思想 二.Java类及类中成员 属性 方法 构造器 代码块 内部类 面向对象 ...

  4. 【2018寒假集训Day 8】【最小生成树】Prim和Kruskal算法模板

    Luogu最小生成树模板题 Prim 原理与dijkstra几乎相同,每次找最优的点,用这个点去松弛未连接的点,也就是用这个点去与未连接的点连接. #include<cstdio> #in ...

  5. JavaScript笔记五

    1.条件分支语句 - switch语句 - 语法: switch(条件表达式){ case 表达式: 语句... break; case 表达式: 语句... break; case 表达式: 语句. ...

  6. Precision,Recall,F1的计算

    Precision又叫查准率,Recall又叫查全率.这两个指标共同衡量才能评价模型输出结果. TP: 预测为1(Positive),实际也为1(Truth-预测对了) TN: 预测为0(Negati ...

  7. Python爬虫之Selenium的常用方法

    1.单个元素的选取 find_element_by_id      通过标签属性Id查找元素 find_element_by_name      通过标签属性name查找元素 find_element ...

  8. Kibana笔记

    • 根据id查询 GET index_1/doc/1 • 全文检索 GET index_1/doc/_search GET index_1/doc/_search{ "query" ...

  9. Qt的安装

    由于之前用的vs2017是集成c++环境的,加之dev c++ 编码管理起来不是很方便,Mytc (win10不支持) ,所以转而向Qt 开发工具,以下是大概安装过程 下载地址 清华源:https:/ ...

  10. 【直播分享】实现LOL小地图英雄头像分析案例【华为云分享】

    直播介绍: 当今时代是人工智能高速发展的时代,深度学习已经渗透入经济.工业.军事.娱乐等各各领域的角落.近年来AlphaGo击败李世石更是使得人工智能技术家喻户晓.人工智能在游戏领域的开发依然不断进步 ...