JavaEE的开发模式
什么是模式
模式在软件行业里没有固定的定义。模式其实是在开发过程中总结出的“套路”,可以认为是在开发过程中总结出的一套约定俗成的设计模式。这个模式就是,你是怎么开发的呀?你的比较好,我学学你的。
比如说玩游戏的时候,打怪,你这次打完之后发现先打它这里好一些,下次又发现打它那里也会好一些,所以,下次再打这个怪的时候,就有了一个战术。这个其实就叫做模式。
必须要提醒一点,“模式”这个词在基础班已经见过了,单例模式等23种设计模式,那23种设置模式是Java基础的设置模式,它不属于JavaEE,我们今天讲的模式主要是MVC模式,MVC模式是属于JavaEE的模式。
JavaEE经历的模式
在学习MVC模式之前,先说一下JavaEE在整个的开发历史中经历的模式,有两种,一种叫model1模式,另一种叫model2模式。现在使用的模式都是model2模式,model1模式在企业中肯定没有人用了。
model1模式
现在已经不用了。model1模式有一个技术架构,什么叫技术架构呢?就是技术组成。model1是由什么技术组成的呢?
技术组成:jsp+javaBean
昨天给大家讲过历史,一开始,JavaEE开发用的是servlet,在用的时候发现它不太好,因为输出页面的时候比较不方便,所以发明了一项技术叫jsp,发现jsp比较好,输出页面方便,而且可以在jsp中直接嵌入Java代码,于是,人们就玩命的用jsp,就把servlet给扔掉了,所以,在那个阶段,我们的开发模式都是model1模式,单纯的用jsp+javaBean,但是这种模式在开发中发现有弊端。
model1的弊端:
为什么那个年代用model1用的多呢?因为当时的项目都比较简单,可能通过几个HTML就能完成一个项目,但是随着社会的发展,好多东西都要往软件行业靠,那么,实现起来就会非常的复杂,比如淘宝这些电商,就很复杂,如果电商用model1开发,就是所有的东西都用jsp写,那就导致我的jsp页面当中,第一要嵌入很多的Java代码,第二,我这个jsp本身还要完成页面展示的功能,维护起来非常难维护,页面非常的长,东西比较多。
model1的弊端是,随着业务的复杂性(它并不是技术到瓶颈了),导致jsp页面比较混乱,逻辑上不清楚。
所以,我们现在就不用model1了,逻辑上不清楚。现在我们都用model2模式。
model2模式
技术组成:jsp+servlet+javaBean
为什么model2的技术组成是这三门技术?model2是在model1之后,肯定是model1不行了才出现了model2,model1不行了是因为它存在的弊端,是因为它在jsp页面中即写Java逻辑代码,又写页面输出代码,又写HTML,导致页面复杂,那该怎么办呢?把它们分开,把处理业务的代码分开,写到别的位置,把页面输出的代码单独的写到jsp中,此时人们就想到了遗忘很久的servlet技术。
jsp有它自己的优点,它的优点是页面输出;
servlet本身也有它自己的优点,它的优点就是写Java代码;
这样正好就可以把Java代码和页面输出代码分离开,使得逻辑开发变得很清楚。
model2的优点
优点就是使你在开发中,能够使用各个技术的最擅长的方面。
servlet擅长处理Java代码。
jsp擅长页面的显示。
model2其实就是我一会要讲的MVC。
MVC(属于web开发的模式)
什么是MVC呢?
M:就是model(模型),在model2当中,这个model可以认为就是JavaBean,它主要的作用就是封装数据;
V:就是view(视图),在model2当中,谁对应视图呢?jsp,它的主要作用就是单纯的进行页面数据的显示;
C:就是controller(控制器),在model2当中,谁是相当于controller呢?servlet,它做的主要工作是什么呢?它要进行些逻辑处理,获取数据,什么叫获取数据呀?还想表单,表单提交,原先提交给jsp,现在提交给servlet,servlet获取到数据之后,对数据进行封装,然后进行业务处理,如果加上后面讲的三层架构,它下一步就应该传递数据,就是传递javaBean,传递给下一层,即传递给业务层,最终的一个功能就是指派显示的jsp页面,让谁显示呢?让view即jsp显示,到底让哪个jsp显示呢?controller说了算。
为什么controller叫控制器呢?因为controller更像是一个管理者,你把数据给我,我收集到,封装好之后,给server层,server层拿到数据之后,最后给controller结果,controller拿到结果之后指定某个jsp进行显示。
比如这是我们的工厂,比方说这里有一个页面
比方说页面中有一个表单,表单可以提交表单数据
提交到服务器,现在谁负责接收你这个表单数据呢?controller,其实在这里就是servlet。
其实我们发现了,MVC跟model2可以认为就是一回事。
在JavaEE当中,谁充当controller(控制器,接收数据)呢?这个控制器其实就是servlet,它负责接收数据,接收到数据之后需要进行封装,它用什么进行数据的封装?通过javaBean进行封装,javaBean在MVC中属于Model,使用Model进行封装,封装之后交给下一层进行处理
处理之后给controller返回一个结果,controller指派某个页面进行显示,controller就把这个数据交给一个页面去进行显示,这个页面在这里就是jsp,其实这个jsp在这里充当的谁呢?最终显示的那个内容,所以在这里充当的是视图view
然后,这个jsp将数据显示在页面上
其实这个就是MVC,这个MVC就是我们的jsp、javaBean、servlet,说白了它就是model2模式。
讲到了MVC,那么,就有必要再说一下JavaEE的三层架构。
因为一般我们的开发都是MVC结合三层架构一起开发的。