如何理解web mvc框架??

一、没有使用mvc框架之前我们都是自己根据mvc分层思想的理解去把它物理化,比如:根据包的命名,根据类的后缀名,根据文件夹的命名去定义分层。
因为每个人对mvc的理解不一样所以他的物理化体现也不一样,这就导致理解上困难,并且A规划了一遍之后,B也要规划一遍,这样就造成了不能统一
做了很多重复的工作,那么我们如果都采用同一个框架,这个框架已经将mvc的物理化抽象出来啦,那么大家就可以避免重复,理解可以统一啦。 二、web业务处理的核心就是响应http请求,在这个过程中有很多重复性的工作,使我们不能专注于业务实现,这个时候框架就又帮助我们做了很多的事情,
比如:将一个http请求达到处理这个请求的处理函数上,在到达处理函数之前进行一些权限判断,请求参数的封装,将处理完的数据进行页面的渲染等
所以web mvc框架实际上做了两大类事情:
第一类:将mvc分层思想应用于http请求响应的整个过程。
第二类:帮助使用者屏蔽web重复性的工作。
常见的mvc框架都有哪些??

spring mvc ,nutz,Struts等 
实际生产环境中我们的选型是使用nutz,所以下面就谈谈nutz是如何体现mvc分层思想的。
nutz框架是如何体现mvc分层思想的??

Controller:
nutz里有一个Module的概念。
类名一xxxModule结尾的类名就定义它是一个模块类这个类和Struts的action概念相同,只负责接收请求,调用相关处理业务,返回响应的视图。 一个标准module的处理函数: 只是负责调用该module对应的service处理业务,并指定返回的视图类型以及对应的路径。 View:
nutz给视图的定义:将入口函数的返回值(一个Java对象)渲染到 HTTP 响应流中。
nutz认为:一种视图就是一种将 Java 对象写入 HTTP 响应流的方式。
视图的类型大致有: JSP - 采用 JSP 模板输出网页
Redirect - 客户端重定向
Forward - 服务器端中转
Json - 将对象输出成 Json 字符串
void - 什么都不做
具体的实现过程可以参考nutz的文档。
nutz帮助我们实现了视图层的处理,
这样我们就不用再去关心如何将数据渲染到视图上啦,这就实现了视图和业务分离的目的。 Model:
模型层的核心是提供具体算法完成请求,比如:业务逻辑的算法,数据持久的算法。
我认为这一层主要是由使用框架者根据实际业务以及业务的需求来实现的,
框架做的事情就是为我们在实现业务的过程中消除重复让我更加专注业务,
比如:为我们提供Ioc容器帮助我们管理Bean的生命周期,
          为我们提供数据库持久的基本操作接口,帮住我们减少在数据持久层的关注。
nutz处理一个http请求的过程mvc的体现:

web的核心是对http请求的处理与相应。应用mvc分层思想下的http请求的处理过程如下图:
1 用户通过浏览器发送一个http请求。
2 最终http请求到到达对应的服务器。
3 服务器找到对应的应用程序。
4 nutz会根据http的url请求映射到一个module类中的一个处理函数上。(controller层)
5 这个module处理函数调用页面service类,页面service类调用下层的business层service,
business层调用组装对应的base层的实体baseService,以及对应的dao操作,最终完成这个http请求的业务。(Model层)
6 nutz会根据这个module函数的@ok的类型决定输出什么视图类型:
有可能是jsp,json,文件流或者什么都不做。 (view层)
很明显,module只负责分发请求,返回视图类型也就是mvc中的Controller。
web层,business层,base层的service以及实体就是mvc中的module层。
nutz根据处理函数的视图类型对视图进行渲染。
nutz都做了哪些事情??

1.要全盘接受http请求,所以要配置一个大大的过滤器(servlet中的Filter),用于拦截所有的http请求。
所有它提供给你一个过滤器让你在web.xml中配置,让 预配置的项应用于处理每一个http请求中。 2.Nutz.Mvc 的核心任务就是将 HTTP 请求的 URL 映射到某一个入口函数。
基于@At注解将一个HTTP请求路径同一个 Java 函数关联起来。
3. 使用动作链机制可以定义处理一个http请求的动作顺序。 4.在http url请求到达模块的处理函数之前可以为你提供添加过滤器的方法。
比如:权限验证的过滤器,验证是否登录过滤器... 5.对http请求的参数进行适配【适配器】,也就是:"将 HTTP 参数转换成一个函数参数的过程"
如:
1.将http请求参数封装到处理函数的参数上。
2.将请求参数封装到form对象Bean中。
3.将http输入流(上传文件)映射到入口函数中的文件对象上。
4.获取servlet容器中的内置对象。
6. 将入口函数的返回值(一个Java对象)渲染到 HTTP 响应流中。 7. nutz为我们提供mvc框架挂接一个Ioc容器的方法,可以将需要被管理的bean交给Ioc容器管理。

nutz如何体现mvc思想的的更多相关文章

  1. MVC思想及SpringMVC设计理念

    1:什么是MVC        MVC(Model View Controller)是一种软件设计的框架模式,它采用模型(Model)-视图(View)-控制器(controller)的方法把业务逻辑 ...

  2. java web mvc思想介绍

    1.首先简介一下什么是MVC思想. 在百度百科里面对MVC的说明,MVC全名是Model View Controller.是模型(model)-视图(view)-控制器(controller)的缩写. ...

  3. MVC思想架构的简单自定义UITableViewCell

         在iOS的开发过程中,架构思想是很重要的一部分,目前的主流应该分为MVC与MVVM两种,在这里不做过多的区分,有兴趣的同学可以看看唐巧大神的一篇文章<被误解的MVC和被神化的MVVM& ...

  4. MVC思想概述

    一. 传统Model1和Model2 Model1:整个web应用几乎全部用JSP页面组成,JSP页面接收处理客户端请求,对请求处理后直接作出响应.用少量的javaBean来处理数据库链接,数据库访问 ...

  5. iOS彩票项目--第六天,运用MVC思想搭建设置界面(非storyboard方法)

    一.我只想说封装的思想很重要,MVC的思想也很重要,利用MVC思想搭建一下的界面 先说显示出来的cell,有三种(图中的两种,还有一种是最普通的,没有图片的),这种显示不同的cell,交给模型来处理, ...

  6. angularJS中的MVC思想?

    mvc 思想: 将应用程序的组成,划分为三个部分:model , controller 和 view ; - 控制器的作用是用来初始化模型用的: - 模型就是用于存储数据的: - 视图是展示数据的: ...

  7. javaBean和mvc思想

    JavaBean,  咖啡豆. JavaBean是一种开发规范,可以说是一种技术. JavaBean就是一个普通的java类.只有符合以下规定才能称之为javabean: 1)必须提供无参数的构造方法 ...

  8. 全局变量变为局部变量 & MVC思想

    1 函数中的全局变量如何变成局部变量? 全局变量之间会相互骚扰.所以在代码中不要用全局变量.ES6之前只有函数里面有全局变量. 全局变成局部变量怎么变? 把代-放在一个函数如中,再.call()执行一 ...

  9. 简洁的MVC思想框架——Nancy(环境配置与Get操作)

    Nancy官网——https://github.com/NancyFx/Nancy 概述:Nancy是一个开源的Web轻型框架内核符合MVC思想,有开发方便,路由简单的特点,而且功能齐全 起步:Hel ...

随机推荐

  1. Asp.net中使用Server.HtmlDecode(string str)的使用

    前言: 在使用Visual Studio开发web页面时,需要在GridView中绑定Table数据,并加入了CommandField, 试图,点击详情按钮是,获取GridView中Rows中Cell ...

  2. android FragmentActivity+FragmentTabHost+Fragment框架布局

    这周比较闲,计划系统的学习一下android开发,我本是一名IOS程序员,对手机开发还是有自己的一套思路的, 固这套思路用到我当前学android上了,先选择从Main页面的tabbar部分代码入手, ...

  3. No suitable driver found for jdbc:mysql://localhost:3306/dmc

    1. 使用java jdbc直接连接数据库操作, 出现题中错误, 参考网上说法, 将mysql连接jar放入jre拓展底下 不再报错

  4. Atitit. 获取cpu占有率的 java c# .net php node.js的实现

    Atitit. 获取cpu占有率的 java c# .net php node.js的实现 通过wmic接口获取cpu占有率 C:\Users\Administrator.ATTILAXPC188&g ...

  5. Linux下安装mongodb详细过程

    本次安装mongodb使用yum.repo方式.详细过程请参考,也列出一些安装过程中的错误,欢迎指正. mongodb版本:3.0 先在linux下cd 到 /etc/yum.repos.d/ 新建脚 ...

  6. Planetary.js:帮助你构建超炫的互动球体效果

    Planetary.js 是一个 JavaScript 库,用于构建互动球体效果.它使用 D3 和 TopoJSON 解析和渲染地理数据.Planetary.js 采用了基于插件的架构,即使是默认的功 ...

  7. 【iScroll源码学习04】分离IScroll核心

    前言 最近几天我们前前后后基本将iScroll源码学的七七八八了,文章中未涉及的各位就要自己去看了 1. [iScroll源码学习03]iScroll事件机制与滚动条的实现 2. [iScroll源码 ...

  8. 3D打印公司网站dedecms大气模板

    模板描述:1. 用FTP将安装包上传到服务器解压(或者解压在上传): 2. http://您的域名/install/ 进入到安装界面, 按照正常步骤安装即可:不要修改数据库表前缀,否则会造成原先数据无 ...

  9. animate 实现滑动切换效果

    今天和大家分享一下用 animate 实现滑动切换效果的小例子 ------- 来自<一只有梦想的前端小白> 大家都知道jQuery 提供的有一下几种方法能够实现滑动效果: slideDo ...

  10. 从angularJS看MVVM

    javascript厚积薄发走势异常迅猛,导致现在各种MV*框架百家争雄,MVVM从MVC演变而来,为javascript注入了全新的活力.我工作的业务不会涉及到angularJS[ng]这么重量级的 ...