在线客服
扫描二维码
下载博学谷APP
扫描二维码
关注博学谷微信公众号
今天,让我们一起来看看SpringMVC的组件解析,主要内容有SpringMVC的执行流程、SpringMVC组件解析、SpringMVC注解解析和SpringMVC的XML配置解析。下面一起来看看详细内容吧~

1、SpringMVC的执行流程(参照下图)

(1)用户发送请求至前端控制器DispatcherServlet。
(2)DispatcherServlet收到请求调用HandlerMapping处理器映射器。
(3)处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
(4)DispatcherServlet调用HandlerAdapter处理器适配器。
(5)HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。
(6)Controller执行完成返回ModelAndView。
(7)HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。
(8)DispatcherServlet将ModelAndView传给ViewReslover视图解析器。
(9)ViewReslover解析后返回具体View。
(10)DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。DispatcherServlet响应用户。
2、SpringMVC组件解析
(1)前端控制器:DispatcherServlet
用户请求到达前端控制器,它就相当于 MVC 模式中的 C,DispatcherServlet 是整个流程控制的中心,由它调用其它组件处理用户的请求,DispatcherServlet 的存在降低了组件之间的耦合性。
(2)处理器映射器:HandlerMapping
HandlerMapping 负责根据用户请求找到 Handler 即处理器,SpringMVC 提供了不同的映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。
(3)处理器适配器:HandlerAdapter
通过 HandlerAdapter 对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。
(4)处理器:Handler
它就是我们开发中要编写的具体业务控制器。由 DispatcherServlet 把用户请求转发到 Handler。由Handler 对具体的用户请求进行处理。
(5)视图解析器:View Resolver
View Resolver 负责将处理结果生成 View 视图,View Resolver 首先根据逻辑视图名解析成物理视图名,即具体的页面地址,再生成 View 视图对象,最后对 View 进行渲染将处理结果通过页面展示给用户。
(6)视图:View
SpringMVC 框架提供了很多的 View 视图类型的支持,包括:jstlView、freemarkerView、pdfView等。最常用的视图就是 jsp。一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展示给用户,需要由程序员根据业务需求开发具体的页面。
3、SpringMVC注解解析
@RequestMapping
作用:用于建立请求 URL和处理请求方法之间的对应关系。
位置:类上,请求URL 的第一级访问目录。此处不写的话,就相当于应用的根目录方法上,请求 URL 的第二级访问目录,与类上的使用@ReqquestMapping标注的一级目录一起组成访问虚拟路径。
属性:value用于指定请求的URL。它和path属性的作用是一样的;method用于指定请求的方式;params用于指定限制请求参数的条件。它支持简单的表达式。要求请求参数的key和value必须和配置的一模一样。
例如:
params = {"accountName"},表示请求参数必须有accountName
params = {"moeny!100"},表示请求参数中money不能是100
(1)mvc命名空间引入

(2)组件扫描
SpringMVC基于Spring容器,所以在进行SpringMVC操作时,需要将Controller存储到Spring容器中,如果使用@Controller注解标注的话,就需要使用<context:component-scan base-package=“com.itheima.controller"/>进行组件扫描。
4、SpringMVC的XML配置解析
SpringMVC有默认组件配置,默认组件都是DispatcherServlet.properties配置文件中配置的,该配置文件地址org/springframework/web/servlet/DispatcherServlet.properties,该文件中配置了默认的视图解析器,如下:
org.springframework.web.servlet.ViewResolver=org.springframework.web.servlet.view.Inter
nalResourceViewResolver
(1)视图解析器
我们可以通过属性注入的方式修改视图的的前后缀
<!--配置内部资源视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
总结一下的知识要点,SpringMVC的相关组件包括前端控制器、处理器映射器、处理器适配器、处理器、视图解析器和视图。SpringMVC请求映射注解@RequestMapping,视图解析器配置:
REDIRECT_URL_PREFIX = "redirect:"
FORWARD_URL_PREFIX = "forward:"
prefix = "";
suffix = "";
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
什么是数据库?数据库基础入门知识整理
什么是数据库?倘若我们按照字面意思来分析:顾名思义,数据库应该是一个仓库,具体来说,是一个能够装取数据的仓库。听上去好像比较抽象,那么数据库又以什么方式存在呢?我们又该如何使用它呢?为了帮助刚刚入门编程的小伙伴掌握有关数据库的知识点,小编特意为大家总结整理数据库基础入门知识。下面让我们一起来好好认识一下数据库。
7850
2020-01-14 18:29:56
Java线上培训和线下培训的区别是什么?
目前,Java的培训方式大概分两种,即线上培训和线下培训。线下学习大家都很熟悉了,就是完完全全的脱产学习,一对多的面授课程。而随着在线教育的发展和普及,线上培训不再是简单的看视频学习了,它的教学服务也变得更加完备。要问两者的区别是什么?其实主要是教学方式的不同,在培训质量上谈不上孰优孰劣。下面我们可以好好来聊聊Java线上培训和线下培训这两种培训方式。
10065
2020-05-12 15:51:36
Java在线学习的效果怎么样?好不好?
Java作为目前市场最火的编程语言,它以较为高效的运行效率、跨平台能力、丰富的IDE成为软件公司的首选,在受到很多互联网公司的青睐的同时,也是许多人编程初学者的首选编程语言。而非科班的编程学习者想要掌握Java语言,除了参加线下的面授课程,现在还有了更多的一种选择——Java在线学习。那么Java在线学习的效果怎么样?好不好呢?下面我们就以博学谷的课程为例,来为大家详细的分析一下。
5601
2020-05-22 16:32:49
博学谷Java培训课程怎么样?
参加在线Java培训已经被越来越多的人所认可,通过在线培训的方式,既不影响正常的工作,还能不断提升自己的技能。选择一个好的学习平台能为自己的在线学习增加更多的保障。
6238
2020-07-29 09:53:19
微服务和分布式的区别什么?有什么特点?
微服务设计是为了不因为某个模块的升级和BUG影响现有的系统业务。微服务与分布式的细微差别是,微服务的应用不一定是分散在多个服务器上也可以是同一个服务器。分布式属于微服务,将模块拆分成一个独立的服务单元通过接口来实现数据的交互。分布式和微服的架构很相似,只是部署的方式不一样而已。
5162
2021-03-10 11:10:50
