spring实战 5.1 SpringMVC起步

一、跟踪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通常是驱动应用后的的中间层和数据层组件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值