zoukankan      html  css  js  c++  java
  • Spring MVC原理简要概括

    本篇简要讲解SpringMVC 的运作方式

    Spring 的 web 框架是一个设计良好的 web MVC 框架。MVC模式导致应用程序的不同方面(输入逻辑,业务逻辑和UI逻辑)分离,同时提供这些元素之间的松散耦合。使用spring框架,可以减少重复造轮子,提高对象的利用效率。

    • 模型(Model)封装了应用程序数据,通常它们将由POJO类组成。
    • 视图(View)负责渲染模型数据,一般来说它生成客户端浏览器可以解释HTML输出。
    • 控制器(Controller)负责处理用户请求并构建适当的模型,并将其传递给视图进行渲染。

    spring是运行机制是如何构建的呢?在spring web 的jar包(org.springframework.web.servlet)中,可以找到DispatcherServlet 类。xml配置文件的读取、解析,对象的创建、容器的生产、依赖注入、http请求处理等都需要通过这个类来完成。

    浏览DispatcherServlet 类可以发现初始化方法initStrategies里面依次调用了以下方法:

    /**
         * Initialize the strategy objects that this servlet uses.
         * <p>May be overridden in subclasses in order to initialize further strategy objects.
         */
        protected void initStrategies(ApplicationContext context) {
            initMultipartResolver(context);
            initLocaleResolver(context);
            initThemeResolver(context);
            initHandlerMappings(context);
            initHandlerAdapters(context);
            initHandlerExceptionResolvers(context);
            initRequestToViewNameTranslator(context);
            initViewResolvers(context);
            initFlashMapManager(context);
        }

    步骤可以简要理解为:

    1、init方法先读取xml配置信息,进行解析
    2、找到class文件路径,读取class文件
    3、通过反射技术创建对象
    4、将创建的对象保存到Ioc容器中(用Map存储)
    5、依赖注入(其实就是赋值,反射和动态代理技术是框架牛逼的地方)(@Resource)
    怎么注入,如同婚介,首先收集双方的信息,然后根据需求进行匹配。这里匹配的就是容器里的对象和所需要的对象。
    IOC spring遍历,解析每一个对象的依赖关系。
    --------------------------------------------------------
    注解方式调用的是jdk自带的注解方法
    --------------------------------------------------------
    6、JAVA请求如何处理
    通过@RequestMapping注解,在DispatcherServlet 的initHandlerMappings(context);方法里面处理。去扫描Controller里面的@RequestMapping注解。
    在doDispatcher收到来自网页的请求时,到存储注解URL的map里面去搜,如果没有,则返回404,有则进入到相应的controller里面去处理调用相应的service。

  • 相关阅读:
    HDU3718 Similarity 最大权值匹配
    HDU2853 Assignment 最大权值匹配+简直是太神了
    HDU3488 Tour 再次感受到KM的强大
    ZOJ2575 Full of Painting 动态规划
    ZOJ2571 Big String Outspread 模拟
    POJ3565 Ants 空间点对不相交匹配最小权值匹配
    Fleury(弗罗莱)算法求欧拉路径
    HDU2426 Interesting Housing Problem 最大权值匹配不能完成匹配的处理
    POJ1392 Ouroboros Snake 欧拉回路
    HDU2255 奔小康赚大钱 最大权值匹配
  • 原文地址:https://www.cnblogs.com/schoolbag/p/11264006.html
Copyright © 2011-2022 走看看