专栏目录
- 1-Spring架构源码分析-Spring源码搭建
- 2-Spring架构源码分析-SSM框架说明
- 3-Spring架构源码分析-spring体系
- 4-Spring架构源码分析-Spring IOC机制设计思想和源码解读
- 5-Spring架构源码分析-Spring IOC之 Spring 统一资源加载策略
- 6-Spring架构源码分析-IoC 之加载 BeanDefinition
- 7-Spring架构源码分析-IoC 之注册 BeanDefinitions
- 8-Spring架构源码分析-IoC 之解析Bean:解析 import 标签
- 9-Spring架构源码分析-IoC 之解析 bean 标签:开启解析进程
- 10-Spring架构源码分析-IoC 之解析 bean标签:BeanDefinition
- 11-Spring架构源码分析-IoC 之注册解析的 BeanDefinitions
- 12-Spring架构源码分析-IoC 之装载 BeanDefinitions 总结
- 13-Spring架构源码分析-IoC 之开启 Bean 的加载
- 14-Spring架构源码分析-IoC 之加载 Bean:总结
- 15-Spring架构源码分析-Spring代理与AOP
- 16-Spring AOP源码分析-@EnableAspectJAutoProxy和AspectJAutoProxyRegistrar
- 17-Spring AOP源码分析-AnnotationAwareAspectJAutoProxyCreator
- 18-Spring AOP源码分析-AOP与BeanPostProcessor处理器
- 19-Spring AOP源码分析-代理对象调用目标方法
- 20-spring mvc设计思想和源码解读-spring mvc 功能特性
- 21-mvc 体系结构源码详解
- 22-Spring MVC源码跟踪
- 23-Spring事务源码分析
mvc 体系结构详解
spring mvc 框架解决的问题
从技术角度去思考 任何一个现存的框架都有其存在理由,而这个理由就是解决实际的问题。或者提供更好的解决问题的方案。spring mvc 它解决了什么问题呢?
- URL映射
- 表单参数映射
- 调用目标Control
- 数据模型映射
- 视图解析
- 异常处理
上术解决在spring mvc 中都体现在如下组件当中
- **HandlerMapping **'hændlə 'mæpɪŋ
- url与控制器的映射
- HandlerAdapter 'hændlə ə’dæptə
- 控制器执行适配器
- **ViewResolver **vjuː riː’zɒlvə
- 视图仓库
- view
- 具体解析视图
- **HandlerExceptionResolver **'hændlə ɪk’sepʃ(ə)n riː’zɒlvə
- 异常捕捕捉器
- HandlerInterceptor 'hændlə ɪntə’septə
- 拦截器
- 拦截器
mvc 各组件执行流程
HandlerMapping 详解
其为mvc 中url路径与Control对像的映射,DispatcherServlet 就是基于此组件来寻找对应的Control,如果找不到就会报 No mapping found for HTTP request with URI的异常。
HandlerMapping 接口结构分析:
HandlerMapping 作用是通过url找到对应的Handler ,但其HandlerMapping.getHandler()方法并不会直接返回Handler 对象,而是返回 HandlerExecutionChain 对象在通过 HandlerExecutionChain.getHandler() 返回最终的handler
常用实现类:
目前主流的三种mapping 如下:
- SimpleUrlHandlerMapping:基于手动配置 url 与control 映射
- BeanNameUrlHandlerMapping: 基于ioc name 中已 “/” 开头的Bean时行 注册至映射.
- RequestMappingHandlerMapping:基于@RequestMapping注解配置对应映射
SimpleUrlHandlerMapping
演示基于 SimpleUrlHandlerMapping配置映射。
编写mvc 文件
<!--需要放在前面<mvc:default-servlet-handler/>,不然不起作用-->
<!--SimpleUrlHandlerMapping只支持实现了Controller接口的bean,且还需要在其属性里进行url路径==>bean的映射,不支持@RequestMapping注解-->
<bean id="urlMappingController" class="com.naixue.web.UrlMappingController"/>
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">