zoukankan      html  css  js  c++  java
  • SpringMvc工作流程

    springmvc核心是由DispatcherServlet控制调度请求地址、HandlerMapping和HandlerAdapter 达成一整套处理流程
    MVC是一种架构模式 --- 程序分层,分工合作,既相互独立,又协同工作

    SpringMVC的原理

    1、客户端请求在web.xml中配置好DispatcherServlet,并且接受一切HTTP请求(如*.do)
    2、当用户的请求被截获时,根据请求的URL生成一个处理对象,交给DispatcherServlet
    4、DispatcherServlet通过HandlerMapping的配置定位到特定的Controller(@Controller初始化默认配置 Handler)
    5、然后通过HandlerAdapter调用Handler中对应的业务处理方法(传过来的Handler与注册好的HandlerAdapter进行匹配)(方法级的拦截)
    6、业务处理方法返回一个逻辑视图名(View)和模型数据(ModelAndView),交给 DispatcherServlet
    7、DispatcherServlet调用ViewResolver解析出真实的视图对象,得到这个视图对象后,DispatcherServlet就使用Model对其进行渲染,将最后结果返回给用户

    DispatcherServlet有一个初始化方法initStrategies,它在WebApplicationContext初始化后执行,此时所有的组件Bean均已可用(方法通过反射机制查找并装配Spring容器中)
    Spring MVC也是基于Servlet
    @Controller注解很重要,Spring会在启动的时候扫描它,将其划入到Handler中去

    spring3.0.4以后版本提供了对静态资源文件的访问
    <mvc:resourcesmappingmvc:resourcesmapping="/images/**" location="/images/" />

    HandlerMapping接口的实现:
    BeanNameUrlHandlerMapping :通过对比url和bean的name找到对应的对象
    SimpleUrlHandlerMapping :也是直接配置url和对应bean,比BeanNameUrlHandlerMapping功能更多
    DefaultAnnotationHandlerMapping : 主要是针对注解配置@RequestMapping的,已过时
    RequestMappingHandlerMapping :取代了上面一个

    HandlerAdapter 接口实现:
    HttpRequestHandlerAdapter : 要求handler实现HttpRequestHandler接口,该接口的方法为void handleRequest(HttpServletRequest,HttpServletResponse)也就是 handler必须有一个handleRequest方法 
    SimpleControllerHandlerAdapter:要求handler实现Controller接口,该接口的方法为ModelAndView handleRequest(HttpServletRequest, HttpServletResponse)       
    AnnotationMethodHandlerAdapter :和上面的DefaultAnnotationHandlerMapping配对使用的,也已过时
    RequestMappingHandlerAdapter : 和上面的RequestMappingHandlerMapping配对使用,针对@RequestMapping

    主要工作有以下三项:
    1)截获符合特定格式的URL请求。
    2)初始化DispatcherServlet上下文对应的WebApplicationContext,并将其与业务层、持久化层的WebApplicationContext建立关联。
    3)初始化Spring MVC的各个组成组件,并装配到DispatcherServlet中。

    群交流(262200309)
  • 相关阅读:
    MYSQL主从同步故障一例及解决过程
    mysql主从复制
    I want a mysqldump –ignore-database option
    MYSQL使用mysqldump导出某个表的部分数据
    Linux MySQL主从复制(Replication)配置
    mysql mysqldump只导出表结构或只导出数据的实现方法
    Mysql导出表结构及表数据 mysqldump用法
    MVC 数据验证
    JS中call、apply的用法说明
    js 与或运算符 || && 妙用
  • 原文地址:https://www.cnblogs.com/webster1/p/8525009.html
Copyright © 2011-2022 走看看