SpringMvc入门到开发(二)之基本原理

所有资料打包下载:有需要的可以下载
http://download.csdn.net/download/xiaozhegaa/9907441

一:SpringMvc的框架原理
这里写图片描述

1 、用户发送请求至前端控制器DispatcherServlet
2 、DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3 、处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
4 、DispatcherServlet通过HandlerAdapter处理器适配器调用处理器
5 、执行处理器(Controller,也叫后端控制器)。
6 、Controller执行完成返回ModelAndView
7 、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
8 、DispatcherServlet将ModelAndView传给ViewReslover视图解析器
9 、ViewReslover解析后返回具体View
10、DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。
11、DispatcherServlet响应用户

【总结:】在上述的十一步骤中,需要用户开发的组件有handler、view。即是写处理器handler跟写视图view。其他的只需要配置一下就好了。个人建议上述十一个步骤结合图可以记忆一下。有助于理解使用Spring。当有人问到Spring是如何运行的?结合上述的东西大概就可以回答了。
【总结:】下面的知识点会比较枯燥,难懂。也可以不看。记住以下以下几句话就可以。在web.xml配置的DispatcherServlet执行的时候,会默认执行几个初始化的函数,例如适配器初始化函数,映射器初始化的函数。Spring首先从配置文件中,查找对应名称的Bean值,如果有就实例化了用户定义的类,不去实例化系统默认的类。如果找不到就去实例化系统默认提供的类。这也就能解释说:为什么适配器,映射器自己配置也可以,不配置也可以。

二:详细讲一下DispatcherServlet
1 如果你想要自己配置DispatcherServlet,如何知道dispatcherServlet的全路径呢?,这里教大家一个快捷键”Ctrl+Shift+T”。搜索DispatcherServlet(大小写不分)
这里写图片描述
这里写图片描述
2. 分析DispatcherServlet源码,了解前端控制器截获请求之后做了什么工作?又是如何进行分派的?【这个可以当作了解,这个算着重底层东西了】

    //DispatcherServlet.class类文件中
    //初始化的防范
    protected void initStrategies(ApplicationContext context) {
        //初始化上传文件解析器
        initMultipartResolver(context);
        //初始化本地化解析器
        initLocaleResolver(context);
        //初始化主题解析器
        initThemeResolver(context);
        //初始化处理器映射器,将请求映射到处理器
        initHandlerMappings(context);
        //初始化处理器适配器
        initHandlerAdapters(context);
        //初始化异常解析器,如果遇到异常就交给HandlerExceptionResolvers
        initHandlerExceptionResolvers(context);
        //初始化请求到视图的解析器
        initRequestToViewNameTranslator(context);
        //初始化视图解析器,通过ViewResolvers解析逻辑视图名到具体视图
        initViewResolvers(context);
        //初始化flash映射管理
        initFlashMapManager(context);
    }
    //注释自己写的,源码无注释

2. 1 以第一个初始化方法为例子,查看它都到底是怎么运行的!
这里写图片描述
【分析:】首先initStrategies方法在WebApplicationContext初始化之后自动执行,自动扫描上下文的Bean。根据特定的名称找到自定义的组件。例如名为:multipartResolver的Bean。若是找不到的话。则会在默认的org.springframework.web.servler路径下面的DispatcherServlet.properties配置文件找,该配置文件指定了DispatcherServlet所使用的默认组件
这里写图片描述
三:看一下DispatcherServlet.properties文件中的默认组件

/*注释全部写在里面*/
# Default implementation classes for DispatcherServlet's strategy interfaces.
# Used as fallback when no matching beans are found in the DispatcherServlet context.
# Not meant to be customized by application developers.
/*本地化解析器

*/
org.springframework.web.servlet.LocaleResolver=org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver
/*主题解析器

*/
org.springframework.web.servlet.ThemeResolver=org.springframework.web.servlet.theme.FixedThemeResolver
/*处理器映射器(共2个)
*/
org.springframework.web.servlet.HandlerMapping=org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,\
    org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping
/*处理器适配器(共3个)
*/
org.springframework.web.servlet.HandlerAdapter=org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter,\
    org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter,\
    org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter
/*异常处理器(共3个)
*/
org.springframework.web.servlet.HandlerExceptionResolver=org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerExceptionResolver,\
    org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver,\
    org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver
/*视图名称解析器
*/
org.springframework.web.servlet.RequestToViewNameTranslator=org.springframework.web.servlet.view.DefaultRequestToViewNameTranslator
/*视图解析器
*/
org.springframework.web.servlet.ViewResolver=org.springframework.web.servlet.view.InternalResourceViewResolver
/*flash映射管理器
*/
org.springframework.web.servlet.FlashMapManager=org.springframework.web.servlet.support.SessionFlashMapManager


/*如果开发者希望使用用户自定义类型的组件,则只需要在Spring配置文件中配置自定义的Bean组件即可。
如果DispatcherServlet发现上下文中有用户自定义的组件,则不会使用默认组件
*/

四:组件说明,对一些名词的解释
这里写图片描述
总结:说明:在springmvc的各个组件中,处理器映射器、处理器适配器、视图解析器称为springmvc的三大组件。
需要用户开发的组件有handler、view


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值