SpringMVC浅解

在学习并使用springMVC框架之前我们首先要了解的是MVC模式(这里可以简单提一下,在我现在使用的angularJS也是使用前段的MVC模式,可见MVC模式是非常受欢迎的)
Model(模型)-View(视图)-Controller(控制器)
Model(模型):
业务模型:业务流程和业务逻辑
数据模型:页面显示的数据.数据库保存的数据对应的javaBean
View(视图):和用户直接交互的页面、程序界面
Controller(控制器):调度器控制整个网站的转发逻辑

SpringMVC是基于MVC理念的表现层框架,是目前最主流的MVC框架。
Spring MVC 通过一套 MVC 注解,让 POJO 成为处理请求的控制器,而无须实现任何接口。
支持 REST 风格的 URL 请求 采用了松散耦合可插拔组件构,比其他 MVC 框架更具扩展性和灵活性

SpringMVC的应用
springMVC框架在我接触到的SSM框架整合中担任应用层的,在使用springMVC框架之前,我们通常使用jsp+servlet的模式进行前台与后台交互。这块springMVC框架简化了这个步骤。Spring MVC 分离了控制器、模型对象、过滤器以及处理程序对象的角色,这种分离让它们更容易进行定制。也就是说springMVC不知道你要使用的视图,所以不会强制使用jsp视图技术。这对于框架使用方面更加广泛化。我们使用最简单的两个功能
(1).在后台接受前台传来的数据。即代替原本request接收数据的方式,通过两种方式将前台的值接收。
(2).得到需要的数据或者操作完成后返回到指定的jsp页面。

除此之外还有一些其他的功能,在此不做详细列举

    在这里简单的叙述一下SpringMVC的运行顺序

1.用户通过客户端发送请求到DispatcherServlet
2.DispatcherServlet调用HandlerMapping处理器映射器
3.处理器映射器根据url选择合适的处理器,获得处理器对象和处理器拦截器,将处理器对象和处理器拦截器一并返回给DispatcherServlet。
4.DispatcherServlet通过Handleradopt处理器适配器执行处理器。
5.执行处理器也就是我们的controller层。
6.controller层执行返回modelandview
7.HandlerAdapter将controller层返回的modelandview返回给DispatcherServlet
8.DispatcherServlet将ModelAndView传给ViewReslover视图解析器。
9.ViewReslover解析后返回具体的View
10.DispatcherServlet对view进行渲染视图(即将模型数据填充到视图中)。
11.DispatcherServlet响应用户。

    springMVC和Struts2的区别

1.springMVC的入口是一个servlet,Struts2的入口是一个filter
2.springMVC是在方法(一个Url对应一个方法)的基础上开发的,方法所需的参数在方法的形参里面写着。可以设计成多例也可以设计为单例,建议单例模式。
struts2是在类的基础上开发的,根据类的属性去传值。
3.springmvc通过参数解析request请求内容解析,并给方法形参赋值,将数据和视图封装成modelandview对象,最后将modelandview中的模型数据通过reques作用域传输到页面。jsp视图解析器默认使用jstl。
struts2采用值栈存储请求和响应的数据,通过OGNL存取数据。

通过上方的步骤总结 可以看出springMVC的核心是DispatcherServlet 那么他主要的几个作用在这里列举一下:
DispatcherServlet是springMVC框架的核心。它负责接收HTTP请求组织协调Spring MVC的各个组成部分。其主要工作有以下三项:
a.截获符合特定格式的URL请求。
b.初始化DispatcherServlet上下文对应WebApplicationContext,并将其与业务层、持久化层的WebApplicationContext建立关联。
c.初始化Spring MVC的各个组成组件,并装配到DispatcherServlet中。
我们是使用springMVC时配置了spring的配置文件(spring.xml),在这里我们了解一下springMVC如何将使用标签将数据自动接收。
我认为是通过DispatcherServlet的初始化( init() )
DispatcherServlet的初始化过程主要是通过将当前的servlet类型实例转换为BeanWrapper类型实例,以便使用Spring中提供的注入功能进行对应的属性的注入。属性注入包括:
1)封装及验证初始化参数,
2)将当前servlet实例转化成BeanWrapper实例,
3)注册相对于Resource的属性编辑器,
4)属性注入,
5)servletBean的初始化 。

浅见,欢迎各位批评指正。

你可能感兴趣的:(框架)