`
loky
  • 浏览: 182368 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
阅读更多

开发者在线 Builder.com.cn 更新时间:2007-09-10作者:中国IT实验室 来源:中国IT实验室

  
  MVC是三个单词的缩写,分别为:
  
  模型(Model),视图(View)和控制Controller)。
  
  MVC模式的目的就是实现Web系统的职能分工。
  
  Model层实现系统中的业务逻辑,通常可以用JavaBean或EJB来实现。
  
  View层用于与用户的交互,通常用JSP来实现。
  
  Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。
  
  MVC模式的好处
  
  各施其职,互不干涉
  
  在MVC模式中,三个层各施其职,所以如果一旦哪一层的需求发生了变化,就只需要更改相应的层中的代码而不会影响到其它层中的代码。
  
  有利于开发中的分工
  
  在MVC模式中,由于按层把系统开,那么就能更好的实现开发中的分工。网页设计人员可以进行开发视图层中的JSP,对业务熟悉的开发人员可开发业务层,而其它开发人员可开发控制层。
  
  有利于组件的重用
  
  分层后更有利于组件的重用。如控制层可独立成一个能用的组件,视图层也可做成通用的操作界面。
  
  不同JSP构造的应用
  
  为什么要组合使用servlet & JSP?
  
  典型的做法:使用JSP来简化HTML内容的开发与维护
  
  对于简单的动态代码,使用由脚本元素调用JAVA代码来完成。
  
  对于稍微复杂一些的应用,则可使用脚本元素调用定制的类来完成。(即所谓的help类)
  
  对于比较复杂的应用,则使用JAVA BEAN和定制标签
  
  但,这些是不够的
  
  对于复杂的处理过程,从JSP开始做起会难以处理。
  
  JSP除了能够带来将实际的代码隔离成单独的类、bean、和定制标签的便利以外,它所隐含的假定是单个页面给出单个基本视图。
  
  对MVC的误解
  
  必须采用复杂的框架
  
  框架有时很有用
  
  Struts
  
  JavaServer Faces (JSF)
  
  但并非必需!
  
  对于大多简单或者适度复杂的应用来说,使用内建的RequestDispatcher就能够很好地实现MVC
  
  MVC影响整个系统的设计
  
  我们可以用MVC来处理单个请求
  
  可以将它认为是MVC方案,而非MVC框架。
  
  也被称为是模型2方案
  
  用RequestDispatcher实现MVC
  
  1. 定义用以表示数据的java bean
  
  2. 使用一个servlet处理请求
  
  servlet读取请求参数,检查数据的缺失或异常等。
  
  3. 填充bean
  
  该servlet调用业务逻辑或数据访问代码得到最终的结果。得出的结果被放在第一步中定义的bean中。
  
  4. 将bean存储在请求,会话或servlet的上下文中
  
  该servlet调用请求、会话或servlet上下文对象的setAttribute存储表达请求结果的bean的引用。
  
  5. 将请求转发到JSP页面
  
  该servlet确定哪个JSP页面适合于处理当前的情形,并使用RequestDispatcher的forward方法将控制转移到那个页面。
  
  6. 从bean中提取数据
  
  JSP页面使用jsp:useBean和与第4步匹配的位置访问之前存储的bean,然后使用jsp:getProperty输出bean的属性。
  
  JSP页面并不创建或修改bean;它只是提取并显示由servlet创建的数据。
  
  jsp:useBean在MVC中的使用与在独立JSP页面中有什么不同
  
  JSP页面不应该创建对象
  
  应该由servlet创建所有的数据对象。因此,为了保证JSP页面不会创建对象,我们应该使用<jsp:usebean type="“package.Class”"></jsp:usebean>
  
  而不是<jsp:usebean class="package.Class"></jsp:usebean>
  
  JSP页面也不应该修改已有的对象
  
  因此,我们应该只使用jsp:getProperty,不使用jsp:setProperty。 提示:jsp:useBean的scope选项
  
  request
  <jsp:usebean id="..." type="..." scope="request"></jsp:usebean>
  session
  <jsp:usebean id="..." type="..." scope="session"></jsp:usebean>
  application
  <jsp:usebean id=".." type=".." scope="application"></jsp:usebean>
  page
  <jsp:usebean id="“...”" type="“...”" scope="“page”"></jsp:usebean>
  或者仅仅使用<jsp:usebean id="..." type="..."></jsp:usebean>
  
  MVC (Model 2)构架不使用这个scope。
  
  不同数据共享方式
  
  向用户显示一个随机的数字。
  
  由于每次请求应该产生新的数字,因而基于请求的共享是恰当的。
  
  显示用户的姓和名
  
  数据要为每个客户存储,因而基于会话的共享比较适用。
  
  显示一个指定长度的质数。
  
  数据在多个客户间共享,因此,基于应用的共享比较恰当。
  
  基于请求的数据共享
  Servlet
  ValueObject value = new ValueObject(…);
  request.setAttribute(”key”, value);
  RequestDispatcher dispatcher =
  request.getRequestDispatcher(”/WEB-INF/SomePage.jsp”);
  dispatcher.forward(request, response);
  
  JSP
  <jsp:usebean id="key" type="somePackage.ValueObject"></jsp:usebean>   scope="request" />
  <jsp:getproperty name="key" property="someProperty"></jsp:getproperty>
  
  基于会话的数据共享
  Servlet
  ValueObject value = new ValueObject(…);
  HttpSession session = request.getSession();
  session.setAttribute(”key”, value);
  RequestDispatcher dispatcher =
  request.getRequestDispatcher(”/WEB-INF/SomePage.jsp”);
  dispatcher.forward(request, response);
  
  JSP
  <jsp:usebean id="key" type="somePackage.ValueObject"></jsp:usebean>   scope="session" />
  <jsp:getproperty name="key" property="someProperty"></jsp:getproperty>
  
  基于ServletContext的数据共享
  Servlet
  synchronized(this)
  {
  ValueObject value = new ValueObject(…);
  getServletContext().setAttribute(”key”, value);
  RequestDispatcher dispatcher =
  request.getRequestDispatcher(”/WEB-INF/SomePage.jsp”);
  dispatcher.forward(request, response);
  }
  
  JSP
  <jsp:usebean id="key" type="somePackage.ValueObject“ scope="></jsp:usebean>
  <jsp:getproperty name="key" property="someProperty"></jsp:getproperty>
  
  JSP页面中的相对URL
  
  问题:
  
  使用请求分配器进行的转发对客户来说是透明的。初始的URL是浏览器惟一知道的URL。
  
  为什么这会比较重要?
  
  浏览器会如何处理类似下面的这些标签:
  
   <link rel="STYLESHEET&amp;lt;br">   HREF="JSP-Styles.css" TYPE="text/css">
  
  
  答案:浏览器将会把它们看作是相对于servlet的URL
  
  最简单的解决方案:
  
  使用以斜杠开始的URL
  
  Summary
  
  MVC (Model 2) 方式适用于:
  
  单次提交会产生多个基本外观。
  
  几个页面拥有大量公共的处理过程。
  
  需要为同样的数据提供多个视图的应用程序,它很好地实现了数据层与表示层的分离,特别适用于开发与用户图形界面有关的应用程序
  
  构架
  
  由一个servlet应答初始的请求
  
  Servlet完成实际的数据处理并将结果存储在bean中
  
  Bean存储在HttpServletRequest, HttpSession, 或ServletContext中
  
  Servlet使用RequestDispatcher的forward方法将请求转发到JSP页面
  
  JSP页面通过使用jsp:useBean和相应的作用域(request, session, application)从bean中读出数

分享到:
评论
2 楼 J_Love_me 2010-11-10  
   学习了。
1 楼 qinglintan 2009-12-23  
新手,学习了

相关推荐

    ASP.NET MVC项目实例

    ASP.NET MVC作为微软官方的.NET平台下MVC解决方案,自诞生起就吸引了众多.NET平台开发人员的眼球。ASP.NET MVC从一开始的设计思路就与Struts不同,它的映射是利用路由配置而非xml,从而大大降低了开发复杂度,并且比...

    精通Spring MVC 4

    Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。Spring MVC4是当前zuixin的版本,在众多特性上有了进一步的提升。, 在精通Spring...

    ASP.NET MVC5

    ASP.NET MVC5是一个基于微软.NET Framework的开源web应用程序框架,专为构建动态、数据驱动的Web应用程序而设计。它结合了Model-View-Controller(MVC)设计模式、ASP.NET的功能性和HTML5的能力,提供了更高效、灵活...

    MVC简单例子C#

    **MVC(Model-View-Controller)模式是软件开发中的一种设计模式,尤其在Web应用开发中被广泛应用。C#是Microsoft开发的一种面向对象的编程语言,它与.NET框架紧密结合,支持构建各种类型的应用,包括MVC应用。在这...

    经典MVC登录实例代码

    **MVC模式与Servlet、JSP的协同工作** 在Web应用开发中,Model-View-Controller(MVC)模式是一种广泛采用的设计模式,它将应用程序的业务逻辑、数据和用户界面分离,使得开发和维护更加方便。在这个"经典MVC登录...

    C# MVC 经典框架

    C# MVC(Model-View-Controller)经典框架是基于微软.NET平台的一种强大的Web应用程序开发模式。这个框架结合了MVC设计模式的灵活性和C#语言的强类型特性,为开发者提供了构建可维护、高性能和高度分层的Web应用的...

    ASP.NET MVC4 教程(完整版).pdf

    *** MVC 4是一个用于构建可扩展、基于标准的Web应用程序的框架,它使用了众所周知的设计模式,并且充分利用了***和.NET框架的强大功能。*** MVC框架允许开发者使用模型-视图-控制器(Model-View-Controller, MVC)...

    MVC2.0入门必读教程程序源码

    MVC2.0入门必读教程程序源码 前言 ASP.NET MVC作为微软官方的MVC解决方案,推出有一段时间了。可以说自动推出以来,一直广受关注。在经历了漫长的Preview之后,前几天终于推出了其beta版。并且在官方文档中,微软...

    PureMVC 中文版

    标题 "PureMVC 中文版" 指的是 PureMVC 框架的一个中文版本,这是一款广泛应用的开源框架,特别设计用于构建富互联网应用程序(RIA),尤其是基于Adobe Flex和ActionScript 3的项目。PureMVC 提供了一种模块化、结构...

    ASP.NET MVC项目源代码设计资料

    ASP.NET MVC是一个强大的框架,用于构建可维护性和灵活性极高的Web应用程序。它是Microsoft为开发者提供的一种基于模型-视图-控制器(MVC)设计模式的工具,使得开发人员能够更清晰地分离业务逻辑、数据处理和用户...

    spring-webmvc5.3.6 jar包.rar

    这个jar文件包含Spring MVC框架相关的所有类。  包含国际化、标签、Theme、视图展现的FreeMarker、JasperReports、Tiles、Velocity、XSLT相关类。  当然,如果你的应用使用了独立的MVC框架,则无需这个JAR文件里的...

    Pro ASP.NET MVC 5 (精通ASP.NET MVC5框架) 中文+英文+配套源代码

    **ASP.NET MVC 5 框架详解** ASP.NET MVC 5 是 Microsoft 推出的一款用于构建可伸缩、高性能的 Web 应用程序的框架,它基于模型-视图-控制器(MVC)设计模式,结合了ASP.NET Web Forms 和 ASP.NET Web API 的优势,...

    ASP.Net MVC4 安装文件

    ASP.NET MVC4(Model-View-Controller)是微软推出的一款用于构建动态网站的开源框架,它基于ASP.NET平台,提供了一种分离关注点、结构清晰的开发模式。在这个"ASP.NET MVC4 安装文件"中,包含了适用于Visual Studio...

    asp.net MVC4 CMS

    ASP.NET MVC4 CMS 是一个基于微软的ASP.NET MVC4框架构建的内容管理系统,它提供了一种高效、可扩展的方式来管理和展示网站内容。MVC(Model-View-Controller)设计模式是其核心,它将应用程序分为三个主要组件:...

    asp.net mvc博客Blog源码

    ASP.NET MVC是一个强大的Web应用程序开发框架,由微软公司推出,用于构建可维护、高性能和具有优秀用户体验的Web应用。在本“asp.net mvc博客Blog源码”项目中,我们可以深入学习和理解ASP.NET MVC的核心概念和技术...

    基于ASP.NET MVC项目实例

    **ASP.NET MVC 框架详解** ASP.NET MVC(Model-View-Controller)是一种轻量级、基于组件的Web应用程序架构,它由微软开发并应用于.NET Framework中,为开发者提供了构建可测试、灵活且易于维护的Web应用的强大工具...

    C++实现简单的MVC框架

    在IT行业中,MVC(Model-View-Controller)是一种广泛应用于软件开发的架构模式,尤其在Web应用领域中。这个模式将应用程序分为三个主要部分,每个部分都有明确的责任,从而提高了代码的可维护性和可扩展性。本项目...

    ASP.NET MVC5 入门 之登录验证

    ASP.NET MVC5 是微软开发的一款用于构建动态网站的框架,它结合了模型-视图-控制器(MVC)设计模式,使开发者能够更高效地构建可维护和测试的Web应用程序。在本入门教程中,我们将重点探讨如何在ASP.NET MVC5中实现...

    ASP.NET MVC 项目集合.zip

    ASP.NET MVC 是微软开发的一款用于构建动态Web应用程序的框架,它结合了ASP.NET的优势和Model-View-Controller(MVC)设计模式的灵活性。在这个"ASP.NET MVC 项目集合.zip"压缩包中,可能包含了多个ASP.NET MVC项目...

Global site tag (gtag.js) - Google Analytics