? ? ? ? 从开始学Java Web到现在,使用的J2EE架构一步一步的在改变,从最简单的到越来越复杂,刚开始都是完全就照着每个架构的形式去开发项目,很少自己会想为什么用这样的架构好?好在哪里?现在学了这么久,也做了一些项目,回过头来仔细去思考这一个一个的架构,顿时发现了其中的道理。当你使用一种架构时,发现架构存在某个明显不足的地方,这时候,就应该去思考有什么办法去解决,这样子不断改善,也就使架构不断的改善升级。
?
什么是J2EE架构?
? ? ? ? J2EE架构就是我们开发企业项目系统时使用基于J2EE技术构建的软件架构,相当于给系统定了个外型,剩下的只要按照这个外型去具体实现它的功能。这样做的目的就是为了提升开发的效率以及一个好的架构也会大大提升我们软件的质量。
?
(一)一层架构模式 ??
? ? ? ? 一层架构模式是最简单的方法,就是直接使用JSP进行所有功能的开发,JSP既负责显示结果与用户交互,并且也负责跳转控制、逻辑业务的处理。如下图所示:
? ? ??
? ? ? ? ?
? ? ? ? 这种模式的好处就是直接容易理解,逻辑简单,开发速度快,但当功能复杂的时候,页面就会被塞很多java代码,如JDBC代码,逻辑代码,可读性会很差,并且代码无法重用。
?
(二)两层架构模式 Model 1
? ? ? ? 为了解决上一个架构存在的问题:可读性差,代码无法重用。现在我们不要忘了Java有封装的特性,而且我们页面可读性差就是因为页面中插入了大量的java代码,而且当我们写多了一层架构的项目时会发现,在页面中的java代码很多都是相同的重复代码,都为了实现某一个功能,如JDBC代码,所以现在我们可以将这些Java代码抽取出来放在JavaBean(其实就是个java类)中,封装成一个一个的业务方法,供JSP页面来调用,如果需要实现相同功能的只需要写一遍代码就可以多次调用,也就是代码可重用性也相对提高了。
? ? ? ??
?
? ? ? ? ?这种模式下依然存在着很明显的缺点:jsp页面除了显示内容外还要负责控制页面跳转,当项目复杂时,页面与页面之间的流向会变得混乱,当改动某一页面时可能影响到与之相关的很多页面;还有就是程序逻辑代码的开发与页面设计纠缠在一起,这样既不便于分工合作,也不利于代码的重用。
?
(三)三层架构模式 Model 2(MVC模式)
? ? ? ? 为了解决Model 1的缺点,而Model 1的缺点就在与页面设计还没有与程序逻辑代码真正分离,所以我们要继续想办法把他们分离开,JSP用来显示页面,这就需要有一个专门来负责接收页面请求并将处理结果返回给合适的页面。它就充当了一个“控制器”(Controller),这个控制器一般就由Servlet来实现,因为Servlet的特性恰好能完美实现这样的效果。
? ? ? ? 这样一来,JSP变成一个单纯完成显示内容的显示层(Viewer),Servlet作为控制层(Controller),而被我们已经独立出来的事务逻辑(JavaBean),称为Model层,就构成了MVC模式,该模式至今被广泛应用,因为为我们的开发与维护提供了巨大的便利。
? ?
?
(四) 多层架构模式
? ? ? ? MVC模式虽然已经很经典,但在实际项目开发中,我们就会发现,在我们的Model层中存在大量的重复代码,就是JDBC代码,可以对它继续拆分、拆分成服务层(Service)与数据操作(DAO),服务层专门根据业务需要,调用数据底层对数据库进行操作,数据操作负责对数据库进行操作;由于这两层之间会涉及到数据的传递,数据量可能会比较多,所以在他们中间加上一个专门存储数据库的持久对象的存储对象(DTO)
?
?
? ? ? ?J2EE的多层架构中的每一层还可以使用一些开源框架进行组合,现在比较流行的就是Struts、Spring、Hibernate等框架,他们都各自作用在某些层,但都是基于MVC这个基础架构来的,所以掌握好MVC很重要。