1、SpringMVC 组件类有哪些?
在了解Spring MVC各组件之前,我们先来看一下Spring MVC框架结构:
从上图我们可以看到, Spring MVC主要包括:
1. 前端控制器组件(DispatcherServlet)
2. 处理器组件(Controller)
3. 处理器映射器组件(HandlerMapping)
4. 处理器适配器组件(HandlerAdapter)
5. 拦截器组件(HandlerInterceptor)
6. 视图解析器组件(ViewResolver)
7. 视图组件(View)
8. 数据转换组件(DataBinder)
9. 消息转换器组件(HttpMessageConverter)
整个处理过程从一个HTTP请求开始:
1、可发发起HTTP请求
2、DispatcherServlet接收到请求后,根据对应配置文件中配置的处理器映射,找到对应的处理器映射项(HandlerMapping、HandlerExecutionChain),根据配置的映射规则,找到对应的处理器(Handler)和拦截器
3、调用相应处理器处理器适配器
4、转换消息和数据,执行响应拦截器处理方法
5、调用相应处理器(Handler, 即Controller类)中的处理方法,处理该请求,处理器处理结束后会将一个ModelAndView类型的数据传给DispatcherServlet,这其中包含了处理结果的视图和视图中要使用的数据
6、DispatcherServlet根据得到的ModelAndView中的视图对象,找到一个合适的ViewResolver(视图解析器)
7、根据视图解析器的配置,DispatcherServlet将视图要显示的数据传给对应的视图
8、最后给浏览器构造一个HTTP响应。
1.1. 前端控制器组件(DispatcherServlet)
1.2. 处理器映射器组件处理器组件(Controller)
由于我们使用了@Controller注解,添加了@Controller注解注解的类就可以担任控制器(Action)的职责。
1.3. 处理器映射器组件(HandlerMapping)
SimpleUrlHandlerMapping 通过配置文件,把一个URL映射到Controller
DefaultAnnotationHandlerMapping 通过注解,把一个URL映射到Controller类上
1.4. 处理器适配器组件(HandlerAdapter)
AnnotationMethodHandlerAdapter类,通过注解,把一个URL映射到Controller类的方法上
1.5. 拦截器组件(HandlerInterceptor)
1.6.视图解析器组件(ViewResolver)
UrlBasedViewResolver类 通过配置文件,把一个视图名交给到一个View来处理
InternalResourceViewResolver类,比上面的类,加入了JSTL的支持
1.7.视图组件(View)
JstlView类
LocalResolver接口 HandlerExceptionResolver接口 –异常处理
SimpleMappingExceptionResolver实现类
ModelAndView类, 无图
1.8. 数据转换组件(DataBinder)
1.9. 消息转换器组件(HttpMessageConverter)
2.SpringMVC详细运行流程图