我以前是学asp.net的,我刚学用Struts的MVC2来做jsp网页,看了很多资料,有些东西很糊涂的,我对MVC2和asp.net中的三层结构的关系的理解如下几个问题,也不知道对不对?如果理解不对,请老大们指正一下!谢谢!
1.在jsp的MVC2(Model,View,Controller的缩写)中:Model层主要放JavaBean,Model层中主要放些连接数据库的字符串和操作数据库的代码(比如 添加信息 修改信息 更新信息 插入信息 删除信息等),Model层就相当于asp.net中的三层结构的数据访问层!对吗?如果理解不对,请老大们指正一下!谢谢!2.在jsp的MVC2(Model,View,Controller的缩写)中:View层主要放jsp页面(如index.jsp等页面文件),View层就相当于asp.net中的三层结构的表示层!对吗?如果理解不对,请老大们指正一下!谢谢!3.在jsp的MVC2(Model,View,Controller的缩写)中:Controller层主要放些配置文件Struts-Config.XML,这些配置文件中主要放一些和数据层打交道具体实现方法(如:使增、删、改这些方法的实现!)和数据是否唯一的验证和一些数据有效性的验证,Controller层就相当于asp.net中的三层结构的业务逻辑层!对吗?如果理解不对,请老大们指正一下!谢谢!

解决方案 »

  1.   

    我的理解是前端(页面)逻辑(业务处理)后端(数据源操作)
    我以前也是学.net的~~
      

  2.   

    1.在jsp的MVC2(Model,View,Controller的缩写)中:Model层主要放JavaBean,Model层中主要放些连接数据库的字符串和操作数据库的代码(比如 添加信息 修改信息 更新信息 插入信息 删除信息等),对,实现了业务逻辑2.在jsp的MVC2(Model,View,Controller的缩写)中:View层主要放jsp页面(如index.jsp等页面文件),View层就相当于asp.net中的三层结构的表示层!对,Struts使用结合标签在页面上只用些很少的java代码,甚至可以不写3.在jsp的MVC2(Model,View,Controller的缩写)中:Controller层主要放些配置文件Struts-Config.XML,不完全对,这些配置文件中主要放控制类Action的子类,以及ActionFrom的子类以及跳转路径。
    ActionFrom用于实现初始化表单值对象以及验证
    Action就用于调用业务逻辑进行实际的操作最后返回一个ActionFroward对象并找到相应的跳转路径进行跳转
      

  3.   

    MVC2???楼主错了,没有MVC2这种东东的.SUN公司为了将MVC模式应用于JAVA WEB中,先后制定了二种规范:Model1和Model2,我想楼主是把Model2和MVC混了.在Model2中:
    M层表示程序的状态和业务逻辑,由JAVABEAN和EJB组件来实现.
    V层楼主的理解没有错,就是JSP文件,Struts中把ActionBean也划分到了V层中,Struts用它来控制M与V之间表单数据的传递.
    C层就是Servlet,在Struts中,C层由ActionServlet类和Action类来实现,其中ActionServlet负责接收Http请求信息,然后根据Struts-Config.xml配置文件把请示转发给适当的Action对象.如果Action对象不存在,ActionServlet会创建一个Action对象.而Action类负责调用M层中的JavaBean或EJB组件的方法.具体的一些概念书上都写得很清楚,楼主查阅一下就会清楚了.
      

  4.   

    那按楼上的各位老大的分析看,我好像在MVC2中找不到数据访问层了,那是不是在MVC2中就不存在像asp.net中的三层结构的数据访问层了???{(也就是连接数据库的字符串和操作数据库的代码(比如 添加信息 修改信息 更新信息 插入信息 删除信息等)},对吗?请帮忙回一下!谢谢!
      

  5.   

    那按楼上的各位老大的分析看,我好像在MVC2中找不到数据访问层了,那是不是在MVC2中就不存在像asp.net中的三层结构的数据访问层了???{(也就是连接数据库的字符串和操作数据库的代码(比如 添加信息 修改信息 更新信息 插入信息 删除信息等)},对吗?请帮忙回一下!谢谢!
      

  6.   

    那按楼上的各位老大的分析看,我好像在MVC2中找不到数据访问层了,那是不是在MVC2中就不存在像asp.net中的三层结构的数据访问层了???{(也就是连接数据库的字符串和操作数据库的代码(比如 添加信息 修改信息 更新信息 插入信息 删除信息等)},对吗?请帮忙回一下!谢谢!
      

  7.   

    那按楼上的各位老大的分析看,我好像在MVC2中找不到数据访问层了,那是不是在MVC2中就不存在像asp.net中的三层结构的数据访问层了???{(也就是连接数据库的字符串和操作数据库的代码(比如 添加信息 修改信息 更新信息 插入信息 删除信息等)},对吗?请帮忙回一下!谢谢!知道的回一下啊!谢谢!
      

  8.   

    数据的访问层就是M层啊!具体的操作都封装到类里了,细划到每张表,一般每张表都有一个对应的BEAN,而数据的连接也封装在一个类里。
      

  9.   

    我觉得这些层不层是看以什么标准来划分,我所做的Net项目是 Model,DataAccess,(Business,WebService,Remoting,Com+),UI
      
           Java项目是 Model,DataAccess,ActionForm,Action,Bean,UI个人意见
      

  10.   

    看到了楼上一些前辈们的回答,让我们这些菜鸟更糊涂了啊!我想请问一下:asp.net中的三层结构的数据库访问层到底属不属于jsp中MVC的范围啊?(也就是MVC中到底有没有数据库访问层啊?)希望高手们给个标准的答案啊!谢谢了!
      

  11.   

    我自己看了一本电子书,我想大家可能都看过:Struts in Action 中文版49页有一段话如下:分层的web 应用使用一种比传统MVC 模式更加“扁平”的模式。控制器被夹在表现层(View) 和 应用逻辑 (Model)之间。
    395页有一段话如下:应用中的那些经常说 “这是我所有的,以及这是我想要的” 的部分通常称为是业务层,或者程为模型(Model) (MVC 中的M)。这也是你的应用所不同于其它应用的本质部分。
    这本电子书好像把业务逻辑层说成就是MVC的Model层啊!可我看别的MVC的文章又把数据库访问层说成是Model层啊!这让我们这些菜鸟更糊涂了啊!我想请问一下:asp.net中的三层结构的数据库访问层到底属不属于jsp中MVC的范围啊?(也就是MVC中到底有没有数据库访问层啊?)急想搞清楚这些重要的东西啊!希望高手们给个标准的答案啊!谢谢了!希望高手们给个标准的答案啊!谢谢了!希望高手们给个标准的答案啊!谢谢了!
      

  12.   

    我自己看了一本电子书,我想大家可能都看过:Struts in Action 中文版49页有一段话如下:分层的web 应用使用一种比传统MVC 模式更加“扁平”的模式。控制器被夹在表现层(View) 和 应用逻辑 (Model)之间。
    395页有一段话如下:应用中的那些经常说 “这是我所有的,以及这是我想要的” 的部分通常称为是业务层,或者程为模型(Model) (MVC 中的M)。这也是你的应用所不同于其它应用的本质部分。
    这本电子书好像把业务逻辑层说成就是MVC的Model层啊!可我看别的MVC的文章又把数据库访问层说成是Model层啊!这让我们这些菜鸟更糊涂了啊!我想请问一下:asp.net中的三层结构的数据库访问层到底属不属于jsp中MVC的范围啊?(也就是MVC中到底有没有数据库访问层啊?)急想搞清楚这些重要的东西啊!希望高手们给个标准的答案啊!谢谢了!希望高手们给个标准的答案啊!谢谢了!希望高手们给个标准的答案啊!谢谢了!
      

  13.   

    通过Java Swing看透MVC设计模式 作者: xymiser 出处: Java研究组织 责任编辑: 方舟 [ 2005-01-28 15:27 ]
      一个好的用户界面(GUI)的设计通常可以在现实世界找到相应的表现。例如,如果在您的面前摆放着一个类似于电脑键盘按键的一个简单的按钮,然而就是这么简单的一个按钮,我们就可以看出一个GUI设计的规则,它由两个主要的部分构成,一部分使得它具有了按钮应该具有的动作特性,例如可以被按下。另外一部分则负责它的表现,例如这个按钮是代表了A还是B。   看清楚这两点你就发现了一个很强大的设计方法,这种方法鼓励重用reuse,而不是重新设计redesign。你发现按钮都有相同的机理,你只要在按钮的顶上喷上不同的字母便能制造出“不同”的按钮,而不用为了每个按钮而重新设计一份图纸。这大大减轻了设计工作的时间和难度。  如果您把上述设计思想应用到软件开发领域,那么取得相似的效果一点都不让人惊奇。一个在软件开发领域应用的非常广泛的技术Model/View/Controller(MVC)便是这种思想的一个实现。  这当然很不错,但是或许您又开始疑惑这和java基础类JFC(Java Foundation Class)中的用户界面设计部分(Swing)又有什么关系呢?好的,我来告诉你。  尽管MVC设计模式通常是用来设计整个用户界面(GUI)的,JFC的设计者们却独创性的把这种设计模式用来设计Swing中的单个的组件(Component),例如表格Jtable,树Jtree,组合下拉列表框JcomboBox等等等等。这些组件都有一个Model,一个View,一个Controller,而且,这些model,view,controller可以独立的改变,就是当组件正在被使用的时候也是如此。这种特性使得开发GUI界面的工具包显得非常的灵活。  MVC设计模式把一个软件组件区分为三个不同的部分,model,view,controller。   Model是代表组件状态和低级行为的部分,它管理着自己的状态并且处理所有对状态的操作,model自己本身并不知道使用自己的view和controller是谁,系统维护着它和view之间的关系,当model发生了改变系统还负责通知相应的view。  View代表了管理model所含有的数据的一个视觉上的呈现。一个Model可以有一个以上的View,但是Swing中却很少有这样的情况。  Controller管理着model和用户之间的交互的控制。它提供了一些方法去处理当model的状态发生了变化时的情况。  使用键盘上的按钮的例子来说明一下:Model就是按钮的整个机械装置,View/Controller就是按钮的表面部分。  下面的图解释了如何把一个JFC开发的用户界面分为model,view,controller,注意,view/Controller被合并到了一起,这是MVC设计模式通常的用法,它们提供了组件的用户界面(UI)。  用Button的例子详细说明  为了更好的理解MVC设计模式和Swing用户界面组件之间的关系,让我们更加深入的进行分析。我将采用最常见的组件button来说明。  我们从model来开始。  Model  一个按钮的model所应该具备的行为由一个接口ButtonModel来完成。一个按钮model实例封装了其内部的状态,并且定义了按钮的行为。它的所有方法可以分为四类:  1、查询内部状态  2、操作内部状态  3、添加和删除事件监听器  4、发生事件 法。  程序员通常并不会直接和model以及view/controller打交道,他们通常隐藏于那些继承自java.awt.Component的组件里面了,这些组件就像胶水一样把MVC三者合三为一。也正是由于这些继承的组件对象,一个程序员可以很方便的混合使用Swing组件和AWT组件,然后,我们知道,Swing组件有很多都是直接继承自相应的AWT组件,它能提供比AWT组件更加方便易用的功能,所以通常情况下,我们没有必要混合使用两者。
    <BR> 共3页。 1 2 3 8 :楼主可研究下
      

  14.   

    我自己看了一本电子书,我想大家可能都看过:Struts in Action 中文版49页有一段话如下:分层的web 应用使用一种比传统MVC 模式更加“扁平”的模式。控制器被夹在表现层(View) 和 应用逻辑 (Model)之间。
    395页有一段话如下:应用中的那些经常说 “这是我所有的,以及这是我想要的” 的部分通常称为是业务层,或者程为模型(Model) (MVC 中的M)。这也是你的应用所不同于其它应用的本质部分。
    这本电子书好像把业务逻辑层说成就是MVC的Model层啊!可我看别的MVC的文章又把数据库访问层说成是Model层啊!这让我们这些菜鸟更糊涂了啊!我想请问一下:asp.net中的三层结构的数据库访问层到底属不属于jsp中MVC的范围啊?(也就是MVC中到底有没有数据库访问层啊?)急想搞清楚这些重要的东西啊!希望高手们给个标准的答案啊!谢谢了!希望高手们给个标准的答案啊!谢谢了!希望高手们给个标准的答案啊!谢谢了!
      

  15.   

    我自己看了一本电子书,我想大家可能都看过:Struts in Action 中文版49页有一段话如下:分层的web 应用使用一种比传统MVC 模式更加“扁平”的模式。控制器被夹在表现层(View) 和 应用逻辑 (Model)之间。
    395页有一段话如下:应用中的那些经常说 “这是我所有的,以及这是我想要的” 的部分通常称为是业务层,或者程为模型(Model) (MVC 中的M)。这也是你的应用所不同于其它应用的本质部分。
    这本电子书好像把业务逻辑层说成就是MVC的Model层啊!可我看别的MVC的文章又把数据库访问层说成是Model层啊!这让我们这些菜鸟更糊涂了啊!我想请问一下:asp.net中的三层结构的数据库访问层到底属不属于jsp中MVC的范围啊?(也就是MVC中到底有没有数据库访问层啊?)急想搞清楚这些重要的东西啊!希望高手们给个标准的答案啊!谢谢了!希望高手们给个标准的答案啊!谢谢了!希望高手们给个标准的答案啊!谢谢了!
      

  16.   

    楼主在学习mvc时最好不要用微软的三层架构往上面套,因为mvc中的模型视图与控制器与三层架构并不是一一对应的。mvc中m层一般包含三部分,分别是1。数据访问组件,负责数据库的连接以及提供增删改查关闭连接的方法。   2。状态组件,对应数据库里的表中的一条记录,一般每张表对应一个状态Bean,提供get set方法,用来维持数据。  3。操作组件,负责实现程序的大部分业务逻辑   
    所以基本上m层包括了数据访问和大部分业务逻辑的实现。而v层负责最终的呈现。c层控制器主要控制程序的流向,在Struts架构中可能c层也会包含少部分业务逻辑的实现。
      

  17.   

    hellovieri(阿威)回答得很清楚啊!多谢了!还想问一下你,你说的" 2。状态组件,对应数据库里的表中的一条记录,一般每张表对应一个状态Bean,提供get set方法,用来维持数据。" 如果单纯在struts框架这应该不存在,对吗?只有在加入了hibernation框架后,struts框架内才有你说的这第2。条,对吗?盼回复!多谢了!
      

  18.   

    hellovieri说得不错。MVC有可能其中一个就对应多层
    ASP.NET我也在做,感觉其实MS因为开发的方便性屏蔽了很多东西,在实际MVC的实现和构成上反而没有J2EE清晰
    其实大部分做。NET程序所谓的数据访问层无非就是定义访问接口,在接口实现中定义各种操作,在.NET中用ORM的不多
    而JSP的层次可能会更复杂一些,当然,不是说程序上的复杂
    比如structs webwork之类,其实说严格点都是提供的一种界面解决方案而已,M是JSP,C一般是structs和webwork给你控制了(交给他们的servlet做处理),将一个请求转交给Action
    C层也可以包含很多,比如webwork ,有丰富的拦截器的AOP实现,校验实现
    而M就可以很多了,如果分细点,可以包含Action类,操作接口,接口实现,然后数据库访问一般就是采用ORM方案在接口实现里面,就接口定义方面,跟。NET其实差不多,当然,嫌麻烦直接把逻辑处理写在Action的也有很多。不过由于有SRPING这些东东,JSP各层之前可以显得更独立,组合也更加自由。
      

  19.   

    我的理解是:
    V层就是.net中的.aspx(不包括.aspx.cs)
    其他就不存在必然的共同性了