SpringMVC学习03:初识SpringMVC
-
什么是SpringMVC:
-
SpringMVC是Spring Framework的一部分,是基于Java实现MVC的轻量级web框架;
-
官方文档:https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#spring-web
-
-
我们为什么要学习SpringMVC:
-
SpringMVC的特点:
-
轻量级,简单易学;
-
高效,基于请求响应的MVC框架;
-
与Spring兼容性好,无缝结合;
-
约定大于配置;
-
功能强大:RESTFUL,数据验证,格式化,本地化,主题等
-
简洁灵活
-
-
Spring的web框架围绕DispatcherServlet【调度Servlet】设计;
-
SpringMVC的核心:就是不用再手写Servlet了;
-
DispatcherServlet的作用是将请求分发到不同的处理器,从Spring2.5开始,使用java 5或者以上版本的用户可以采用基于注解形式进行开发,十分简洁;
-
正因为SpringMVC好,简单,便捷,易学,天生和Spring无缝集成(使用SpringIOC和AOP),使用约定大于配置,能够进行简单的Junit测试,支持RestFul风格,异常处理,本地化,国际化,数据验证,类型转换,拦截器等等
-
最重要的一点还是用的人多,使用的公司多【工作好找】
-
-
简易DispatcherServlet的流程图:
-
简易流程图:
-
DispatcherServlet的本质还是一个Servlet:
-
-
中心控制器:
-
Spring的web框架围绕DispatcherServlet设计,DispatcherServlet的作用是将请求分发到不同的处理器。
-
SpringMVC框架和其他框架一样,以请求为驱动,围绕一个中心Servlet分派请求及提供其他功能,DispatcherServlet本质也是一个Servlet(它继承自HttpServlet基类);
-
-
SpringMVC的原理:
-
1,当发起请求时被前端控制器拦截到请求;
-
2,根据请求参数生成代理请求,找到请求对应的实际控制器(HelloController);
-
3,实际控制器处理请求,创建模型数据,访问数据库;
-
4,返回模型数据;
-
5,将模型响应给前端控制器(DispatcherServlet);
-
6,前端控制器使用模型去渲染视图;
-
7,将结果返回给前端控制器;
-
8,前端控制器再将结果返回给请求者;
-
-
SpringMVC的执行原理:
-
流程图:
-
图为SpringMVC的一个完整的流程,实线表示SpringMVC框架提供的技术,不需要开发者实现,虚线表示需要开发者实现;
-
分析执行原理:
-
1,DispatcherServlet是前置端控制器,是整个SpringMVC的控制中心,用户发出请求后,DispatcherServlet接收请求并拦截请求;
我们假设请求的url为 : http://localhost:8080/SpringMVC/hello
-
如上的URL拆分为三部分:
-
http://localhost:8080服务器域名;
-
SpringMVC部署在服务器上的web站点;
-
hello表示控制器;
-
通过分析,如上的URL表示为:请求位于服务器localhost:8080上的SpringMVC站点的hello控制器;
-
2,HandleMapping为处理器映射,DispatcherServlet调用HandleMapping;HandleMapping根据请求url查找Handler;
-
3,HandlerExecution表示具体的Handler,其主要作用是根据url查找控制器,如上url被查找控制器为:hello;
-
4,HandlerExecution将解析后的信息传递给DispatcherServlet,如解析控制器映射等;
-
5,HandlerAdapter表示处理器适配器,其按照特定的规则去执行Handler;
-
6,Handler让具体的Controller执行;
-
7,Controller将具体的执行信息返回给HandlerAdapter,如ModelAndView;
-
8,HandlerAdapter将ModelAndView传递给DispatcherServlet;
-
9,DispatcherServlet调用视图解析器(ViewResolver)来解析HandlerAdapter传递的ModelAndView。
-
10,视图解析器ViewResolver将解析的逻辑视图名传给DispatcherServlet;
-
11,DispatcherServlet根据视图解析器解析的视图结果,调用具体的视图;
-
12,返回给用户;
-
-
-
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律