SpringMVC架构介绍

MVC框架要做的事情?

1) 将url映射到java类或java类的方法

2) 封装用户提交的数据

3) 处理请求-调用相关的业务处理-封装响应数据

4) 将响应的数据进行渲染 jsp html

为什么要学习SpringMVC

性能较struts2好

简单、便捷、易学

天生和Spring无缝集成,使用Spring的IOC和AOP还有事务

使用约定由于配置

能够进行简单的junit测试

支持restful风格

异常处理

本地化、国际化

数据验证、类型转换等

拦截器

SpringMVC架构介绍

(1)SpringMVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。SpringMVC分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离使更容易进行定制。

(2)SpringMVC框架主要由DispatcherServlet、处理器映射、处理器(控制器)、视图解析器、视图组成

SpringMVC原理(工作机制)

请求-----控制器Controller(默认:DispatcherServlet)----请求委托-----给处理器(使用HandlerMapping:url映射类和HandlerAdapter:适配器。两个类结合映射到处理器类)----调用业务处理,处理器返回ModelAndView对象给核心控制器Controller(调用视图渲染器View,结果返回控制器)

详细原理:

(1)首先用户发出请求,请求到达SpringMVC的前端控制器(DispatcherServlet)

(2)前端控制器根据用户的url请求处理器映射器(handlerMapping)查找匹配该url的handler,并返回一个执行链,

(3)前端控制器再请求处理器适配器(handlerAdapter)调用相应的handler进行处理并返回给前端控制器一个modelAndView,

(4)前端控制器将返回的逻辑视图ModelAndView交给视图解析器(ViewResolver)进行解析

(5)最后前端控制器将返回的视图View进行渲染并把数据Model装入到request域,返回给用户。

 

SpringMVC的几种重要接口

DispatcherServlet接口

Spring提供的前端控制器,负责接收Http请求组织协调各组件。

所有的请求都经过它统一转发,在DispatcherServlet定位到Controller之前,需要借助HandlerMappingHandlerAdapter定位到具体的Controller

DispatcherServletSpringMVC的核心,它的本质是一个实现了J2EE标准中定义的HttpServlet通过在web.xml配置来实现对request的监听

主要完成以下:

1)截获符合特定格式的URL请求

(2)初始化DispatcherServlet上下文对应的WebApplicationContext,并将业务层、持久层的WebApplicationContext建立关联。

(3)初始化SpringMVC的各个组件,并装配到DispatcherServlet

HandlerMapping接口

将客户请求映射到Controller

Controller接口

需要为并发用户处理上述请求,因此实现Controller接口时,必须保证线程安全且可重用。

Controller将处理用户请求,与Struts Action扮演的角色一致,当Controller处理完用户请求时,返回ModelAndView(包含模型Model和视图View)对象给前端控制器DispatcherServlet

ViewResolver接口

Spring提供的视图解析器ViewResolver,在web应用中查找view对象并将结果渲染给客户

SpringMVC的整个运行体系,是由DispatcherServlet、组件和容器这三者共同构成的。

DispatcherServlet是逻辑处理的调度中心,组件则是被调度的操作对象。而容器在这里所起到的作用,是协助DispatcherServlet更好地对组件进行管理。这就相当于一个工厂招了一大批的工人,并把工人划分到一个统一的工作车间而便于管理。在工厂要进行生产活动时,只需要从工作车间把工人分派到相应的生产流水线上即可。

· DispatcherServlet - 容器—— DispatcherServlet对容器进行初始化

· 容器 - 组件—— 容器对组件进行全局管理

· DispatcherServlet - 组件—— DispatcherServlet对组件进行逻辑调用

DispatcherServlet初始化主线

对于DispatcherServlet的初始化主线,我们首先应该明确几个基本观点: 

· 初始化主线的驱动要素—— servlet中的init方法

· 初始化主线的执行次序—— HttpServletBean -> FrameworkServlet -> DispatcherServlet

· 初始化主线的操作对象 —— Spring容器(WebApplicationContext)和组件

参考链接:http://www.iteye.com/topic/1119598SpringMVC深度探险)

你可能感兴趣的:(spring)