乐趣区

关于java:Spring-MVC-一-从MVC-Servlet开始

甩开膀子,持续干活。

明天开始 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 的自我调用

退出移动版