什么是SpringMVC
1、概述
Spring MVC是Spring Framework的一部分,是基于Java实现MVC的轻量级Web框架。
查看官方文档:https://docs.spring.io/spring-framework/docs
我们为什么要学习SpringMVC呢?
Spring MVC的特点:
Spring的web框架围绕dispatcherServlet[调度Servlet]设计。
dispatcherServlet的作用是将请求分发到不同的处理器。从Spring 2.5开始,使用Java 5或者以上版本的用户可以采用基于注解形式进行开发,十分简洁。
正因为SpringMVC好,简单、便捷、易学,天生与Spring无缝结合(使用SpringIoC和Aop),使用约定优于配置。能够进行简单的junit测试。支持Restful风格。异常处理,本地化,国际化,数据验证,类型转换,拦截器 等等......所以我们要学习。
最重要的一点还是用的人多,使用的公司多。
2、中心控制器
Spring的web框架围绕dispatcherServlet设计。dispatcherServlet的作用是将请求分发到不同的处理器。从Spring 2.5开始,使用Java 5或以上版本的用户可以采用基于注解的controller声明方式。
Spring MVC框架像许多其它MVC框架一样,以请求为驱动,围绕一个中心Servlet分派请求及提供其它功能,dispatcherServlet是一个实际的Servlet(它继承自HttpServlet基类)。
SpringMVC的原理如下图所示:
前端控制器:dispatcherServlet
页面控制器:Controller接口实现类,或注释@Controller的类
3、SpringMVC执行原理
图为SpringMVC的一个较完整的流程图,实线表示SpringMVC框架提供的技术,不需要开发者实现,虚线表示需要开发者实现。
简要分析执行流程
-
dispatcherServlet表示前置控制器,是整个SpringMVC的控制中心。用户发出请求,dispatcherServlet接收请求并拦截请求。
我们假设请求的url为:
http://loaclhost:8080/SpringMVC/hello
如上url拆分成三部分:
http://localhost:8080
服务器域名SpringMVC
部署在服务器上的web站点hello
表示控制器 -
HandlerMapping为处理器映射器(两种类型、三种实现)。根据url的
/hello
去寻找具体的handler(handler就是Controller对象)。两种类型:
org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping rg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping
三种实现:
- 实现Controller接口
- 实现HttpRequestHandler接口
- @Controller注解
-
HandlerExecution(JDK1.8是HandlerExecutionChain)表示具体的handler
-
把handler返回给dispatcherServlet
-
HandlerAdapter(接口)表示处理器适配器,根据handler找到具体的HandlerAdapter的实现类
-
用HandlerAdapter去执行Controller中的方法
-
Controller将具体的执行信息返回给HandlerAdapter,如ModelAndView。
-
HandlerAdapter将ModelAndView传递给dispatcherServlet。
-
dispatcherServlet调用视图解析器(ViewResolver)来解析HandlerAdapter传递的ModelAndView。
-
视图解析器将解析后的ModelAndView传给dispatcherServlet。
-
spatcherServlet根据视图解析器解析的视图结果,调用具体的视图。
-
最终视图呈现给用户。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。