SpringMVC:是spring的一部分,负责表现层
父子容器:
springmvc是子容器,spring配置是父容器
springmvc可以访问spring里面的bean
spring一定不能访问spirngmvc里面bean
SpringMVC的执行流程图
![](https://i-blog.csdnimg.cn/blog_migrate/f1721b3fb4e3cd84f030daf9fdf0ae3a.jpeg)
1、
用户发送请求至前端控制器
DispatcherServlet
2、
DispatcherServlet
收到请求调用
HandlerMapping处理器映射器。
3、
处理器映射器根据请求
url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
4、
DispatcherServlet通过HandlerAdapter处理器适配器
调用处理器
5、
执行处理器
(Controller,也叫后端控制器)。
6、
Controller执行完成返回ModelAndView
7、
HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
8、
DispatcherServlet将ModelAndView传给ViewReslover视图解析器
9、
ViewReslover解析后返回具体View
10、
DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。
11、
DispatcherServlet响应用户
说明:在
springmvc
的各个组件中,处理器映射器(
HandlerMapping
)、处理器适配器(
HandlerAdapter
)、视图解析器(
ViewReslover
)称为
springmvc
的三大组件。
需要用户开放的组件有
handler
、
view
springmvc
与
struts2
不同
1、
springmvc
的入口是一个
servlet
即前端控制器,而
struts2
入口是一个
filter
过虑器。
2、
springmvc
是基于方法开发
(
一个
url
对应一个方法
)
,请求参数传递到方法的形参,可以设计为单例或多例
(
建议单例
)
,
struts2
是基于类开发,传递参数是通过类的属性,只能设计为多例。
3、 S
truts
采用值栈存储请求和响应的数据,通过
OGNL
存取数据,
springmvc
通过参数解析器是将
request
请求内容解析,并给方法形参赋值,将数据和视图封装成
ModelAndView
对象,最后又将
ModelAndView
中的模型数据通过
reques
域传输到页面。J
sp
视图解析器默认使用
jstl
。