1. SpringMVC是干啥的
SpringMVC是Spring框架的一个子项目,是用来开发Web应用的,也就咱们俗称的网站。
MVC的意思是Model模型-View视图-Controller控制器,这是一种模式,可以说是网站开发中最常用的一种模式,SpringMVC也采用了这种模式(废话,不然能叫SpringMVC么)。
也就是说SpringMVC是采用了Spring技术的,采用了MVC设计模式的,应用到Web开发领域的一个Spring大家庭的小老弟。
2. MVC是干啥的
刚刚说了MVC是模型-视图-控制器的一种设计模式,那么没采用MVC之前网站是如何开发的呢?
在没有任何模式下,网站的请求发送到一个web处理程序,该程序首先接受用户的请求(例如搜索用户请求),然后处理该请求(从数据源获取该用户信息),最后返回含有处理结果的视图页面。
注意在该模式下,每个web处理程序都是单独的,有一个接受请求的地址,返回独立的结果。例如在使用JSP时,每个JSP都单独负责接受用户请求-处理-返回,然后JSP页面之前有大量的跳转。这种方式比较难以维护,例如如果开发者要修改一个JSP页面的名字,则所有引用该页面链接的地方都需要修改。
事情没有条理,就是容易导致混乱,所以逐渐就出现了MVC这种模型,它规范了web开发请求-响应的处理流程:
在MVC模型下,C控制器负责接受用户输入,然后调用适当的模型处理问题,最后调整适应的视图显示。模型封装了相关的数据和业务逻辑,视图负责应用的显示。这样各司其职,实际上更加规范更加高效。
3. SpringMVC不外如是
SpringMVC也是MVC模式下的web框架,遵循着一样的处理流程,只不过在具体实现上,有一些接口、类、方法来承担相应的责任。
下面说一下SpringMVC处理的具体流程:
用户从浏览器发起HTTP请求
请求统一进入SpringMVC的Dispatcher Servlet,看到dispatcher(调度)这个单词,差不多就能猜到这个并不是真正的逻辑处理类,而是会将该请求分配到具体的处理器。
那么此处是如何将请求跟处理器匹配起来的呢,也就是说Dispatcher Servlet是如何为请求分配处理器的,实际上请求携带了一个请求地址,然后处理器上也设置了本处理器可处理的请求地址的映射,所以Dispatcher Servlet就可以根据请求地址–映射之间的对应关系完成调度。
此时Dispatcher Servlet将请求传递给容器内的处理器方法,来处理具体业务逻辑。
处理器处理完毕后,组织好数据与视图名称返回给Dispatcher Servlet
Dispatcher Servlet通过视图解析器,解析处理器返回的视图名称,将解析出来的具体视图返回给用户
通过上述描述,我们发现不外乎就是有几个新组件Dispatcher Servlet、处理器、视图解析器。
Dispatcher Servlet就是核心控制器,进来的请求我分配给处理器处理
处理器具体处理用户请求,并返回结果
视图解析器比较简单,也就是将视图名称解析为真正的视图页面
4. 总结
没啥好总结的,典型的MVC封装