Java 表现层,业务层,持久层

java web应用:

  • M-Model,模型,一般表现为提交的表单内容,请求参数等,是服务器与客户端交流的数据载体。
  • V-View,表现层,用来展示客户端请求的结果,服务器返回的数据经过渲染展示给用户。
  • C-Controller,控制器,是客户端与服务器的中间连接枢纽,它负责将客户端发来的请求分配到指定的方法,执行相应的业务逻辑,然后将服务器返回的数据分配到指定的view,view好、经过渲染展示给用户。

流行的组合:

  • SSH
    • Struts(表示层)+Spring(业务层)+Hibernate(持久层)
  • SSM
    • SpringMVC(表示层)+Spring(业务层)+Mybatis(持久层)

业务层也是承接层,用来处理业务逻辑,通常使用数据库中的事务来进行,按照web层的要求来对数据层进行增删改查。

  • service是业务层,是使用一个或多个模型执行操作的方法。
    • 封装通用的业务逻辑,操作。 如一些数据的检验,可以通用处理。
    • 与数据层的交互。
    • 其他请求:如远程服务获取数据,如第三方api等。

持久层数据层大概可以分为三个部分:DAO、文件系统和其他应用数据。

  • DAO由以下几个部分组成:

    • DatabaseConnection:专门负责数据库的打开与关闭操作的类。
    • VO:主要由属性、setter、getter方法组成,VO类中的属性与表中的字段相对应,每一个VO类的对象都表示表中的每一条记录。
    • DAO:主要定义操作的接口,定义一系列数据库的原子性操作,如增加、修改、删除和查询。
    • impl:DAO接口的真实实现类,完成具体的数据库操作,但是不负责数据的打开和关闭。
    • Proxy:代理实现类,主要完成数据库的打开和关闭,并且调用真实实现对象的操作。
    • Factory:工厂类,通过工厂类取得一个DAO的实例化对象。
    框架 缺点
    传统的Java Web应用程序是采用JSP+Servlet+Javabean来实现的,这种模式实现了最基本的MVC分层,使的程序结构分为几层,有负责前台展示的 JSP、负责流程逻辑控制的Servlet以及负责数据封装的Javabean JSP页面中需要使用符号嵌入很多的 Java代码,造成页面结构混乱,Servlet和Javabean负责了大量的跳转和运算工作,耦合紧密,程序复用度低等等。
    接下来
    出现了Struts框架,它是一个完美的MVC实现,它有一个中央控制类(一个 Servlet),针对不同的业务,我们需要一个Action类负责页面跳转和后台逻辑运算,一个或几个JSP页面负责数据的输入和输出显示,还有一个 Form类负责传递Action和JSP中间的数据。JSP中可以使用Struts框架提供的一组标签,就像使用HTML标签一样简单,但是可以完成非常复杂的逻辑 使用JDBC连接来读写数据库,我们最常见的就是打开数据库连接、使用复杂的SQL语句进行读写、关闭连接,获得的数据又需要转换或封装后往外传,这是一个非常烦琐的过程。
    接下来
    出现了 Hibernate框架,它需要你创建一系列的持久化类,每个类的属性都可以简单的看做和一张数据库表的属性一一对应,当然也可以实现关系数据库的各种表件关联的对应。当我们需要相关操作是,不用再关注数据库表。我们不用再去一行行的查询数据库,只需要持久化类就可以完成增删改查的功能。使我们的软件开发真正面向对象, 而不是面向混乱的代码 现在我们有三个层了,可是每层之间的调用是怎样的呢?比如显示层的Struts需要调用一个业务类,就需要new一个业务类出来,然后使用;业务层需要调 用持久层的类,也需要new一个持久层类出来用。通过这种new的方式互相调用就是软件开发中最糟糕设计的体现
    接下来
    出现Spring框架。Spring Spring的作用就是完全解耦类之间的依赖关系,一个类如果要依赖什么,那就是一个接口。至于如何实现这个接口,这都不重要了。只要拿到一个实现了这个接口的类,就可以轻松的通过xml配置文件把实现类注射到调用接口的那个类里。所有类之间的这种依赖关系就完全通过配置文件的方式替代了。所以 Spring框架最核心的就是所谓的依赖注射和控制反转。

    但是随时间的发展,历史的进步,struts,我个人认为有了更好的替代,SpringMVC,hibernate替换为Mybatis。这个框架的变化,只是更好的适合当前。中心思想还是没有变的

猜你喜欢

转载自blog.csdn.net/song_jiangtao/article/details/80087680