ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

spring实战 5.1 SpringMVC起步

2020-12-27 12:01:07  阅读:170  来源: 互联网

标签:5.1 SpringMVC spring bean 视图 controller Spring AbstractAnnotationConfigDispatche


一、跟踪Spring MVC的请求

在这里插入图片描述

  1. Spring MVC的所有请求都会通过一个前端控制器(front controller) Servlet。DispatcherServlet的任务是将请求发送给Spring MVC controller。

  2. DispatcherServlet会查询一个或多个处理器映射来确定请求的下一站在哪里,处理器映射会根据请求所携带的URL信息来进行决策。

  3. DispatcherServlet会将请求发送给选中的controller,到了控制器,请求会卸下负载并等待控制器处理这些信息。

  4. controller会将模型数据打包,并标示出用于渲染的视图名,连同模型一起发送回DispatcherServlet。

  5. DispatcherServlet会使用视图解析器(view resolver)来将逻辑视图名匹配为一个特定的视图实现。

  6. DispatcherServlet将模型数据数据交付给视图。

  7. 视图将使用模型数据渲染输出,这个输出会通过响应对象传递给客户端。

二、搭建Spring MVC

  1. 默认配置(web.xml)
    当DispatcherServlet被载入后,它将从xml文件载入Spring的应用上下文.xml文件的名字取决于DispatcherServlet的名字。如果DispatcherServlet的名字为example,那么它将从example-servlet.xml的文件中载入应用上下文。
<web-app>    
    <servlet>    
        <servlet-name>example</servlet-name>    
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>    
        <load-on-startup>1</load-on-startup>    
    </servlet>    
    <servlet-mapping>    
        <servlet-name>example</servlet-name>    
        <url-pattern>*.form</url-pattern>    
    </servlet-mapping>    
</web-app>
  1. 通过扩展AbstractAnnotationConfigDispatcherServletInitializer抽象类,可以将DispatcherServlet和Spring应用上下文配置到Servlet容器中。

    在servlet 3.0中,容器会在类路径中查找实现ServletContainerInitializer接口的类,如果能发现,就用它来配置servlet容器。

    Spring提供了这个接口的实现,名为SpringServletContainerInitializer,这个类又会查找WebApplicationInitizalier并将配置的任务交给他们实现。Spring 3.2中引入了WebApplicationInitizalier的基础实现,即AbstractAnnotationConfigDispatcherServletInitializer。

    但是AbstractAnnotationConfigDispatcherServletInitializer并不是直接实现WebApplicationInitializer接口的,它的实现路径如下:WebApplicationInitializer —> AbstractContextLoaderInitializer —> AbstractDispatcherServletInitializer —> AbstractAnnotationConfigDispatcherServletInitializer。

    在AbstractAnnotationConfigDispatcherServletInitializer中,给我们留下了三个抽象方法要求我们去实现:

    • protected String[] getServletMappings(){}
    • protected Class<?>[] getRootConfigClasses(){}
    • protected Class<?>[] getServletConfigClasses(){}

    getRootConfigClasses()返回的配置类中配置的bean会被加载到ContextLoaderListener创建的上下文中。getServletConfigClasses()返回的配置类中配置的bean会被加载到DispatcherServlet启动的时候创建的上下文。

    DispatcherServlet会加载包含web组件的bean,如controller,view resolver,以及处理器映射。而ContextLoaderListener要加载应用中的其他bean,这些bean通常是驱动应用后的的中间层和数据层组件。

标签:5.1,SpringMVC,spring,bean,视图,controller,Spring,AbstractAnnotationConfigDispatche
来源: https://blog.csdn.net/joooooooooooe/article/details/111773387

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有