• spring mvc学习 总体概览


     

    spring mvc 设计概览

     
    springmvc处理http请求,主要是在web.xml中配置一个dispatcherservlet,然后由此进行拦截并处理请求返回相应,下面就针对源码大体记录下dispatcherservlet的初始化和请求的处理流程。
     

    具体的核心开发步骤:

    1、 DispatcherServlet在web.xml 中的部署描述,从而拦截请求到Spring Web MVC
    2、 HandlerMapping的配置,从而将请求映射到处理器,这里可以通过实现HandlerMapping接口来自己做映射关系,一般上也不用。
    3、 HandlerAdapter 的配置,从而支持多种类型的处理器,这里可以通过实现HandlerAdapter接口来自己做适配,复写handle方法,指定回调对应的handler的指定方法,当然,已经有注解的方式了,一般也不用自己扩展了。
    4、 ViewResolver 的配置,从而将逻辑视图名解析为具体视图技术
    5、处理器(页面控制器)的配置,从而进行功能处理
     

    dispatcherservlet启动和初始化

    他是个servlet,那么找到他的基类HttpServletBean的init方法,
    首先会吧在web.xml中配置的一些初始化参数加载设置一下,
    然后回去初始化dispatcherservlet持有的ioc容器,他会先去ServletContext中获取一个父ioc容器(webxml中配置了ContextLoaderListener的话,他在初始化的时候往servletcontext中放了一个,这个一般上都让他去加载项目用的bean,而dispatcherservlet持有的那个里面放的一版上都是和mvc相关的一些bean),这样在ioc容器getbean的时候,会先去容器的父容器中查找,如果找到了那么就找到,如果没找到,才去自容器中查找。

     
    接着就是mvc框架相关的一些初始化,代码在dispatcherservlet的initStrategies方法中
    初始化结束后,就会将配置好的handlermapping handleradpter 等都放在了dispatcherservlet中了,处理http请求使用的时候,就直接拿过来用了。
     
    这里在初始化的时候,其实有个默认的配置,比如handlermapping
     
    这个地方指向的就是一个资源文件,文件就放在spring-webmvc-xxx.jar里面,如下,里面已经默认配置了一些常用的,所以不用配置也可以使用。

     
     

    mvc处理http分发请求

    核心架构的具体流程步骤如下:
    跟源码http请求最终进入到了dispatcherservlet的doDispatch方法中。
    1、 首先用户发送请求——>DispatcherServlet,前端控制器收到请求后自己不进行处理,而是委托给其他的解析器进行
    处理,作为统一访问点,进行全局的流程控制;
    2、 DispatcherServlet——>HandlerMapping, HandlerMapping 将会把请求映射为HandlerExecutionChain 对象(包含一
     
    个Handler 处理器(页面控制器)对象、多个HandlerInterceptor 拦截器)对象,通过这种策略模式,很容易添加新
    的映射策略;
     
    3、 DispatcherServlet——>HandlerAdapter,HandlerAdapter 将会把处理器包装为适配器,从而支持多种类型的处理器,
    即适配器设计模式的应用,从而很容易支持很多类型的处理器;
    4、 HandlerAdapter——>处理器功能处理方法的调用,HandlerAdapter 将会根据适配的结果调用真正的处理器的功能处
    理方法,完成功能处理;并返回一个ModelAndView 对象(包含模型数据、逻辑视图名);
     
     
    5、 ModelAndView的逻辑视图名——> ViewResolver, ViewResolver 将把逻辑视图名解析为具体的View,通过这种策
    略模式,很容易更换其他视图技术;
    6、 View——>渲染,View会根据传进来的Model模型数据进行渲染,此处的Model实际是一个Map数据结构,因此
    很容易支持其他视图技术;
     
     
     
     
  • 相关阅读:
    java几种常用设计模式简单示例
    字符串常用方法
    File类常用方法
    如何在一个form表单中实现多个submit
    CC EAL认证
    ARQC与ARPC的生成和校验方法
    金融卡IC卡知识50问
    M(必备),R(需求),C(条件),O(可选)
    非接触IC卡中typeA卡和typeB卡的区别--总结,二者的调制方式和编码方式不同
    电子钱包和电子存折的区别
  • 原文地址:https://www.cnblogs.com/liouwei4083/p/6171819.html
Copyright © 2020-2023  润新知