SpringMVC的理解
MVC = Model(数据模型) + View(视图) + Controller(控制器)
SpringMVC的作用是解决了V-C与C-V之间的交互问题。
传统的Controller
的具体表现就是Servlet
,每个Servlet
是由1个继承自HttpServlet
的Java类,和在web.xml中的配置组成!每个Servlet
的配置信息大致是:
<servlet>
<servlet-name>Demo01Servlet</servlet-name>
<servlet-class>cn.tedu.web.Demo01Servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Demo01Servlet</servlet-name>
<url-pattern>/Demo01Servlet</url-pattern>
</servlet-mapping>
在使用Servlet
时,通常,每个Servlet
处理1种请求,例如登录有登录的Servlet
,注册也有注册的Servlet
,如果一个项目中有100种请求,就需要创建100个Servlet
类,并至少使用800行代码进行配置!如果某个项目有1000种甚至5000种请求,则需要创建1000个或5000个Servlet
类,并至少使用8000行甚至40000行代码进行配置,在实际运行时,还需要创建1000个或5000对象!对内存的开销也是非常大的!
SpringMVC中的控制器与请求的对应关系是1对多的!在同一个控制器类中可以添加若干个处理请求的方法!无论是从配置的代码量、Java类文件的数量、运行时控制器对象的数量都大大的减少了!使得整个项目运行时开销更小,更加易于管理和维护!
当然,在实际开发时,SpringMVC也表现得比原生技术的使用方式更加简单!
3. SpringMVC框架的核心处理流程
在SpringMVC框架的核心处理流程中,会涉及到的5个组件:
-
DispatcherServlet
:前端控件器,用于接收所有请求,并组织整个执行流程; -
HandlerMapping
:用于配置请求路径与处理请求的控制器的映射关系; -
Controller
:实际处理请求的组件; -
ModelAndView
:控制器的处理结果,包括Model
(数据)及View
(视图); -
ViewResolver
:视图解析器。
SpirngMVC运行流程:
- 客户端请求提交到前端控制器DispatcherServlet
- 由DispatcherServlet控制器查询一个或多个HandlerMapping(映射处理器),找到处理请求的Controller
- DispatcherServlet将请求提交到Controller(处理器)
- Controller调用业务逻辑处理后返回ModerAndView
- DispatcherServlet查询一个和多个ViewResoler视图解析器找到ModelAndView指定的视图
- 视图负责将结果显示到客户端