java web开发模式

来源:互联网 发布:宁波 知乎 编辑:程序博客网 时间:2024/05/16 05:05

     在初学javaweb的朋友多数是学习一些视频,博客,书本等等。在大家熟悉javaweb的一些基础知识后,可能对javaweb的开发模式有些认识了。在此,我仅仅将我对javaweb开发模式的一些认识和大家分享一下,希望对大家有所收获。

我们先谈一谈servlet,只要学习过java web的同学必定懂得servlet,servlet就是运行在服务器的一段java小程序。在servlet中书写页面实在不易,所以jsp就应势而生。JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它[1]  是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准,简单来说就是在html中书写java代码。从此没有再用servlet开发web项目,而是大众jsp。

jsp+javaBean

随着B/S架构的发展,web项目的业务变得复杂。接着java web就浮现了一种设计模式,叫做JSP Model-1模式,这个模式主要是jsp负责视图显示并且流程控制,javaBean负责控模型层。这样jsp的任务还是重,导致页面的复杂程度较高,导致一堆问题出现。

jsp+Servlet

考虑到jsp的复杂程度,将jsp中的控制层放到了servlet中,并且servlet中还负责model层功能,简单的来说就是jsp只负责页面了,其他代码都写在服务器端(.java文件中)。

Jsp+servlet+javaBean

在jsp+servlet中暴露出来的是servlet中的组件过于复杂,所以下面的Jsp+servlet+javaBean出来了,这个被称为了jsp的Model-2设计模式。该设计模式吸取了jsp+servlet以及jsp+javaBean两种模式的各自优点,形成了一套经典的MVC开发模式。javaBean——M

jsp——v、servlet——C


                                              jsp+Servlet+javaBean设计模式的体系结构

根据该设计模式就可以开发一个web应用了,但是,如今的web应用基本上都要和数据库进行频繁的访问,(基本上就是CURD),在这个情景下,如果没有对javaBean进行分解的话,它是具有几个任务1、entity(实体类,也就是数据库表对应的java类)创建,数据库连接(驱动、connect、statement这些东西)、数据库操作(CURD)、项目业务这些任务。这样javaBean变得 特别杂乱,就可能会导致一堆问题出现。

javaBean+Servlet+jsp+Dao

所以现在,设计一个独立的层次,专业术语叫做Dao层。Dao层是抽象出数据访问方式(CURD等),它是独立的一层,通过它的对象代理,从而使业务和数据库访问解耦。

Utils(工具类

在上面说到了javaBean有好几个任务,到时到现在只是将数据库操作给抽出来。接下来我们来谈一谈数据库连接,这些代码在学jdbc中是不是写过(或者复制过)很多遍了,那在刚刚的Dao中的jdbc操作中呢,是不是很多地方需要呢,像这种代码,我们可以写一个工具类(业内习惯命名为util类),这个工具类就专门做jdbc需要的获取连接和释放资源用 途,下面给出一些我在这个方面的一些笔记:http://blog.csdn.net/lys1695227550/article/details/78057928

javaBean+Servlet+jsp+Dao+Service

现在javaBean就没有那么沉重的负担了,但是还存在一个问题就是,不同的项目的业务程度不同,在具有复杂业务的项目中,讲业务写在Dao中是一个很好的习惯,这样对后期业务代码维护,或者数据库访问调优都是一个艰巨的任务。所以需要将javaBean的最后两个任务(按我的思路就是4-2后的两个任务,entiry与项目业务)拆分出来,现在就抽出了service层,它就是处理一些业务的层。它就做几件事,1)收到控制层的任务,2)对任务进行分析、3)将任务分配给Dao层,4)收到Dao处理完后的信息,组合数据返回肥控制层。总得来说,就是控制层给任务,Service做业务,Dao做数据库操作。

完整的流程想必大家也懂了,那么最后javaBean只有一件事了,就是实体类封装

         实体类封装是和数据库对应的,它是将数据库操作抽象成java实体类对象操作。详细实体类设计将会在另一篇中介绍,喜欢的朋友可以关注一下,希望能帮助一些朋友更加了解开发模式的发展,以及应用。

          有些朋友可能会问,为什么,在这没有提到很多教程中的Dao,DaoImpl,这些字眼,这些是一些经验来的,其实没有使用接口编程对小型项目是没什么影响的,为了使读者更容易理解,我前面将面向接口编程这块先略去。现在就对面向接口编程说一说我的想法,其实就是Service和Dao不要直接写类,并且实现你想要的方法,而是将这些方法抽象出来,设计一个接口,让原本你的类实现这个接口,实现类的内容实际是一点都没有变化的。那为什么多次一举呢?

          说到这那就得说说javaSE中面向对象的多态了,声明一个接口类型的变量引用它的实现类的对象,这样可以通过这个变量来实现这个实现类对象所能做的事(例如调用它的方法)

好处:

1)在web中如果实现类更改了,是不是可以最大程度地减小项目代码修改的量。

2)定义一些规范(哪些方法,什么返回值,参数定义),让实现类不会杂乱

3)接口和实现分离了,适于团队的协作开发

4)实现松散耦合的系统,便于以后升级,扩展。

缺点:

       接口设计就难了,实现类编写之前就得设计好接口,如果接口变乱,实现类可能就乱套了

其实这也算不上缺点,没有设计好,怪得了面向接口编程?就跟不会写helloWorld,能怪语言不高级?


         接下来,将会总结一些现在的java web主流框架,不是千篇一律的教程,而是个人的一些想法和笔记,希望喜欢的朋友关注我的博客动态,文章还在继续编辑ing......






原创粉丝点击