MVC设计模式

Model 1 体系结构

在Model 1 体系结构中,每一个请求的目标都是JSP页面。JSP页面负责完成请求所需要的而所有任务,其中包括验证客户、使用JavaBeans访问数据库及管理用户状态等。最后响应结果也通过JSP页面发送给客户。

在该结构中没有一个核心组件控制应用程序的工作流程,所有业务处理都是用JavaBeans实现。该结构具有明显的缺点:

  1. 他需要将实现业务逻辑的大量Java代码嵌入到JSP页面,这对不熟悉服务器端编程的Web页面设计人员来说将十分困难。
  2. 这种方法并不具有代码可重用性。

Mode 2 体系结构

Model 2 体系结构又称MVC设计模式。在这种结构中,将Web组件分为模型(Model)、视图(View)和控制器(Controller),每种组件完成各自的任务。

在这种体系结构中,所有请求的目标都通过Servlet或过滤器(Filter),它充当应用程序的控制器。Servlet分析请求并将响应所需要的数据收集到Action对象或JavaBeans对象中,该对象作为应用程序的模型。最后Servlet控制器将请求转发到JSP页面。这些页面使用存储在JavaBeans中的数据产生响应。JSP页面构成了应用程序的视图。

优点:将业务逻辑和数据访问从表示层分离出来。控制器提供了应用程序的单一入口点,它提供了较为清晰的实现安全性和状态管理的方法,并且这些组件可以根据需要实现重用。然后,根据客户的请求,控制器将请求转发给合适的表示组件,由该组件来响应客户。这使得Web页面开发人员值关注数据的表示,因为JSP页面不需要任何复杂的业务逻辑。

实现MVC设计模式的一般步骤

    1. 定义JavaBeans存储数据
      在Web应用中通常使用JavaBeans对象或实体类存放数据,从JSP页面作用域中取出数据。因此,首先应根据应用处理的实体设计合适的JavaBeans。
    2. 使用Servlet处理用户请求。
      在MVC设计模式中,Servlet充当控制器功能,它从请求中读取请求信息、创建JavaBeans对象、执行业务逻辑,最后将请求转发到视图组件。Servlet通常不直接向客户输出数据。
    3. 结果的存储
      创建了与请求有关的数据并将数据存储到JavaBeans对象中后,接下来应该将这些对象存储在JSP页面能够访问的地方。
    4. 将请求转发到JSP页面
      再是用请求作用域共享数据的时候,应该使用RequestDispatcher对象的forward()方法将请求转发到JSP页面。在使用会话作用域共享数据的时候,使用响应对象的sendRedirect()方法重定向可能更合适。
    5. 从JavaBeans或其他作用域对象中提取数据。
      请求到达JSP页面之后,使用JSP动作指令提取JavaBeans数据,也可以使用表达式语言提取数据。

阅读笔记—MVC的更多相关文章

  1. 阅读笔记 1 火球 UML大战需求分析

    伴随着七天国庆的结束,紧张的学习生活也开始了,首先声明,阅读笔记随着我不断地阅读进度会慢慢更新,而不是一次性的写完,所以会重复的编辑.对于我选的这本   <火球 UML大战需求分析>,首先 ...

  2. [阅读笔记]Software optimization resources

    http://www.agner.org/optimize/#manuals 阅读笔记Optimizing software in C++   7. The efficiency of differe ...

  3. 《uml大战需求分析》阅读笔记05

    <uml大战需求分析>阅读笔记05 这次我主要阅读了这本书的第九十章,通过看这章的知识了解了不少的知识开发某系统的重要前提是:这个系统有谁在用?这些人通过这个系统能做什么事? 一般搞清楚这 ...

  4. <<UML大战需求分析>>阅读笔记(2)

    <<UML大战需求分析>>阅读笔记(2)> 此次读了uml大战需求分析的第三四章,我发现这本书讲的特别的好,由于这学期正在学习设计模式这本书,这本书就讲究对uml图的利用 ...

  5. uml大战需求分析阅读笔记01

    <<UML大战需求分析>>阅读笔记(1) 刚读了uml大战需求分析的第一二章,读了这些内容之后,令我深有感触.以前学习uml这门课的时候,并没有好好学,那时我认为这门课并没有什 ...

  6. Hadoop阅读笔记(七)——代理模式

    关于Hadoop已经小记了六篇,<Hadoop实战>也已经翻完7章.仔细想想,这么好的一个框架,不能只是流于应用层面,跑跑数据排序.单表链接等,想得其精髓,还需深入内部. 按照<Ha ...

  7. Hadoop阅读笔记(六)——洞悉Hadoop序列化机制Writable

    酒,是个好东西,前提要适量.今天参加了公司的年会,主题就是吃.喝.吹,除了那些天生话唠外,大部分人需要加点酒来作催化剂,让一个平时沉默寡言的码农也能成为一个喷子!在大家推杯换盏之际,难免一些画面浮现脑 ...

  8. Hadoop阅读笔记(五)——重返Hadoop目录结构

    常言道:男人是视觉动物.我觉得不完全对,我的理解是范围再扩大点,不管男人女人都是视觉动物.某些场合(比如面试.初次见面等),别人没有那么多的闲暇时间听你诉说过往以塑立一个关于你的完整模型.所以,第一眼 ...

  9. Hadoop阅读笔记(四)——一幅图看透MapReduce机制

    时至今日,已然看到第十章,似乎越是焦躁什么时候能翻完这本圣经的时候也让自己变得更加浮躁,想想后面还有一半的行程没走,我觉得这样“有口无心”的学习方式是不奏效的,或者是收效甚微的.如果有幸能有大牛路过, ...

随机推荐

  1. javascript上下文this

    js的四种调用方式: 一 作为函数的调用: 在严格模式下this,undefined,在非严格模式下指向全局window对象. 二 作为方法调用: this通常指向调用的对象 三 作为构造函数的调用: ...

  2. jQuery实现tab标签切换效果

    技巧一.jQuery :eq() 选择器 定义和用法 :eq() 选择器选取带有指定 index 值的元素. index 值从 0 开始,所有第一个元素的 index 值是 0(不是 1). 经常与其 ...

  3. zabbix2.4.5安装zatree插件

    一.关于zatree zatree 是来自国内58公司开发的监控软件zabbix的一个插件,主要功能是提供host group的树形展示和在item里指定关键字查询及数据排序. 项目地址:https: ...

  4. 使用jemdoc制作个人主页

    jemdoc官网说明: http://jemdoc.jaboc.net/index.html 作者的个人主页:https://jemnz.com/ 将下载的jemdoc.py文件和需要转化的xxx.j ...

  5. WHU 1548 Home 2-SAT

    ---恢复内容开始--- 题意: N个人想回家在至少一个时刻.至多两个时刻.并且,他们每个人都能独自回家. 定义:ai表示第i个人回家的时间, xij = abs(ai - aj) (i != j). ...

  6. Qt编译OpenGL程序遇到的问题

    软件版本号: Qt 4.8.5 依照网上的例程(http://www.qiliang.net/old/nehe_qt/lesson01.html),跑了一下基于Qt Creator的OpenGL.因为 ...

  7. 【HDU 5402】Travelling Salesman Problem(构造)

    被某题卡SB了,结果这题也没读好...以为每一个格子能够有负数就当搜索做了.怎么想也搜只是去,后来发现每一个格子是非负数,那么肯定就是构造题. 题解例如以下: 首先假设nn为奇数或者mm为奇数,那么显 ...

  8. Android LruCache 压缩图片 有效避免程序OOM

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9316683 本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工, ...

  9. .net core的安装

    安装完成后的路径在C:\Program Files\dotnet https://github.com/dotnet/cli/issues/390 ===2017年06月29日=== 安装成功之后,配 ...

  10. 智课雅思词汇---七、cur是什么意思

    智课雅思词汇---七.cur是什么意思 一.总结 一句话总结:词根:cur, curs ( cor, cour, cours, coars) = to run 1.cub是什么意思? 词根:cumb, ...