有关MVC简单的的自我学习

MVC的自我学习

本文原创地址:http://www.cnblogs.com/landeanfen/p/5989092.html 欢迎转载

一: 首先要明白MVC框架和MVC设计模式的区别
设计模式:是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,它强调的是一个设计问题的解决方法。
框架:软件框架是项目软件开发过程中提取特定领域软件的共性部分形成的体系结构,不同领域的软件项目有着不同的框架类型。框架不是现成可用的应用系统。而是一个半成品,提供了诸多服务,开发人员进行二次开发,实现具体功能的应用系统。

首先来说说MVC设计模型:
1.定义:MVC 设计模型是一种使用 Model View Controller( 模型-视图-控制器)设计创建 Web 应用程序的模式。
2.既然使用了 Model View Controller( 模型-视图-控制器),那么就很有必要来介绍一下该(模型-视图-控制器)到底是怎样的一个东西?
Model(模型):是应用程序中用于处理应用程序数据逻辑的部分。
    通常模型对象负责在数据库中存取数据。
View(视图):是应用程序中处理数据显示的部分。
     通常视图是依据模型数据创建的。
Controller(控制器):是应用程序中处理用户交互的部分。
     通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
    
再来说说MVC框架:
1.MVC框架,它强制性的使应用程序输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型(Model)、视图(View)、控制器(Controller)。它们各自处理自己的任务。
2.最典型的MVC就是JSP + servlet + javabean的模式。
3. 视图:视图是用户看到并与之交互的界面。视图主要有元素HTML ,Flash,XHTML,XML/XSL,WML等一些标识语言和Web services。
MVC指MVC模式的某种框架,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。最典型的MVC就是JSP + servlet + javabean的模式。
使用MVC分层设计之后,代码结构如下:
有关MVC简单的的自我学习
图中有关Model,View,Controller详解
1、Model
模型层,可以简单理解就是数据层,用于提供数据。在项目中,(简单理解)一般把数据访问和操作,比如将对象关系映射这样的代码作为Model层,也就是对数据库的操作这一些列的代码作为Model层。比如代码中我们会写DAO和DTO类型的代码,那这个DAO和DTO我们可以理解为是属于Model层的代码。
2、View
视图层,就是UI界面,用于跟用户进行交互。一般所有的JSP、Html等页面就是View层。
3、Controller
控制层,Controller层的功能就是将Model和View层进行关联。比如View主要是显示数据的,但是数据又需要Model去访问,这样的话,View会先告诉Controller,然后Controller再告诉Model,Model请求完数据之后,再告诉View。这样View就可以显示数据了

MVC框架的优点
1.耦合性低
视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。
2.重用性高
MVC模式允许使用各种不同样式的视图来访问同一个服务器端的代码
3.生命周期成本低
MVC使开发和维护用户接口的技术含量降低。
4.部署快
使用MVC模式使开发时间得到相当大的缩减,它使程序员(Java开发人员)集中精力于业务逻辑,界面程序员(HTML和JSP开发人员)集中精力于表现形式上。
5.可维护性高
分离视图层和业务逻辑层也使得WEB应用更易于维护和修改。
6.有利软件工程化管理

MVC框架的缺点
1.没有明确的定义
完全理解MVC并不是很容易。使用MVC需要精心的计划,由于它的内部原理比较复杂,所以需要花费一些时间去思考。同时由于模型和视图要严格的分离,这样也给调试应用程序带来了一定的困难。每个构件在使用之前都需要经过彻底的测试。
2.不适合小型,中等规模的应用程序
花费大量时间将MVC应用到规模并不是很大的应用程序通常会得不偿失。
3.增加系统结构和实现的复杂性
对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。
4.视图与控制器间的过于紧密的连接
视图与控制器是相互分离,但却是联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。
5.视图对模型数据的低效率访问
依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。
6.一般高级的界面工具或构造器不支持模式
改造这些工具以适应MVC需要和建立分离的部件的代价是很高的,会造成MVC使用的困难。

学习Spring MVC框架的搭建
原文记载:https://blog.csdn.net/chenkai904/article/details/77658107

先来了解一下,Spring MVC框架的几个重要的接口与类。
DispatcherServlet – 前置控制器
HandlerMapping接口 – 处理请求的映射
HandlerMapping接口的实现类:
SimpleUrlHandlerMapping 通过配置文件,把一个URL映射到Controller
DefaultAnnotationHandlerMapping 通过注解,把一个URL映射到Controller类上
HandlerAdapter接口 – 处理请求的映射
AnnotationMethodHandlerAdapter类,通过注解,把一个URL映射到Controller类的方法上
Controller接口 – 控制器
HandlerInterceptor 接口–拦截器
轻量级MVC(jquery+Spring MVC+Spring+Mybatis)框架搭建
ViewResolver接口的实现类
UrlBasedViewResolver类 通过配置文件,把一个视图名交给到一个View来处理
InternalResourceViewResolver类,比上面的类,加入了JSTL的支持
View接口
JstlView类
LocalResolver接口
HandlerExceptionResolver接口 --异常处理
SimpleMappingExceptionResolver实现类
ModelAndView类

Spring MVC核心流程图
有关MVC简单的的自我学习

一:首先新建工程,目录如下所示:
有关MVC简单的的自我学习
二:使用maven构建工程,引入spring mvc相关的包
有关MVC简单的的自我学习
三:maven配置完成以后开始配置web.xml文件,如下所示:
具体可查看https://blog.csdn.net/chenkai904/article/details/77658107网站
https://blog.csdn.net/chenkai904/article/details/77658107
四:开始写测试代码了,首先新建一个测试的controller,代码如下:
有关MVC简单的的自我学习
同时在WEB-INF/jsp目录下新建index.jsp,jsp名字需要与返回的字符串相同,代码如下所示:
有关MVC简单的的自我学习
在浏览器中访问的结果如下所示:
有关MVC简单的的自我学习