如何理解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. 三星S4,呼转的来电,在来电界面上不显示的解决方案

    因为工作关系,我有2个号码是呼叫转移到我现在的手机上的,如果有呼叫转移的来电的话,在通话界面里面没有提示该来电是呼叫转移来的.之前我用的诺基亚的,可以看到呼叫转移的来电,在号码的左边有个拐弯的箭头,提 ...

  2. spread表格树实现

    先上图看下效果图: 玩表格的朋友应该对Component和C1Flexgrid并不陌生吧.其实我也有用C1和DGV扩展了一个表格树,占有内存小,效率也可以,但是UI是硬伤,中规中矩,不美观.我上面是基 ...

  3. 不可或缺 Windows Native (17) - C++: 类与对象

    [源码下载] 不可或缺 Windows Native (17) - C++: 类与对象 作者:webabcd 介绍不可或缺 Windows Native 之 C++ 类与对象 示例1.类的设计CppE ...

  4. uums

    http://blog.csdn.net/hudon/article/details/1506042 http://www.cnblogs.com/biakia/p/4779655.html http ...

  5. Mysql新增用户,权限管理

    MySQL 赋予用户权限命令的简单格式可概括为:grant 权限 on 数据库对象 to 用户 一.grant 普通数据用户,查询.插入.更新.删除 数据库中所有表数据的权利. grant selec ...

  6. svn利用钩子实现代码同步到web目录

    思路:  找 到SVN Server中的仓库(Repositories)文件夹的位置,在相应的项目文件夹中找到hooks文件夹.在该文件夹中添加一个post- commit文件:当有commit动作发 ...

  7. Java识别操作系统

    /** * Created by xfyou on 2016/11/3. */ public class SysDep { final static String UNIX_NULL_DEV = &q ...

  8. java集合-HashTable

    概述 和 HashMap 一样,Hashtable 也是一个散列表,它存储的内容是键值对. Hashtable 在 Java 中的定义为: public class Hashtable<K,V& ...

  9. Java IO 装饰者模式

    装饰模式(Decorator) 装饰模式又名包装(Wrapper)模式. 装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案. 装饰模式通过创建一个包装对象,也就是装饰,来包裹真实的 ...

  10. 小伙伴们惊呆了!10行 JavaScript 实现文本编辑器

    最近,我需要做一个非常基本的网页内容编辑功能.我不想使用 iframe ,我也不想要一个功能特别多的复杂编辑器,只需要很基本的内容编辑功能,例如粗体,斜体,列表,对齐等等. 您可能感兴趣的相关文章 分 ...