首页 > 编程知识 正文

spring mvc原理,Spring MVC

时间:2023-05-05 16:37:17 阅读:160653 作者:1655

Spring框架

Spring框架是分层结构,由七个预定义的模块组成。 Spring模块构建在定义如何创建、配置和管理bean的核心容器之上。

组成Spring框架的每个模块(或组件)可以单独存在,也可以与其他一个或多个模块联合实现。 各模块的功能如下。

核心容器:核心容器提供Spring框架的基本功能。 核心容器的主要组件是BeanFactory,这是工厂模型的实现。 BeanFactory使用控制反转(IOC )模式将APP应用程序的配置和依赖性规范与实际APP应用程序代码隔离开来。Spring 上下文:Spring上下文是为Spring框架提供上下文信息的配置文件。 Spring上下文包含企业服务,如JNDI、EJB、电子邮件、国际化和校验和调度功能。Spring AOP:通过配置管理功能,Spring AOP模块将面向方面的编程功能直接集成到Spring框架中。 因此,由Spring框架管理的任何对象都可以很容易地与AOP对应。 Spring AOP模块为基于Spring的APP中的对象提供事务管理服务。 使用Spring AOP,可以将声明的事务管理集成到APP应用程序中,而不依赖于EJB组件。Spring DAO:JDBC DAO抽象层为管理异常处理和各种数据库供应商抛出的错误消息提供了有意义的异常分层结构。 异常层次结构简化了错误处理,大大减少了必须编写的异常代码数量,例如打开/关闭连接。 针对JDBC的Spring DAO异常遵循通用的DAO异常层次结构。Spring ORM:Spring框架插入多个ORM框架,并提供ORM的对象关系工具,如JDO、Hibernate和iBatis SQL Map。 所有这些都符合Spring的公共事务和DAO异常层次结构。Spring Web 模块:Web上下文模块构建在APP应用程序上下文模块之上,为基于Web的APP应用程序提供上下文。 因此,Spring框架支持与Jakarta Struts的集成。 使用Web模块还可以简化处理多个请求和将请求参数绑定到域对象的任务。Spring MVC 框架:MVC框架是用于构建web APP应用程序的全功能MVC实现。 策略接口使MVC框架具有高度可配置性,MVC提供了许多视图技术,包括JSP、Velocity、Tiles、iText和POI。 任何J2EE服务都可以使用Spring框架功能,大多数功能也适用于不受管理的环境。 Spring的核心是支持未绑定到特定J2EE服务器的可复用业务和数据访问对象。 毫无疑问,这些对象可以在不同的J2EE环境(Web或EJB )、独立APP应用程序和测试环境之间重用。

接下来,我们将详细介绍SpringMVC

SpringMVC流程

1、用户向前端控制器dispatcher servlet发送请求。

2、dispatcher servlet接收请求并调用HandlerMapping处理器映射器。

3、处理器映射程序找出具体的处理器(xml结构,可以根据注释检索),生成处理器对象和处理器拦截器(如果有),一起返回dispatcher servlet。

4、dispatcher servlet调用HandlerAdapter处理器适配器。

5、HandlerAdapter自适应地将特定处理器(Controller,也称为后端控制器)的作用转换为使用@Controller注释添加了@Controller注释的类是控制器

6、控制器运行完成并返回ModelAndView。

7、HandlerAdapter将控制器的执行结果ModelAndView返回到dispatcher servlet。

8、dispatcher servlet将ModelAndView传递给ViewReslover视图解析器。

9、ViewReslover分析后返回具体View。

10、dispatcher servlet根据View渲染视图。 也就是说,将模型数据嵌入视图中。

11、dispatcher servlet响应用户。

下图:

组件说明:

以下组件通常使用框架提供实现。

dispatcher servlet :作为前端控制器,控制其他组件的执行,统一调度,降低组件之间的耦合性,提高各组件的可扩展性。 HandlerMapping :不同的扩展处理器映射器实现不同的映射方式,包括配置文件方式、接口方式、注释方式等。 HandlAdapter :通过扩展处理器适配器支持更多类型的处理器。 ViewResolver :高级视图解析器支持更多类型的视图分析,如js

p、freemarker、pdf、excel等。组件:
1、前端控制器DispatcherServlet,由框架提供
作用:接收请求,响应结果,相当于转发器,中央处理器。有了dispatcherServlet减少了其它组件之间的耦合度。
用户请求到达前端控制器,它就相当于mvc模式中的c,dispatcherServlet是整个流程控制的中心,由它调用其它组件处理用户的请求,dispatcherServlet的存在降低了组件之间的耦合性。
2、处理器映射器HandlerMapping,由框架提供
作用:根据请求的url查找Handler
HandlerMapping负责根据用户请求找到Handler即处理器,springmvc提供了不同的映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。
3、处理器适配器HandlerAdapter
作用:按照特定规则(HandlerAdapter要求的规则)去执行Handler
通过HandlerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。
4、处理器Handler(工程师开发)
注意:编写Handler时按照HandlerAdapter的要求去做,这样适配器才可以去正确执行Handler
Handler 是继DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下Handler对具体的用户请求进行处理。
由于Handler涉及到具体的用户业务请求,所以一般情况需要工程师根据业务需求开发Handler。
5、视图解析器View resolver由框架提供
作用:进行视图解析,根据逻辑视图名解析成真正的视图(view)
View Resolver负责将处理结果生成View视图,View Resolver首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户。 springmvc框架提供了很多的View视图类型,包括:jstlView、freemarkerView、pdfView等。

一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展示给用户,需要由工程师根据业务需求开发具体的页面。

6、视图View(需要工程师开发jsp...)

View是一个接口,实现类支持不同的View类型(jsp、freemarker、pdf...)
核心架构的具体流程步骤如下:
1、首先用户发送请求——>DispatcherServlet,前端控制器收到请求后自己不进行处理,而是委托给其他的解析器进行处理,作为统一访问点,进行全局的流程控制;
2、DispatcherServlet——>HandlerMapping, HandlerMapping 将会把请求映射为HandlerExecutionChain 对象(包含一个Handler 处理器(页面控制器)对象、多个HandlerInterceptor 拦截器)对象,通过这种策略模式,很容易添加新的映射策略;
3、DispatcherServlet——>HandlerAdapter,HandlerAdapter 将会把处理器包装为适配器,从而支持多种类型的处理器,即适配器设计模式的应用,从而很容易支持很多类型的处理器;
4、HandlerAdapter——>处理器功能处理方法的调用,HandlerAdapter 将会根据适配的结果调用真正的处理器的功能处理方法,完成功能处理;并返回一个ModelAndView 对象(包含模型数据、逻辑视图名);

5、ModelAndView的逻辑视图名——> ViewResolver, ViewResolver 将把逻辑视图名解析为具体的View,通过这种策略模式,很容易更换其他视图技术;

6、View——>渲染,View会根据传进来的Model模型数据进行渲染,此处的Model实际是一个Map数据结构,因此很容易支持其他视图技术;

7、返回控制权给DispatcherServlet,由DispatcherServlet返回响应给用户,到此一个流程结束。

下边两个组件通常情况下需要开发:
Handler:处理器,即后端控制器用controller表示。

View:视图,即展示给用户的界面,视图中通常需要标签语言展示模型数据。


具体详细细节,可以看:点击打开链接

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。