当前位置:首页 > 生活经验 > 正文内容

springmvc工作原理(SpringMVC工作原理)

飞龙2023年01月27日 02:00:09生活经验103

今天给各位分享springmvc工作原理的知识,其中也会对SpringMVC工作原理进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站

文章目录一览:

SpringMVC的工作原理是什么样的,跟Spring的关系是怎么样的?

springMVC的工作原理如下:

springmvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作。

DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller.

DispatcherServlet请请求提交到目标Controller

Controller进行业务逻辑处理后,会返回一个ModelAndView

Dispathcher查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象

视图对象负责渲染返回给客户端。

与spring的关系:

 Spring 框架是一个分层架构,由 7 个定义良好的模块组成。Spring模块构建在核心容器之上,核心容器定义了创建、配置和管理bean 的方式。

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

核心容器:核心容器提供 Spring框架的基本功能。核心容器的主要组件是BeanFactory,它是工厂模式的实现。BeanFactory使用控制反转(IOC)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。 

Spring 上下文:Spring 上下文是一个配置文件,向 Spring框架提供上下文信息。Spring上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。 

Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了Spring框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为基于Spring的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖EJB组件,就可以将声明性事务管理集成到应用程序中。 

Spring  DAO:JDBCDAO抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。SpringDAO的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。 

Spring ORM:Spring 框架插入了若干个 ORM 框架,从而提供了 ORM的对象关系工具,其中包括JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和DAO异常层次结构。 

Spring Web 模块:Web 上下文模块建立在应用程序上下文模块之上,为基于Web的应用程序提供了上下文。所以,Spring 框架支持与 Jakarta Struts的集成。Web模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。 

Spring MVC 框架:MVC 框架是一个全功能的构建 Web 应用程序的 MVC实现。通过策略接口,MVC框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括JSP、Velocity、Tiles、iText 和 POI。 

Spring 框架的功能可以用在任何 J2EE服务器中,大多数功能也适用于不受管理的环境。Spring的核心要点是:支持不绑定到特定 J2EE服务的可重用业务和数据访问对象。毫无疑问,这样的对象可以在不同 J2EE 环境 (Web或EJB)、独立应用程序、测试环境之间重用。

由此可以看出:Spring MVC 框架只是spring的一个子模块,用在java ee工程的web层组件。

spring mvc的工作原理是什么?

spring mvc的工作原理是:提供了构建 Web 应用程序的全功能 MVC 模块。使用Spring可插入的MVC架构,可以选择是使用内置的Spring Web框架还是Struts这样的Web框架。通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术。

例如 JavaServer Pages(JSP)技术、Velocity、Tiles、iText 和 POI。Spring MVC框架并不知道使用的视图,所以不会强迫您只使用 JSP 技术。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。

客户端请求提交到DispatcherServlet:

由DispatcherServlet控制器查询一个或多个HandlerMapping,找到处理请求的Controller。

DispatcherServlet将请求提交到Controller。

Controller调用业务逻辑处理后,返回ModelAndView。

DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图。

视图负责将结果显示到客户端。

详解Spring mvc工作原理及源码分析

Model 模型层 (javaBean组件 = 领域模型(javaBean) + 业务层 + 持久层)

View 视图层( html、jsp…)

Controller 控制层(委托模型层进行数据处理)

springmvc是一个web层mvc框架,类似struts2。

springmvc是spring的部分,其实就是spring在原有基础上,又提供了web应用的mvc模块。

实现机制:

struts2是基于过滤器实现的。

springmvc是基于servlet实现的。

运行速度:

因为过滤器底层是servlet,所以springmvc的运行速度会稍微比structs2快。

struts2是多例的

springmvc单例的

参数封装:

struts2参数封装是基于属性进行封装。

springmvc是基于方法封装。颗粒度更细。

⑴ 用户发送请求至DispatcherServlet。

⑵ DispatcherServlet收到请求调用HandlerMapping查询具体的Handler。

⑶ HandlerMapping找到具体的处理器(具体配置的是哪个处理器的实现类),生成处理器对象及处理器拦截器(HandlerExcutorChain包含了Handler以及拦截器集合)返回给DispatcherServlet。

⑷ DispatcherServlet接收到HandlerMapping返回的HandlerExcutorChain后,调用HandlerAdapter请求执行具体的Handler(Controller)。

⑸ HandlerAdapter经过适配调用具体的Handler(Controller即后端控制器)。

⑹ Controller执行完成返回ModelAndView(其中包含逻辑视图和数据)给HandlerAdaptor。

⑺ HandlerAdaptor再将ModelAndView返回给DispatcherServlet。

⑻ DispatcherServlet请求视图解析器ViewReslover解析ModelAndView。

⑼ ViewReslover解析后返回具体View(物理视图)到DispatcherServlet。

⑽ DispatcherServlet请求渲染视图(即将模型数据填充至视图中) 根据View进行渲染视图。

⑾ 将渲染后的视图返回给DispatcherServlet。

⑿ DispatcherServlet将响应结果返回给用户。

(1)前端控制器DispatcherServlet(配置即可)

功能:中央处理器,接收请求,自己不做任何处理,而是将请求发送给其他组件进行处理。DispatcherServlet 是整个流程的控制中心。

(2)处理器映射器HandlerMapping(配置即可)

功能:根据DispatcherServlet发送的url请求路径查找Handler

常见的处理器映射器:BeanNameUrlHandlerMapping,SimpleUrlHandlerMapping,

ControllerClassNameHandlerMapping,DefaultAnnotationHandlerMapping(不建议使用)

(3)处理器适配器HandlerAdapter(配置即可)

功能:按照特定规则(HandlerAdapter要求的规则)去执行Handler。

通过HandlerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展多个适配器对更多类型的处理器进行执行。

常见的处理器适配器:HttpRequestHandlerAdapter,SimpleControllerHandlerAdapter,AnnotationMethodHandlerAdapter

(4)处理器Handler即Controller(程序猿编写)

功能:编写Handler时按照HandlerAdapter的要求去做,这样适配器才可以去正确执行Handler。

(5)视图解析器ViewReslover(配置即可)

功能:进行视图解析,根据逻辑视图名解析成真正的视图。

ViewResolver负责将处理结果生成View视图,ViewResolver首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户。

springmvc框架提供了多种View视图类型,如:jstlView、freemarkerView、pdfView...

(6)视图View(程序猿编写)

View是一个接口,实现类支持不同的View类型(jsp、freemarker、pdf...)

引入相关依赖:spring的基本包、springmvc需要的spring-webmvc,日志相关的slf4j-log4j12,jsp相关的jstl、servlet-api、jsp-api。

因为DispatcherServlet本身就是一个Servlet,所以需要在web.xml配置。

一、使用默认加载springmvc配置文件的方式,必须按照以下规范:

①命名规则:-servlet.xml ==== springmvc-servlet.xml

②路径规则:-servlet.xml必须放在WEB-INF下边

二、如果要不按照默认加载位置,则需要在web.xml中通过标签来指定springmvc配置文件的加载路径,如上图所示。

将自定义的 Controller 处理器配置到 spring 容器中交由 spring 容器来管理,因为这里的 springmvc.xml 配置文件中处理器映射器配置的是 BeanNameUrlHandlerMapping ,根据名字可知这个处理器映射器是根据 bean (自定义Controller) 的 name 属性值url去寻找执行类 Handler(Controller) , 所以bean的name属性值即是要和用户发送的请求路径匹配的 url 。

根据视图解析路径:WEB-INF/jsps/index.jsp

功能:根据bean(自定义Controller)的name属性的url去寻找执行类Controller。

功能:自定义的处理器(Controller)实现了Controller接口时,适配器就会执行Controller的具体方法。

SimpleControllerHandlerAdapter会自动判断自定义的处理器(Controller)是否实现了Controller接口,如果是,它将会自动调用处理器的handleRequest方法。

Controller接口中有一个方法叫handleRequest,也就是处理器方法。

因此,自定义的Controller要想被调用就必须实现Controller接口,重写Controller接口中的处理器方法。

关于springmvc工作原理和SpringMVC工作原理的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

扫描二维码推送至手机访问。

版权声明:本文由飞龙小词经验网发布,如需转载请注明出处。

本文链接:https://www.feilongsi.com/shenhuo/6251.html

分享给朋友:

“springmvc工作原理(SpringMVC工作原理)” 的相关文章

为什么我手机连网效果这么差(手机连网不好怎么回事)

为什么我手机连网效果这么差(手机连网不好怎么回事)

当朋友们看到这个文章时想必是想要了解为什么我手机连网效果这么差相关的知识,这里同时多从个角度为大家介绍手机连网不好怎么回事相应的内容。 文章目录一览: 1、为什么我手机连无线网很卡? 2、为什么手机连无线网网速很慢 3、手机信号太差是为什么? 4、手机网络信号很差为什么? 5、手机有...

冰箱上面结冰怎么回事(冰箱上面结冰怎么回事?)

冰箱上面结冰怎么回事(冰箱上面结冰怎么回事?)

有很多朋友不知道冰箱上面结冰怎么回事要如何操作,今天为大家整理了很多冰箱上面结冰怎么回事?相关的答案,组成一篇内容丰富的文章,希望能到您 文章目录一览: 1、冰箱结冰是怎么回事 2、冰箱冷藏上面结冰是怎么回事? 3、冰箱总结冰是怎么回事呢? 4、冰箱上面结冰怎么回事  冰箱上层结冰怎么办...

非正式会谈第六季什么时候开播(非正式会谈第五季什么时候播出)

非正式会谈第六季什么时候开播(非正式会谈第五季什么时候播出)

今天和朋友们分享非正式会谈第六季什么时候开播相关的知识,相信大家通过本文介绍也能对非正式会谈第五季什么时候播出有自已的收获和理解。自己轻松搞问题。文章目录一览: 1、非正式会谈几季了 2、非正式会谈播放时间 3、《非正式会谈》居然回归了,有什么新变化?你对老成员还有印象吗? 非正式会谈几季...

昭陵六骏浮雕中具有情节性的作品是什么?(昭陵六骏浮雕中第一次使用了什么手法)

昭陵六骏浮雕中具有情节性的作品是什么?(昭陵六骏浮雕中第一次使用了什么手法)

当朋友们看到这个文章时想必是想要了解昭陵六骏浮雕中具有情节性的作品是什么?相关的知识,这里同时多从个角度为大家介绍昭陵六骏浮雕中第一次使用了什么手法相应的内容。 文章目录一览: 1、西南师范大学出版社中国美术史的笔记 2、昭陵六骏图的作品介绍 3、为什么说飒露紫是 具有情节性的 4、小学...

新疆医科大学是985还是211(新疆大学是985还是211?)

新疆医科大学是985还是211(新疆大学是985还是211?)

今天给各位分享新疆医科大学是985还是211的知识,其中也会对新疆大学是985还是211?进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站 文章目录一览: 1、新疆医科大学是985院校还是211院校? 2、新疆医科大学读博士难吗 3、新疆医科大学校长什么级别 4、新疆医科大学是2...

胡沈员介绍的简单介绍

胡沈员介绍的简单介绍

有很多朋友不知道胡沈员介绍要如何操作,今天为大家整理了很多相关的答案,组成一篇内容丰富的文章,希望能到您 文章目录一览: 1、舞蹈风暴第一季风暴之子 舞蹈风暴第一季介绍 2、独家:《舞蹈风暴2》昨晚首播,我想用这三个词来评价 3、《舞蹈风暴》四杆选手介绍 四杆选手个人资料介绍 4、胡沈员...