SpringMVC(二)原理

目录

一、配置Maven(为了提升速度)

二、流程&&原理

SpringMVC中心控制器

完整流程:


一、配置Maven(为了提升速度)

SpringMVC(一)配置-CSDN博客的配置中,导入Maven会非常慢,这是因为里面的一些jar包来自国外。所以在此手动配置一下maven:

1.自行下载apache-maven后将其解压缩到D盘

2.在D:盘目录下创建一个新的空文件夹,命名为maven:

3.点开项目的【文件】-->【设置】(这里的idea是中文版本的,正常版本应该是【File】-->【setting】):

4.找到构建、执行、部署下面的构建工具中的Maven:

5.点击改变Maven的主路径,选择已经下载好的D:盘apache-maven,然后点击确定。

6.点击确定成功后,这里就会自动更新成我们创建的maven空文件夹:

7.点击重写,选择D:盘apache-maven下conf下的logging下的setting.xml,点击确定。

8.完成这些后点击大的确定,回到pom.xml文件刷新,以后再导入依赖或是配置maven文件就更快了。

二、流程&&原理

现在在SpringMVC(一)配置-CSDN博客实现的基础上看一下实现的原理。

首先回忆一下servlet是如何处理合同http请求的:

http请求打过来,随后根据通过web.xml文件(在eclipse中被注解代替了--这两者本质是一种功能),去到达不同的地址。

而在SpringMVC框架中只是重新使用web.xml文件实现这个功能,在servlet中,web.xml需要去一一映射,但是在SpringMVC框架中,web.xml文件做了一个配置:

通过dispatcherServlet去实现自动请求分发,"/"表示所有,即所有的请求都会打到dispatcherServlet中。

SpringMVC中心控制器

Spring的web框架围绕DispatcherServlet 【servlet调度】设计

DispatcherServlet的作用是将请求发送到不同的处理器

入门案例的执行流程

  1. 当启动Tomcat服务器的时候,因为配置了load-on-startup标签,所以会创建DispatcherServlet对象,就会加载springmvc.xml配置文件

  2. 开启了注解扫描,那么HelloController对象就会被创建

  3. 从index.jsp发送请求,请求会先到达DispatcherServlet核心控制器,根据配置@RequestMapping注解找到

执行的具体方法

  1. 根据执行方法的返回值,再根据配置的视图解析器,去指定的目录下查找指定名称的JSP文件

  2. Tomcat服务器渲染页面,做出响应

SpringMVC官方提供图形

【这张图⭐--面试】

入门案例中的组件分析

  1. 前端控制器(DispatcherServlet)

  2. 处理器映射器(HandlerMapping)

  3. 处理器(Handler)----一个又一个的方法

  4. 处理器适配器(HandlAdapter)

  5. 视图解析器(View Resolver)

  6. 视图(View)

就着springmvc.xml文件分析一下:

①扫描的其实就是servlet文件,现在打开HelloController看一眼:

1.Spring创建对象的方式

2.@RequestMapping地址映射

没有标注的时候默认是GET,当然可以通过下面这种方式指定具体是哪个方法。

3.这里返回"suc",肯定不是一串字符串这么简单,这里面对应的跟显然是前端界面:

那么为什么这里可以以这种格式书写呢?

这就牵扯到springmvc.xml文件③这一部分了:

前缀是/html/,后缀是.html,所以return时,返回的其实是,/html/suc.html,即一个前端界面。

完整流程:

运行项目时,首先会执行到web.xml文件中的:

即去到index.html文件:

也就是这里:

当点击入门程序时,就会触发这个请求;现在来看这个请求出自哪里:
前面已经讲过了,这里的return实际上是return了一个html目录下的suc.html文件。

同时从hello.do到return的步骤,这里也是这一步操作(至于为什么不直接到达Handler而是通过处理器适配器---这里可以添加拦截器):

这里来到suc.html文件,里面有元素显示:

现在来看这里面的msg究竟承载着什么内容,这里将再次回到HelloController文件,可以看见这里面存放的内容是"hello,SpringMVC"。

也就是点击入门程序后,显示(可以看见这里显示的请求路径是"locahost....../hello.do"):

至此,就是目前一个基础的SpringMVC框架和运行的流程,下面的所有使用都将围绕这个原理展开。

相关推荐
小陈far2 分钟前
Springcloud项目-前后端联调(一)
后端·spring·spring cloud
m0_7493175217 分钟前
springboot优先级和ThreadLocal
java·开发语言·spring boot·后端·学习·spring
一个儒雅随和的男子2 小时前
Spring为什么要用三级缓存解决循环依赖?
java·spring·缓存
长安不及十里2 小时前
Spring Security 搭建一套基于 JWT 的 OAuth 2.0 架构
数据库·spring·架构
m0_748233362 小时前
Spring中WebSocket的使用
java·websocket·spring
Alan CGH3 小时前
高并发写利器-组提交,我的Spring组件实战
java·后端·spring
一条小小yu4 小时前
从零开始手写缓存之如何实现固定缓存大小
java·spring·缓存
GGBondlctrl9 小时前
【Spring Boot】Spring AOP 快速上手指南:开启面向切面编程新旅程
spring boot·spring·spring aop·spring aop注解·spring aop环境
醒了就刷牙10 小时前
简历_熟悉缓存高并发场景处理方法,如缓存穿透、缓存击穿、缓存雪崩
spring·缓存·mybatis
青石路11 小时前
记一次cannot access its superinterface问题的的排查 → 强如Spring也一样写Bug
spring·cannot access its superinterface