SpringMVC的基础内容+核心知识

SpringMVC:

SpringMVC是基于Spring的一个部件,专门来处理客户端与服务器之间的交互,通过controller(控制器)将model(底层数据)返回到view(视图页面)。

Spring的相关jar
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-core</artifactId>
		<version>5.2.1.RELEASE</version>
	</dependency>

	<!--spring-beans -->
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-beans</artifactId>
		<version>5.2.1.RELEASE</version>
	</dependency>

	<!-- spring-context -->
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-context</artifactId>
		<version>5.2.1.RELEASE</version>
	</dependency>

	<!-- SpringMVC-->
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-webmvc</artifactId>
		<version>5.2.1.RELEASE</version>
	</dependency>

SpringMVC的优点

1.SpringMVC基于Spring,所有的创建都交给容器去处理,每次使用只需要从容器中拿即可

2.由于SpringMVC中DispatcherServlet作为前端控制器,将根目录下的所有页面保护起来,客户端不能直接请求页面(非法请求页面不被允许)。

3.由于SpringMVC基于Spring,Spring划分为DAO层,Service层,Controller层的三层结构,从而进行解耦,单一职责;而原生的Servlet+jsp中耦合程度过高,不利于后期的使用。

SpringMVC的关键类

1.DispatcherServlet:前端控制器,用于接收请求和返回响应
2.controller:控制器,用于获取请求来的数据,并将处理结果返回给视图
3.View Resolver:视图解析器,用于将controller的返回结果,进行解析,处理的视图文件逻辑名称,返回一个该视图文件的物理路径

SpringMVC的执行流程

(由于工具原因,就先不画图了)
request->DispatcherServlet(前端控制器)->controller(控制器)->数据处理–> controller(控制器)—> DispatcherServlet(前端控制器)—>View Resolver(视图解析器)–>DispatcherServlet–>response

SpringMVC两大容器

---------------------------------基于源代码---------------------------------------------
想了解的朋友们,去瞅瞅源代码,收获颇丰
下面的相关内容都基于javaConfig
1.SpringMVC中可通过xml和 javaConfig进行配置,同时加载了两大容器
ServletApplicationContext容器和RootApplicationContext容器

ServletApplicationContext: 存放了关于SpringMVC方面的内容,例如:
configureViewResolvers(添加视图解析器) addViewControllers(自动添加控制器) addResourceHandlers(添加处理静态页面)等众多的bean对象

RootApplicationContext:存放了关于Spring方面的内容,自己或系统创建的bean对象

**

前端控制器,过滤器,监听器,两大容器 的创建**

---------------------------------基于源代码---------------------------------------------
从tomcat(spring3.0规范的容器)启动时,先将我们的请求通过tomcat的过滤器,然后查找ServletContainerInitializer的实现类
==>查找SpringServletContainerInitializer

==>@HandleType(WebApplicationInitializer)的查找onStartup()服务器启动

==>实现类AbstractContextLoaderInitializer①该类实现加载了onStartup() 方法,实现机制交给了子类;
( ②该类加载了createRootApplicationContext
***(),实现交给了子类
(③创建了监听器,监听root容器的创建(spring的创建)*

:==>AbstractDispatcherServletInitializer
①重写父类onStartup() 方法,实现机制交给了子类;
②注册了DispatcherServlet前端控制器
③加载了Servlet容器,但创建交给了子类
④创建了过滤器

:==>AbstractAnnotationConfigDispatcherServletInitializer
①创建root容器和servlet容器,但容器的class对象交给了子类去反射得到
(getRootConfigClasses)(getServletConfigClasses)

:==>DispatcherServletConfig(xml配置中的web.xml):
创建root容器,servlet容器,添加过滤器,添加DispatcherServlet的mapper

总结:

1.从上述的内容可以看出SpringMVC的用法和内部的创建,创建了监听器,控制器,过滤器,Root容器,Servlet容器.

2.通过javaconfig不难看出,通过javaConfig的配置,容器已经帮我们加载了监听器和过滤器(只需添加自定义过滤器),而web.xml需要自己在onStartup中添加过滤器,给Root容器配置监听器,监听spring的内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值