SpringMVC框架
- Spring3.0 后全面超越 Struts2,成为最优秀的 MVC 框架
- Spring MVC 通过一套 MVC 注解,让 POJO 成为处理请求的控制器,而无须实现任何接口
- 支持 REST 风格的 URL 请求
- 采用了松散耦合可插拔组件结构,比其他 MVC 框架更具扩展性和灵活性
- 进行更简洁的Web层的开发; – 天生与Spring框架集成(如IoC容器、AOP等);
- 能简单的进行Web层的单元测试; – 支持灵活的URL到页面控制器的映射; – 非常容易与其他视图技术集成,如Velocity、FreeMarker等等,
SpringMVC框架客户端请求到服务器响应的过程
直接上图解释:
- 首先用户发送请求——>DispatcherServlet,前端控制器收到请求后自己不进行处理,而是委托给其他的解析器进
行处理,作为统一访问点,进行全局的流程控制; - DispatcherServlet——>HandlerMapping, HandlerMapping将会把请求映射为HandlerExecutionChain对象(包含一个Handler处理器(页面控制器)对象、多个HandlerInterceptor拦截器)对象,通过这种策略模式,很
容易添加新的映射策略; - DispatcherServlet——>HandlerAdapter,HandlerAdapter将会把处理器包装为适配器,从而支持多种类型的处理器,即适配器设计模式的应用,从而很容易支持很多类型的处理器;
- HandlerAdapter——>处理器功能处理方法的调用,HandlerAdapter将会根据适配的结果调用真正的处理器的功能处理方法,完成功能处理;并返回一个ModelAndView对象(包含模型数据、逻辑视图名);
- DispatcherServlet——> ViewResolver, ViewResolver将把逻辑视图名解析为具体的View,通过这种策略模式,很容易更换其他视图技术;
- DispatcherServlet——> View,View会根据传进来的Model模型数据进行渲染,此处的Model实际是一个Map数据结构,因此很容易支持其他视图技术;
- 由DispatcherServlet返回响应给用户,到此一个流程结束。
前端控制器DispatcherServlet(不需要程序员开发)
- 作用接收请求,响应结果,相当于转发器,中央处理器
- 有了DispatcherServlet减少了其它组件之间的耦合度
处理器映射器HandlerMapping(不需要程序员开发)
- 作用:根据请求的url查找Handler
- 处理器适配器HandlerAdapter
• 作用:按照特定规则(HandlerAdapter要求的规则)去执行Handler
处理器Handler(需要程序员开发)
- 注意:编写Handler时按照HandlerAdapter的要求去做,这样适配器才可以去正确执行Handler
视图解析器View resolver(不需要程序员开发)
- 作用:进行视图解析,根据逻辑视图名解析成真正的视图(view)
View(需要程序员开发jsp)
- View是一个接口,实现类支持不同的View类型(jsp、freemarker、pdf…)