spring mvc总结
Spring mvc是非常优秀的MVC框架,Spring3 MVC结构简单,应了那句话简单就是美,而且他强大不失灵活,性能也很优秀。他和Struts2的思想还是一样的都有一个前端拦截器进行请求转发,只不过Struts2是filter,spring mvc是servlet,但spring mvc非常简单不论是学习还是使用。
这里我列出spring的几个关键类和接口,
1、DispatcherServlet -- 前置控制器
DispatcherServlet是一个标准的Servlet,它的作用是首先组装整个spring mvc的各个组件,然后是接受和转发web请求到内部框架处理单元并控制整个请求流。
2、HandlerMapping接口 -- 处理请求的映射
保存请求url到具体的方法的映射关系,SpirngMVC的第一个扩展点,我们可以编写任意的HandlerMapping实现类,依据任何策略来决定一个web请求到HandlerExecutionChain对象的生成。
3、HandlerExecutionChain类 -- 一个执行链的封装
封装一次请求的执行链,主要是在真正的请求方法之前执行拦截器(即用户自定义的HandlerInterceptor)链。
4、HandlerInterceptor 接口--拦截器
HandlerInterceptor,是SpringMVC的第二个扩展点的暴露,通过自定义拦截器,我们可以在一个请求被真正处理之前、请求被处理但还没输出到响应中、请求已经被输出到响应中之后这三个时间点去做任何我们想要做的事情。
5、HandlerAdapter接口 – 适配器
真正调用Controller的地方,其实就是适配各种Controller。HandlerAdapter就是SpringMVC提供的第三个扩展点,你可以提供自己的实现类来处理handler对象。
6、Controller接口 -- 控制器
真正的业务逻辑执行的地方。
7、ViewResolver接口 – 视图解析器
完成从ModelAndView到真正的视图的过程,ViewResolver接口是在DispatcherServlet中进行调用的,当DispatcherServlet调用完Controller后,会得到一个ModelAndView对象,然后DispatcherServlet会调用render方法进行视图渲染。
8、View接口 – 视图
所有的数据,最后会作为一个Map对象传递到View实现类中的render方法,调用这个render方法,就完成了视图到响应的渲染。
9、LocalResolver接口 -- 国际化
LocaleResolver 是指用什么策略来检测请求是哪一种Local
10、HandlerExceptionResolver接口 --异常处理
11、ModelAndView类
封装了返回给用户的视图和数据。
如果要学习spring mvc 主要还是研究一下DispatcherServlet代码,他是整个spring mvc的核心,基本上以上的所有的类和接口的功能都会在DispatcherServlet得到体现。
Spring mvc的流程图: