Spring3 MVC结构简单,应了那句话简单就是美,而且他强大不失灵活,易于扩展,性能也很优秀。他和Struts2的思想还是一样的都有一个前端拦截器进行请求转发,只不过Struts2是filter,spring mvc是servlet,但spring mvc非常简单不论是学习还是使用。
这是spring3 mvc的核心流程图:
SpirngMVC的第一个扩展点
HandlerMapping接口 -- 处理请求的映射
保存请求url到具体的方法的映射关系,,我们可以编写任意的HandlerMapping实现类,依据任何策略来决定一个web请求到HandlerExecutionChain对象的生成。
SpirngMVC的第二个扩展点
HandlerInterceptor 接口--拦截器
HandlerInterceptor,通过自定义拦截器,我们可以在一个请求被真正处理之前、请求被处理但还没输出到响应中、请求已经被输出到响应中之后这三个时间点去做任何我们想要做的事情。
SpirngMVC的第三个扩展点
HandlerAdapter接口 – 处理适配器
真正调用Controller的地方,其实就是适配各种Controller。HandlerAdapter就是你可以提供自己的实现类来处理handler对象。
SpirngMVC的第四个扩展点
HandlerMethodArgumentResolver -- 处理方法参数解释绑定器
调用controller方法之前,对方法参数进行解释绑定(实现WebArgumentResolver接口,spring3.1以后推荐使用HandlerMethodArgumentResolver);
SpirngMVC的第五个扩展点
Converter -- 类型转换器
参数绑定时springmvc会对从前端传来的参数自动转化成方法定义的参数的类型,我们可自己定义此接口来实现自己的类型的转换
SpirngMVC的第六个扩展点
ViewResolver接口 – 视图解析器
完成从ModelAndView到真正的视图的过程,ViewResolver接口是在DispatcherServlet中进行调用的,当DispatcherServlet调用完Controller后,会得到一个ModelAndView对象,然后DispatcherServlet会调用render方法进行视图渲染。
SpringMVC提供的第七个扩展点:
HandlerExceptionResolver接口 --异常处理
原文:http://blog.csdn.net/gufachongyang02/article/details/43836105