您的位置:首页 > 运维架构 > 网站架构

JSP开发中的分层都是基于MVC架构的

2016-08-26 12:21 246 查看
JSP开发中的分层都是基于MVC架构的,即(Model-View-Controller),

        M:模型层,主要是负责一些具体的业务逻辑的实现,

        V:视图层,可以理解为JSP页面,

        C:控制器层,用于接受页面请求与响应请求到JSP页面的控制机制。

 

在模型层中,又分为biz,dao,entity等层,

           biz:Bussiness Model,业务模型,主要用于处理某一类业务的处理流程,

           dao:DataAccess Object,数据访问层,主要针对于数据表的操作,可以理解为一张数据表,就有一个Dao与之对应,在Dao里面包含对该张数据表的增、删、改、查等操作。

           entity:又叫POJO(Plain Old Java Object),最原始的Java类,用于将数据表封装为Java模型,一般这里面会以属性的形式,记录数据表的字段,通过getter/setter方法来操作,对应字段的信息,这也可以理解为面向对象中的封装。

           servlet层就是MVC中的控制器,主要用于接受JSP的页面请求和响应请求。

 

所以整个流程是:  

JSP页面发起请求到servlet,获取请求,交个biz层,

在biz层中通过一系列对数据表的操作,这就要结合dao和entity的作用,完成业务逻辑,

然后,响应给servlet,由servlet,再响应出JSP 页面。整个流程大概如此,其实还有很多。

 

 

jsp开发不能不去看SSH框架(Spring
Strust,Hibernate),绝对利器

              servlet:网络传输

              dao:数据库交互

              entity:实体类

 

Struts的基层结构,
jsp页面是
         表示层View, Action是业务逻辑即控制层Control,
            Dao、DaoImpl、Service、ServiceImpl都是数据访问曾的东西。
                    一般性Service、ServiceImpl是连接 Action和Dao、DaoImpl的,一般性用Spring的注解在xml中,
             Dao、DaoImpl是最后操作数据库的,

你用ibatis的话,用Service、ServiceImpl调用Dao、DaoImpl,然后数据库的操作语句的调用写在Dao、DaoImpl,最后真正数据库操作语句写在相应的xml中

 

       
 Action表示层,选择视图

调用
       service
调用
       serviceImpl
调用
       Dao
调用
       Daoimpl
这里持久层访问数据库

首先解释面上意思,

service是业务层,

dao是数据访问层。
呵呵,这个问题我曾经也有过,记得以前刚学编程的时候,都是在service里直接调用dao,service里面就new一个dao类对象,调用,其他有意义的事没做,也不明白有这个有什么用,参加工作久了以后就会知道,业务才是工作中的重中之重。

我们都知道,标准主流现在的编程方式都是采用MVC综合设计模式,

MVC本身不属于设计模式的一种,它描述的是一种结构,最终目的达到解耦,

解耦说的意思是你更改某一层代码,不会影响我其他层代码,

 

如果你会像spring这样的框架,你会了解面向接口编程,

表示层调用控制层,

控制层调用业务层,

业务层调用数据访问层。

 

初期也许都是new对象去调用下一层,比如你在业务层new一个DAO类的对象,调用DAO类方法访问数据库,这样写是不对的,

因为在业务层中是不应该含有具体对象,最多只能有引用,

如果有具体对象存在,就耦合了。

当那个对象不存在,我还要修改业务的代码,这不符合逻辑。

好比主板上内存坏了,我换内存,没必要连主板一起换。

我不用知道内存是哪家生产,不用知道多大容量,只要是内存都可以插上这个接口使用。这就是MVC的意义。

接下来说你感觉service的意义,其实因为你现在做东西分层次不是那么严格,在一个你们做东西业务本身也少,举个最简单的例子,你做一个分页的功能,数据1000条,你20条在一个页,你可以把这个功能写成工具类封装起来,然后在业务层里调用这个封装的方法,这才是业务里真正干得事,只要没访问数据库的,都要在业务里写。

再有不明白的追问,这是经验问题,呵呵,其实以后你就会懂。只是刚开始写的代码都是有个请求,我就去数据库取,业务几乎没有。

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: