SpringMVC工作原理。
这里是修真院后端小课堂,每篇分享文从 【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】 八个方面深度解析后端知识/技能,本篇分享的是: 【SpringMVC工作原理。】 大家好,我是IT修真院深圳分院第十三期学员王东东,一枚正直纯洁善良的JAVA程序员。 今天给大家分享一下,修真院官网JAVA任务二,扩展思考中的知识点——SpringMVC工作原理。 一、背景介绍 SpringMVC是Spring的一个后续产品,其实就是Spring在原有基础上, 又提供了web应用的MVC模块,可以简单的把SpringMVC理解为是Spring的一个模块(类似AOP,IOC这样的模块),网络上经常会说SpringMVC和Spring无缝集成,其实SpringMVC就是Spring的一个子模块。 二、知识剖析 1.MVC设计模式 MVC设计模式 M-Model 模型 V-View 视图(做界面的展示 jsp,html……) C-Controller 控制器(接收请求—>调用模型—>根据结果派发页面) 2.XML配置文件 主要有两个配置文件,等下结合代码来讲 ①web.xml文件,启动前端控制器 ②applacationContext.xml文件,对前端控制器的配置 3.SpringMVC流程 (1) Http请求:客户端请求提交到DispatcherServlet。 (2) 寻找处理器:由DispatcherServlet控制器查询一个或多个HandlerMapping,找到处理请求的Controller。 (3) 调用处理器:DispatcherServlet将请求提交到Controller。 (4)调用业务处理和返回结果:Controller调用业务逻辑处理后,返回ModelAndView。 (5)处理视图映射并返回模型: DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图。 (6) Http响应:视图负责将结果显示到客户端。 4.其中的几个组件 (1)DispatcherServlet接口:Spring提供的前端控制器,所有的请求都有经过它来统一分发。在DispatcherServlet将请求分发给Spring Controller之前,需要借助于Spring提供的HandlerMapping定位到具体的Controller。 (2)HandlerMapping接口:能够完成客户请求到Controller映射。 (3)Controller接口:需要为并发用户处理上述请求,处理完用户请求,则返回ModelAndView对象给DispatcherServlet前端控制器 (4)ViewResolver接口:Spring提供的视图解析器(ViewResolver)在Web应用中查找View对象,从而将相应结果渲染给客户。 三、常见问题 1.中文乱码问题 2.Controller返回值设置与jsp文件名不符,导致跳转失败 四、解决方案 1.value适合给变量注入属性,ref注入的是映射属性。 2.规范返回值,并在编写代码时进行测试。 五、编码实战 六、扩展思考 DispatcherServlet: 从宏观角度考虑,DispatcherServlet是整个Web应用的控制器;从微观考虑,Controller是单个Http请求处理过程中的控制器,而ModelAndView是Http请求过程中返回的模型(Model)和视图(View)。 它是整个Spring MVC的核心。它负责接收HTTP请求组织协调Spring MVC的各个组成部分。其主要工作有以下三项: (1)截获符合特定格式的URL请求。 (2)初始化DispatcherServlet上下文对应WebApplicationContext,并将其与业务层、持久化层的WebApplicationContext建立关联。 (3)初始化Spring MVC的各个组成组件,并装配到DispatcherServlet中。 注:本人初学java者,如有不对敬请指出,谢谢! 七、参考文献 百度百科、博客园、CSDN 八.更多讨论 1.运行mvn jetty run报错,提示多了一个文件,什么原因? spring-web和org.springframework.web.servlet中都有一个web-fragment.xml文件,导致jetty读取时报错。 2.传统三层架构是怎样的? 用一张图清晰地表达出传统三层的结构: 这里出BUG了,图片传不上来, 请复制下面的网址到DSCN上看...抱歉.. 3.Springmvc的优点都有哪些? (1)它是基于组件技术的。全部的应用对象,无论控制器和视图,还是业务对象之类的都是 java组件.并且和Spring提供的其他基础结构紧密集成. (2) 不依赖于Servlet API(目标虽是如此,但是在实现的时候确实是依赖于Servlet的) (3)可以任意使用各种视图技术,而不仅仅局限于JSP (4) 支持各种请求资源的映射策略 (5)它应是易于扩展的 今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~ 来源:CSDN? 原文:https://blog.csdn.net/wuxie__/article/details/83049170?utm_source=copy? PPT链接?视频链接 更多内容,可以加入IT交流群565734203与大家一起讨论交流 这里是技能树·IT修真院:,初学者转行到互联网的聚集地 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |