`
ljh_uncle
  • 浏览: 6993 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

我对MVC的理解

    博客分类:
  • ssh
阅读更多
     从大一开始学习JAVAWEB开发到现在,我对mvc的理解一直是处于短路状态,在没有一点点的mvc概念之前,我都是在jsp上面堆满了各种逻辑判断,各种<% ....%>然后里面就是无穷尽的if{...}else{...}
嘿嘿,那时候还以为,哇,超牛b,一个文件搞定所有,知道后来学习了serverlet,突然又觉得,serverlet还不错嘛,然后又在serverlet里面堆了很多逻辑判断,同时在jsp里面也堆很多<%%>,那时候,已经觉得,jsp+serverlet+javaBean已经是一种很完美的模式了,那个时候,老师时不时强调什么是MVC。他说,M就是Model,对应着javaBean;V就是View,对应着jsp;C就是Control,对应着serverlet。
     我听着,觉得挺有道理,就记下了,以后每次做一些小项目,都是按照流程做,先
M然后C,再V。嘿,那时候觉得,还挺顺溜的。后来又学习了JDBC,觉得更神奇了,居然还可以从数据库中娶数据。当时通过jdbc,从数据库中取出自己的名字,然后打印在jsp页面的时候,我了个擦,无比激动。
    之后自己又学习了struts2,学完了struts2再去看下struts1,我靠,怎么相差这么多,不是1和2吗,当时就是图个新,去学了struts2的。那时候理所当然的想,嗯,对,struts2就是control层了,妥妥的,没争议。
    学struts2是大二的事了,那时候老师还在教serverlet,我自学了struts2和hibernate。
突然觉得,hibernate这么厉害,以前jdbc要很多行的代码,现在一两行就行,当时就觉得,hibernate超神奇。然后又想,hibernate属于哪一层呢,javaBean属于model层,struts2属于control层,jsp属于view层,当时就蒙了。。。当时冥思苦想,还是没想明白,就暂时归为了model层,因为hibernate它直接操作javabean和数据库,接的最近,嗯,当时就是这么想的。后来因为做项目的需要,又学习了spring,当时是spring2.5。当时在用spring的ioc和aop的时候,又觉得spring很牛逼,它还能知道你在什么时候想做什么,然后还帮你去实现你要的东西,觉得spring控制着全局,然后就很坚决的认为,spring属于control层。。。
    一直到现在我还在不断的摸索中(虽然只过了半年,但是好像过了很久),期间我纠正了我很多的理所当然的想法。
    我觉得,具体什么是MVC,不重要,重要的是,你想要什么,以及你想要用你以前的模式或经验之类的东西,为你做了什么。不过,我还是忍不住,来说说据我了解的mvc,当然是很肤浅的一种理解,哈哈。
    在我看来,mvc是一种思想,是一种解决事情的流程或手法,或者可以说是一种解决事情最佳实践。它不是针对具体什么层或处于什么层。就是在不断的实践中,那些大牛觉以这样的想法来做事最爽,所以就渐渐的总结出了一套最佳实践的方案。而struts2就是用了这种MVC思想,它是MVC的一种具体实现。
    就拿一个具体的项目来说(话说我没有做过怎么真正的项目),比如你用的是jsp+struts2+hibernate+spring的解决方案。这时候从小的方面来说,可以把项目划分为web层、业务层(service)、持久层(DAO)。先说下我理解的业务层和持久层。DAO(data access object)简单来说就是数据访问对象,这是最底的一层,与数据库操作相关,与具体
的业务逻辑无关,纯粹是对元数据的一种操作,它不用管你这个数据对象是做什么的,该取出来的时候取出来,该丢弃的就丢弃,该查询的时候就查询,该更改的时候就更改。而且在这一层,不应该有任何的业务上的逻辑判断,纯粹的增、删、改、查,这4个动作已足够。有些人把分页也嵌在dao层,这种做法不提倡,分页最好还是放在业务层或更高的层来做,可以做个缓存插件来维护数据库和业务层或更高层的数据实时性。
    业务层是核心层,和具体的业务相关。基本上你要的功能,全部在这一层实现。该计算的计算,该判断的判断等等,这一层和一些具体的行业业务背景操作相关联,每一行的实现都不一样,是一个项目中最最核心的一部分,也是最最复杂的一部分,做这一层的,往往是最核心的程序员来做,他还要有相关的行业知识才能胜任。由于太复杂,鉴于理解不够深入,所以就到此为止。然后就是web层了,用struts2来处理web层,因为struts2的MVC模式对于处理web层,可以说到目前为止是一种最佳实践。
    strut2里面的M层就是一系列的Action,无论是基于setter还是ModelDriven实现的,因为在Action中是存放数据的,它起到一个数据存取和传递的作用。V就是jsp或者一些用于页面显示的模板,用来和用户进行交互的页面。C就是struts2的一些xml配置文件了,比如struts.xml,这些配置文件就是控制页面的跳转的,起到控制的作用。而hibernate和spring不属于这些层的任何一层,可以理解为hibernate和spring仅仅是个工具。hibernate用于在dao层更好地实现数据的持久化,spring用于解耦web层、业务层(service)以及持久层而已。














分享到:
评论

相关推荐

    mvc各种理解介绍

    MVC架构模式可以看成是对用户界面层的细分,直接把业务逻辑和数据访问层放在了M块。 MVC架构模式的主要特点是将项目结构分成若干块,每个功能类都是独立的,可以被其他功能调用,例如显示领域,控制显示领域,实现...

    Android学习之浅谈对MVC模式和MVP模式的理解

    在Android开发领域,理解并应用合适的架构模式对于创建可维护、可扩展的代码至关重要。本文将深入探讨两种常见的设计模式——MVC(Model-View-Controller)和MVP(Model-View-Presenter),并结合实际的TestMVP项目...

    有关MVC的深入理解的几篇文档

    全方面理解MVC模式不仅包括基本概念,还包括实际应用场景、最佳实践以及其与其他设计模式的对比,如MVVM(Model-View-ViewModel)和MVP(Model-View-Presenter)。了解这些可以帮助开发者更好地选择适合项目的技术栈...

    MVC框架的理解

    ### MVC框架的理解 MVC(Model-View-Controller)架构模式是软件工程中常用的一种设计模式,主要用于简化复杂的用户界面程序开发。它将应用程序分为三个核心部分:模型(Model)、视图(View)和控制器(Controller...

    一个简音的MVC框架,适合初学MVC的人理解

    **学习MVC框架**,首先需要理解MVC模式的基本概念,接着通过实践编写Model、View和Controller来建立实际的应用。在"SimulateMVC"中,你可以通过阅读代码了解每个部分是如何协作的,以及如何组织和管理代码以实现MVC...

    java面1试题+你对MVC的理解,MVC有什么优缺点.pdf

    。。java面1试题+你对MVC的理解,MVC有什么优缺点.pdf

    对MVC三成构架的理解

    **对MVC三成构架的理解** MVC(Model-View-Controller)是一种软件设计模式,广泛应用于Web应用开发中,以实现业务逻辑与用户界面的分离,提高代码的可维护性和可重用性。这一模式由三个核心组件组成:模型(Model...

    自定义mvc理解与增强

    1.获取*.action完整路径 2.获取*.截取完整请求路径,得到请求路径名。 3.根据请求路径获取对应的Action子控制器 。 4.将请求委托action子控制器处理。

    自己利用mvc写了个简单的框架,对理解mvc以及sturts有很大的帮助

    因此,这个自定义的框架可能是对Struts的一种简化实现或者模仿,以便于学习和理解。 **MVC模式详解** MVC模式的核心思想是将应用分为三个主要组件: 1. **Model(模型)**:负责管理应用程序的数据和业务逻辑。当...

    我的mvc示例代码

    本示例代码"我的mvc示例代码"旨在展示如何使用Spring MVC与MyBatis集成,创建一个功能完整的Java Web应用。 首先,让我们详细了解Spring MVC。Spring MVC提供了一个模型视图控制器的分离,使得开发者可以清晰地处理...

    MVC详细教程,外加一个很经典的MVC小案例,帮助理解

    学习这个MVC详细教程,你将深入理解如何组织代码,如何设计高效的Web应用,以及如何利用MVC模式来提高开发效率。教程可能包含理论讲解、代码示例和实践项目,一步步引导你掌握MVC的核心概念和实践技巧。 通过阅读...

    mvc 代码 mvc 代码

    **MVC(Model-View-Controller)模式**是软件工程中一种广泛采用的设计模式,尤其在Web...通过深入研究MVC源码,开发者不仅可以掌握MVC模式的实现细节,还能提升对Web应用架构的理解,从而更好地设计和优化自己的项目。

    中文版小MVC

    `中文版小MVC`是一个专为英语能力有限的开发者设计的简单MVC框架实现,其代码尽可能使用中文注释,以便于理解和学习MVC模式的基本概念。MVC(Model-View-Controller)是一种广泛应用于Web开发的设计模式,它将业务...

    MVC简单例子C#

    **MVC(Model-View-Controller)模式是软件开发中...总结,这个"MVC简单例子C#"涵盖了C#编程语言和MVC设计模式在Web开发中的应用,通过理解和实践这个例子,你可以更好地掌握如何在C#环境下构建高效、可维护的Web应用。

    C++实现简单的MVC框架

    本项目是用C++实现的一个简单的MVC框架,名为MVCDemo,旨在帮助开发者理解MVC设计模式的基础概念。 首先,我们来详细解释MVC的三个组成部分: 1. Model(模型):模型层是应用的核心,它负责管理数据和业务逻辑。...

    基于ASP.NET MVC项目实例

    - **扩展实践**:尝试添加新功能,如用户认证、角色管理等,以加深对MVC模式的理解。 通过这个项目实例,你将不仅学会如何使用ASP.NET MVC框架,还能掌握Web开发的最佳实践,为未来更复杂的Web应用程序开发打下坚实...

    经典MVC登录实例代码

    **MVC模式与Servlet、JSP的协同工作** ...以上就是关于"经典MVC登录实例代码"所涉及的核心知识点,希望对你在理解和应用MVC模式、Servlet和JSP方面有所帮助。通过实践这个实例,你可以进一步提升在Web开发领域的技能。

    MVC4.0与MVC汉化包

    1. **移动支持**:MVC4引入了对移动设备的原生支持,包括对iOS、Android和Windows Phone等平台的优化。通过自动检测设备类型,可以为不同设备提供定制的视图。 2. **Web API**:MVC4包含了ASP.NET Web API,这是一...

    ASP.NET MVC5

    ASP.NET MVC5是一个基于微软.NET Framework的..."J.T.ASP.NET MVC 5.pdf"这个文件很可能是关于这一主题的详细教程,涵盖这些知识点,对于新手来说是一份宝贵的资源,可以帮助他们快速上手并深入理解ASP.NET MVC5框架。

Global site tag (gtag.js) - Google Analytics