zoukankan      html  css  js  c++  java
  • SpringMVC原理和框架

     SpringMVC工作原理

    在上一篇章[spring]01_环境配置 中,我们演示了一个简单的HelloWorld工程。

    本篇章重点讲述SpringMVC的基本工作原理,让大家进一步加深认识。

    工作流程描述

    (1)向服务器发送HTTP请求,请求被前端控制器 DispatcherServlet 捕获。

    (2)DispatcherServlet 根据 <servlet-name>-servlet.xml 中的配置对请求的URL进行解析,得到请求资源标识符(URI)。

    然后根据该URI,调用 HandlerMapping 获得该Handler配置的所有相关的对象(包括Handler对象以及Handler对象对应的拦截器),最后以 HandlerExecutionChain 对象的形式返回。

    (3)DispatcherServlet 根据获得的Handler,选择一个合适的 HandlerAdapter 。(附注:如果成功获得HandlerAdapter后,此时将开始执行拦截器的preHandler(...)方法)。

    (4)提取Request中的模型数据,填充Handler入参,开始执行Handler( Controller )。 在填充Handler的入参过程中,根据你的配置,Spring将帮你做一些额外的工作:

    • HttpMessageConveter: 将请求消息(如Json、xml等数据)转换成一个对象,将对象转换为指定的响应信息。
    • 数据转换:对请求消息进行数据转换。如String转换成Integer、Double等。
    • 数据根式化:对请求消息进行数据格式化。 如将字符串转换成格式化数字或格式化日期等。
    • 数据验证: 验证数据的有效性(长度、格式等),验证结果存储到BindingResult或Error中。

    (5)Handler( Controller )执行完成后,向 DispatcherServlet 返回一个 ModelAndView 对象;

    (6)根据返回的ModelAndView,选择一个适合的 ViewResolver (必须是已经注册到Spring容器中的ViewResolver)返回给DispatcherServlet。

    (7)ViewResolver 结合Model和View,来渲染视图。

    (8)视图负责将渲染结果返回给客户端。

    Spring框架

    Spring当前框架有20个jar包,它们可以分为几大模块:

    Core Container

    spring-core, spring-beans , 提供框架的基础部分,包括IoC和依赖注入特性。

    spring-context, 在spring-core, spring-beans基础上构建。它提供一种框架式的访问对象的方法。

    它也支持类似Java EE特性,例如:EJB,JMX和基本remoting。ApplicationContext接口是它的聚焦点。

    springcontext-support, 集成第三方库到Spring application context。

    spring-expression,提供一种强有力的表达语言在运行时来查询和操纵一个对象图。

    AOP 和 Instrumentation

    spring-aop,提供了对面向切面编程的丰富支持。

    spring-aspects,提供了对AspectJ的集成。

    spring-instrument,提供了对类instrumentation的支持和类加载器。

    spring-instrument-tomcat,包含了Spring对Tomcat的instrumentation代理。

    Messaging

    spring-messaging,包含spring的消息处理功能,如Message,MessageChannel,MessageHandler。

    Data Access / Integaration

    Data Access/Integration层包含了JDBC / ORM / OXM / JMS和Transaction模块。

    spring-jdbc,提供了一个JDBC抽象层。

    spring-tx,支持编程和声明式事务管理类。

    spring-orm,提供了流行的对象关系型映射API集,如JPA,JDO,Hibernate。

    spring-oxm,提供了一个抽象层以支持对象/XML 映射的实现,如JAXB,Castor,XMLBeans,JiBX 和 XStream.

    spring-jms,包含了生产和消费消息的功能。

    Web

    spring-web,提供了基本的面向web的功能,如多文件上传、使用Servlet监听器的Ioc容器的初始化。一个面向web的应用层上下文。

    spring-webmvc,包括MVC和REST web服务实现。

    spring-webmvc-portlet,提供在Protlet环境的MVC实现和spring-webmvc功能的镜像。

    Test

    spring-test,以Junit和TestNG来支持spring组件的单元测试和集成测试。

    参考资料

    http://blog.csdn.net/xtu_xiaoxin/article/details/8796499

    Spring官方文档——spring-framework-reference

  • 相关阅读:
    NGINX高并发配置
    一致性哈希算法——PHP实现代码
    TCP三次握手详解
    一致性哈希算法——转载来自张洋
    ngx_http_upstream_keepalive
    高情商人的十一种表现
    Nginx中的upstream轮询机制介绍
    主从读写分离----mysql-proxy0.8.5安装与配置
    分布式事务XA
    微信小程序API
  • 原文地址:https://www.cnblogs.com/wuxiang/p/4521816.html
Copyright © 2011-2022 走看看