日期:2014-05-18  浏览次数:20795 次

mvc与三层架构结合
我是一名学java的大专生,现在正在看一个网上商城的视频项目,但是那个视频中把好多的业务逻辑都写在了jsp页面上,我想根据他所讲的,自己用mvc(jsp+servlet)与分层实现,首先我先说一下我对mvc与分层的认识,大家看看我有什么理解不对的地方,我认为jsp就是mvc中的v,servlet就是mvc中的c,对于数据的操作就是m层,数据通过jsp页面提交到servlet进行处理,servlet调用m曾对数据进行处理后返回给jsp页面。我对三层的认识就是好像和mvc也差不多,表现层就是jsp,业务逻辑曾就是servlet,数据持久层就是dao。比如用一个用户注册作为例子,我想把项目改成注册页面用jsp显示,提交到servlet,然后servlet把表单中的数据一个一个的取出来,new User()对象,User类在model包中,User类的属性和数据库中的字段一致,有get set方法,new出这个User来之后,在servlet页面通过user对象,把从jsp页面表单里取到的数据存入user对象中,还有一个service包和一个dao包,servlet调用service包中的UserService对象的save(User u)方法来添加注册用户,在UserService中调用Dao包中的UserDao对象的save(User u)方法来添加用户,请大家帮忙看看我的认识和思路哪里有问题,谢了

------解决方案--------------------
楼主的理解大体是正确的,我稍微说下我的个人理解
MVC  V是jsp是没错的   C是servlet也是没错的  但是M  model这个东西并不是数据持久层,而是模型层,模型层包括了业务层,数据持久层以及java实体层,也就是实体类。
而你一个功能的整体流程是这样的
试图层是获取页面输入的数据并提交到控制层的,控制层接收到用户的请求数据后,直接将数据提交到业务层,业务层进行一系列的业务处理,包括数据验证之类的东西,其中需要和数据库交互的时候就调用持久层中的方法来和数据库交互。
所以楼主的理解大体是没有问题的。
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

谢谢啊,还是有点晕,我是这么写的servlet直接在doPost方法里用request的getParameter方法拿到一系列数据后,直接在doPost方法中new了一个User,将信息通过User的set方法存入User,然后调用了UserService对象的save(User u)方法

一般mvc的vc都很好理解,view 展现层,java ee中就是jsp,或者会用到一些模板技术,暂时先不谈。C control,控制层,就是servlet了,或者是action什么的。但M,是model,模型层,就包含了很多了,service层,dao层都属于model的。

然后,你的基本流程也是没问题的。jsp发起request,servlet处理,调用service,service调用dao。就是这个流程。如果还有不明白,欢迎继续提问。


我还不太明白dao层要怎么写,比如我现在是UserDao,对User增删查改等,但是我也可以有别的Dao,这些个数据的库的连接和sql包下的对象应该如何设计呢

我知道了,你遇到了一个非常典型的问题!!非常非常典型!就是dao里应该写什么,然后如果碰到有表连接时怎么做。

dao里面就是crud,然后,你把数据库的链接写个util,别管表连接,对user的crud你就crud,别想太多。慢慢就出来了。别想太多。单纯点。