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. Java 学习(12):重写(Override)与重载(Overload) & 多态

    目录 --- 重写 --- 重载 --- 多态 重写(Override) 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变.即外壳不变,核心重写! 重写的好处在于子类可 ...

  2. Spring-statemachine给end状态设置action

    Spring-statemachine版本:当前最新的1.2.3.RELEASE版本 builder.configureStates() .withStates() .initial(generate ...

  3. spring的PropertyPlaceholderConfigurer不生效的问题

    经常出现这种问题,每次都debug知道原因,但每次都会忘记,所以记录一下. 原因:maven项目中使用了非maven管理的jar包(通过systemPath引用),这些jar包没有放在${projec ...

  4. C#+ArcGIS Engine 获取地图中选中的要素

    转自 C#+ArcGIS Engine 获取地图中选中的要素 C#+ArcGIS Engine 获取地图中选中的要素 提供一种简单遍历获取地图中选中要素的方法,代码如下: List<IFeatu ...

  5. java设计模式学习 ----- 单例模式(Singleton)

    单例模式(Singleton) 单例对象(Singleton)是一种经常使用的设计模式. 在Java应用中,单例对象能保证在一个JVM中,该对象仅仅有一个实例存在.单例模式也分三种:懒汉式单例.饿汉式 ...

  6. 使用ssh过程中对数据库进行update时报错

    报错信息:org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in ...

  7. HDFS中的命令行

    HDFS中的命令行 本文介绍了HDFS以命令行执行的时候.几个经常使用的命令行的作用和怎样使用~ 1. fs fs是启动命令行动作,该命令用于提供一系列子命令. 使用形式为hadoop fs –cmd ...

  8. Light oj 1138 - Trailing Zeroes (III) 【二分查找好题】【 给出N!末尾有连续的Q个0,让你求最小的N】

    1138 - Trailing Zeroes (III) PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 ...

  9. java-proxool 异常

    使用 proxool,JDBC连接池,进行批量运行的时候遇到异常: The Thread responsible was named 'Thread-32′, but the last SQL it ...

  10. LSTM入门学习——本质上就是比RNN的隐藏层公式稍微复杂了一点点而已

    LSTM入门学习 摘自:http://blog.csdn.net/hjimce/article/details/51234311 下面先给出LSTM的网络结构图: 看到网络结构图好像很复杂的样子,其实 ...