无风无影

   ::  :: 新随笔  ::  ::  :: 管理

SpringMvc简介

SpringMvc简介

  一、IOC容器与MVC框架

    由于Spring是一个IOC容器,因此与其他组件的集成十分简单,只要在被集成的组件上提供一个过滤组件,再由IOC容器统一管理即可。

      SpringMvc通过把Servlet,JSP,JavaBean,自定义标签和信息资源整合到一个框架中,从而提供了一个高可配置的MVC开发模式。

      SpringMvc结构图如下:

      

    Model:由系统状态BeanForm和JavaBean来构建

    View:由JSP和Spring提供的标签来实现

    Controller:负责流程控制。其中由DispatchServlet读取AplicationContext.xml,并通过HandlerMapping来寻找对应的Controller。

     其中DispatcherServlet是SpringMvc的核心组件,它作为前端框架的控制器,同时又负责框架中的其他组件协同完成对一个请求的处理。其实际上是一个Servlet,它继承自Servlet。

  SpringMVC 使用

  需要在 web.xml 中配置 DispatcherServlet 。并且需要配置 Spring 监听器ContextLoaderListener

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener
    </listener-class>
</listener>
<servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <!-- 如果不设置init-param标签,则必须在/WEB-INF/下创建xxx-servlet.xml文件,其中xxx是servlet-name中配置的名称。 -->
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring/springmvc-servlet.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

  二、具体执行流程

  组件说明:

  1.DispatcherServlet:前端控制器。用户请求到达前端控制器,它就相当于mvc模式中的c,dispatcherServlet是整个流程控制的中心,由它调用其它组件处理用户的请求,dispatcherServlet的存在降低了组件之间的耦合性,系统扩展性提高。由框架实现
  2.HandlerMapping:处理器映射器。HandlerMapping负责根据用户请求的url找到Handler即处理器,springmvc提供了不同的映射器实现不同的映射方式,根据一定的规则去查找,例如:xml配置方式,实现接口方式,注解方式等。由框架实现
  3.Handler:处理器。Handler 是继DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下Handler对具体的用户请求进行处理。由于Handler涉及到具体的用户业务请求,所以一般情况需要程序员根据业务需求开发Handler。
  4.HandlAdapter:处理器适配器。通过HandlerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。由框架实现。
  5.ModelAndView是springmvc的封装对象,将model和view封装在一起。
  6.ViewResolver:视图解析器。ViewResolver负责将处理结果生成View视图,ViewResolver首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户。
  7View:是springmvc的封装对象,是一个接口, springmvc框架提供了很多的View视图类型,包括:jspview,pdfview,jstlView、freemarkerView、pdfView等。一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展示给用户,需要由程序员根据业务需求开发具体的页面

              

 

       

  • SpringMVC执行流程:
  • 1.用户发送请求至前端控制器DispatcherServlet
  • 2.DispatcherServlet收到请求调用处理器映射器HandlerMapping。
  • 3.处理器映射器根据请求url找到具体的处理器,生成处理器执行链HandlerExecutionChain(包括处理器对象和处理器拦截器)一并返回给DispatcherServlet。
  • 4.DispatcherServlet根据处理器Handler获取处理器适配器HandlerAdapter执行HandlerAdapter处理一系列的操作,如:参数封装,数据格式转换,数据验证等操作
  • 5.执行处理器Handler(Controller,也叫页面控制器)。
  • 6.Handler执行完成返回ModelAndView
  • 7.HandlerAdapter将Handler执行结果ModelAndView返回到DispatcherServlet
  • 8.DispatcherServlet将ModelAndView传给ViewReslover视图解析器
  • 9.ViewReslover解析后返回具体View
  • 10.DispatcherServlet对View进行渲染视图(即将模型数据model填充至视图中)。
  • 11.DispatcherServlet响应用户。

    

    二、SpringMvc三大组件

      HandlerMapping处理器映射

      当接收到请求后,DispatchServlet将请求交给HandlerMapping处理器映射,让它检查请求并找到一个合适的HandlerExecutionChain,这个HandlerExecutionChain包含一个能处理请求的Controller。

      Spring内置了很多映射策略,其中常用的有几种:

        1、SimpleUrlHandlerMapping

        2、BeanNameUrlHandlerMapping

        3、拦截器

      Controller处理器

        1、AbstaractController

        2、MutipleActionController 可带method参数和Default默认参数

        3、BaseCommandController

        4、SimpleFormController

      ViewResolver试图解析器

        1、一般视图解析器

        2、Velocity模板解析器 能够通过模板生成任何文本内容。

        3、FreeMaker解析器 与Velocity解析器类似 多了一个格式化功能

posted on 2016-04-05 21:25  NWNS-无风无影  阅读(311)  评论(0)    收藏  举报