SpringMVC工做原理。

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

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

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

【SpringMVC工做原理。】程序员

你们好,我是IT修真院深圳分院第十三期学员王东东,一枚正直纯洁善良的JAVA程序员。web

 

今天给你们分享一下,修真院官网JAVA任务二,扩展思考中的知识点——SpringMVC工做原理。spring

1、背景介绍后端

SpringMVC是Spring的一个后续产品,其实就是Spring在原有基础上, 又提供了web应用的MVC模块,能够简单的把SpringMVC理解为是Spring的一个模块(相似AOP,IOC这样的模块),网络上常常会说SpringMVC和Spring无缝集成,其实SpringMVC就是Spring的一个子模块。设计模式

2、知识剖析网络

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对象,从而将相应结果渲染给客户。

 

3、常见问题

1.中文乱码问题

2.Controller返回值设置与jsp文件名不符,致使跳转失败

 

4、解决方案

1.value适合给变量注入属性,ref注入的是映射属性。

2.规范返回值,并在编写代码时进行测试。

5、编码实战

 

6、扩展思考

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者,若有不对敬请指出,谢谢!

 

7、参考文献

百度百科、博客园、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)它应是易于扩展的

 

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

相关文章
相关标签/搜索