菜鸟之路——Spring MVC(二)再次深入

本文详细介绍了Spring MVC的核心组件,包括DispatcherServlet、HandlerMapping、HandlerAdapter、Controller、HandlerInterceptor和ViewResolver。同时,阐述了Spring MVC的启动过程,涉及ContextLoaderListener和DispatcherServlet的初始化。接着,解析了请求处理流程,展示了从客户端请求到返回响应的过程中,各组件如何协同工作。最后,提供了一个配置实例,包括目录结构和相关配置文件。
摘要由CSDN通过智能技术生成

Spring MVC 的核心类与接口:

- DispatcherServlet 前置控制器


- HandlerMapping 请求映射(到Controller)

      HandlerMapping接口的实现类:
         SimpleUrlHandlerMapping 通过配置文件,把一个URL映射到Controller
          DefaultAnnotationHandlerMapping 通过注解,把一个URL映射到Controller类上


- HandlerAdapter 请求映射(到Controller类的方法上)

      AnnotationMethodHandlerAdapter类,通过注解,把一个URL映射到Controller类的方法上 


- Controller 控制器

   由于我们使用了@Controller注解,添加了@Controller注解注解的类就可以担任控制器(Action)的职责,
所以我们并没有用到这个接口。
- HandlerIntercepter 拦截器

需要自己实现这个接口,来完成拦截的器的工作。
- ViewResolver 视图映射

   UrlBasedViewResolver类 通过配置文件,把一个视图名交给到一个View来处理
   InternalResourceViewResolver类,比上面的类,加入了JSTL的支持


- View 视图处理

启动过程

Spring MVC启动过程大致分为两个过程:
- ContextLoaderListener初始化,读取context-param中的contextConfigLocation指定的配置文件,创建ROOT Context,通过调用继承自ContextLoader的initWebApplicationContext方法实例化Spring IoC容器,并将此容器实例注册到ServletContext中。
- ContextLoaderListener初始化完毕后,开始初始化web.xml中配置的DispatcherServlet,DispatcherServlet的初始化又包括了视图管理器、异常处理器、映射管理等等。

/**
     * 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);
    }


ContextLoaderListener初始化的是 WebApplicationContext, 创建后可以从ServletContext中获取,WebApplicationContext是应用程序内共享的,最多只有一个,如果寻求简单也可以不初始化此容器。与之不同 DispatcherServlet可以有多个,并共享一个WebApplicationCon
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值