甩开膀子,持续干活。

明天开始Spring Framework中的另外一部分重头戏:Spring Web MVC,借助Spring Web MVC,Spring Framework能够通过Servlet API轻松构建基于web的利用。

在开始Spring Web MVC之前,咱们还是要简略理解一下MVC的前世今生。

MVC vs 三层架构

比拟古老了,简略说一下即可。

三层架构
三层架构是为了实现应用程序的“高内聚低耦合”思维,把各功能模块划分为表示层UI、业务逻辑层BLL、数据拜访层DAL。各层之间通过接口相互拜访,并通过数据实体在各层之间传递数据。

三层之间分工明确,各负其责:UI层负责数据展现,BLL负责业务逻辑的解决,DAL负责数据的拜访和存储。

新生代程序员不太容易了解为什么还须要进行这样的定义,因为目前的java框架天生就是三层架构的各种变体:在三层架构的根底上,对各层又进行了进一步的细分。

20年前的程序员对三层架构所解决的问题应该印象粗浅,因为20年前绝大部分的java我的项目都没有清晰的层次结构,要么就是在jsp/servlet中充斥业务逻辑和数据库拜访、要么就是在后盾service代码中掺杂各种数据库拜访、业务逻辑以及页面款式的代码。横七竖八,程序员在须要进行bug修复或功能完善的时候,读代码比读经书还要难。

三层架构对于解决上述问题功不可没。

MVC
MVC是Model、View、Controller的缩写,也就是模型、视图、控制器,最早是为Smalltalk语言提出的一种设计模式,最终在java web利用中失去了最为宽泛的利用。

view:视图层,负责数据展现或数据收集,能够有图形、图表、文字等等不同的展现形式。
controller:管制层,负责接管从view层提交的用户申请,转发用户申请给模型层(model),接管model转发给view层进行展现。
model:模型,解决管制层转发的用户申请,生成用户申请的数据并通过管制层转发给view层。

MVC vs 三层架构
MVC是属于三层架构中UI层的设计模式,也就是说MVC都属于UI层,即便是model也属于UI层的一部分。

所以,MVC是设计模式,三层架构是应用程序或利用零碎的架构,两者属于不同维度的概念,不能混同。

如果MVC整个都处于三层架构的UI层的话,那么model就没有解决业务逻辑的责任,因为解决业务逻辑是BLL层的责任。因而,model能够了解为是在view和controller之间传递数据的载体。

生吞活剥的比照概念之间的异同其实意义不大,最重要的,咱们还是要学习把握Spring MVC的具体用法及底层逻辑。

下一篇文章正式开始。在此之前,咱们还须要首先简略回顾一下Servlet的概念。

Servlet

以后的java利用在泛滥优良框架的加持下(尤其是Spring框架),大家对Servlet可能也不算太相熟了。

其实正是通过Servlet,Java才成为“适宜进行Web程序开发的语言”。

Servlet是Service applet的缩写,意思是服务端小程序,对应的,Java还已经推出过客户端小程序-applet,已经风行一时,只不过是因为各种起因,早已退出了历史舞台。

在MVC框架呈现之前,java web程序员必须与servlet打交道,每一个servlet须要在web.xml中进行配置:

    <servlet>        <servlet-name>MyServlet</servlet-name>        <servlet-class>com.example.servlet.MyServlet</servlet-class>        <load-on-startup>1</load-on-startup>    </servlet>    <servlet-mapping>        <servlet-name>MyServlet</servlet-name>        <url-pattern>/myServlet</url-pattern>    </servlet-mapping>

其中<servlet>局部配置servlet的名字、以及其对应的servlet类。<servlet-mapping>局部配置serlvet与业务申请url的对应关系。

配置内容很容易了解,然而配置起来相当麻烦,因为MVC框架之前的每一个利用都会有数量泛滥的Servlet,程序员必须在web.xml中为每一个servlet进行配置。

Servlet3.0之后,容许通过注解形式进行配置,与web.xml形式相比,注解形式要简化许多,因而Servlet3.0是对java web程序员的一次解放。

MVC框架比方Spring Web MVC(或之前的struts)的呈现是对java web程序员的又一次大解放,Spring Web Mvc框架通过DispatcherServlet代替了应用层的其余Servlet(利用不须要创立Servlet)、只须要创立Controller。整个利用只有Dispatcherservlet一个Servlet即可,进一步简化了繁琐的Servlet配置工作(不过,话说回来,Controller其实相似Servlet,只不过Controller不须要实现任何接口、比Servlet的配置要简略一些)。

因而,尽管咱们在应用Spring Mvc的过程中感触不到Servlet的存在,然而咱们要晓得Spring MVC其实也是围绕Servlet在工作,因为Servlet是MVC框架中的C、起到承前启后的控制器作用、是绕不开的外围存在。

有了这些背景常识,下一篇文章咱们开始钻研Spring MVC。

上一篇 Spring FrameWork从入门到NB - Spring AOP的自我调用