2

这里是修真院后端小课堂,每篇分享文从

【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】

八个方面深度解析后端知识/技能,本篇分享的是:

【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)它应是易于扩展的

 

今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~


用户bPbdDlb
422 声望36 粉丝