今天,我开始了JavaEE的学习。首先,先回顾了一下Servlet项目存在的问题,然后,学习了SSM的作用、Spring基础核心、控制反转概念、控制反转的示例、组装打印机示例、组装打印机属性set方法。

总结一下一些需要注意的问题:

1.MVC模式

1.1 MVC设计概述

在早期 Java Web 的开发中,统一把显示层、控制层、数据层的操作全部交给 JSP 或者 JavaBean 来进行处理,我们称之为 Model1:

java mv 文件 javaee mvc_MVC


出现的弊端:

JSP 和 Java Bean 之间严重耦合,Java 代码和 HTML 代码也耦合在了一起

要求开发者不仅要掌握 Java ,还要有高超的前端水平

前端和后端相互依赖,前端需要等待后端完成,后端也依赖前端完成,才能进行有效的测试

代码难以复用

正因为上面的种种弊端,所以很快这种方式就被 Servlet + JSP + Java Bean 所替代了,早期的 MVC 模型(Model2)就像下图这样:

java mv 文件 javaee mvc_控制反转_02


首先用户的请求会到达 Servlet,然后根据请求调用相应的 Java Bean,并把所有的显示结果交给 JSP 去完成,这样的模式我们就称为 MVC 模式。

M 代表模型(Model)

模型是什么呢? 模型就是数据,就是 dao,bean

V 代表视图(View)

视图是什么呢? 就是网页, JSP,用来展示模型中的数据

C 代表控制器(controller)

控制器是什么? 控制器的作用就是把不同的数据(Model),显示在不同的视图(View)上,Servlet 扮演的就是这样的角色。

1.2 Spring MVC 的架构

java mv 文件 javaee mvc_控制反转_03


MVC原理图:

java mv 文件 javaee mvc_java mv 文件_04


2.Spring的体系结构

Spring一共有十几个组件,但是真正的核心组件只有几个。

java mv 文件 javaee mvc_Java_05


从这个图中我们可以看出Spring框架的核心组件只有三个:Core、Context和Beans。他们构建起了整个Spring的骨骼架构,没有他们就不可能有AOP、Web等上层的特性功能。上面这些是Spring特性功能。

其中比较重要的几个包:

AOP包(主要提供面向切面编程的实现);

Web(主要提供了Web应用开发的支持及针对Web应用的MVC思想实现)、ORM(为Hibernate、Mybatis这类持久化框架提供支持);

还有Spring MVC(这个是它自带的一个web视图层,可以替代到Sturts2)。

3.控制反转(依赖注入)

什么是控制反转

将组件对象的控制权从代码本身转移到外部容器。

组件化的思想:分离关注点,使用接口,不再关注实现。

java mv 文件 javaee mvc_java mv 文件_06


依赖的注入:将组件的构建和使用分开。

java mv 文件 javaee mvc_MVC_07


当某个角色(比如一个java实例,调用者)需要另一个角色(另一个java实例,被调用者)的协助时,在传统的程序设计过程中,通常由调用者来创建被调用者的实例。但是在spring里,创建被调用者的工作不再由调用者来完成。因此被称为控制反转;创建被调用者实例的工作通常由spring容器来完成,然后注入调用者,因此也称为依赖注入。这样给程序带来很大的灵活性,这样也实现了我们的接口和实现的分离。

简而言之也就是说我们要获得一个对象,不由我们开发者自己创建,而是由我们的容器来注入给我们的程序来使用。