岁月联盟 · 中国技术网 本站主页 | 安全认证 | 用户服务 | 技术论坛
新闻快报 | 新手学堂 | 黑客特区 | 程序语言 | 数 据 库 | 防 火 墙 | 路由交换 | 系统集成 | 服 务 器 | 存储备份 | 考试认证
Windows | Linux | Java | 协议分析 | 问题解答 | 进程大全 | 网页设计 | 多 媒 体 | 图库资料 | 软件下载 | 站内下载
  您现在的位置: 岁月联盟 >> Java >> J2EE >> mvcwea >> Java正文
J2EE综合应用之——解析MVC模式
作者:未知 文章来源:本站整理 点击数: 更新时间:2007-7-22 22:21:35

  MVC模式概述
  
  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 ... class="package.Class" />
  
  JSP页面也不应该修改已有的对象
  
  因此,我们应该只使用jsp:getProperty,不使用jsp:setProperty。 提示:jsp:useBean的scope选项
  
  request
  <jsp:useBean id="..." type="..." scope="request" />
  session
  <jsp:useBean id="..." type="..." scope="session" />
  application
  <jsp:useBean id=".." type=".." scope="application" />
  page
  <jsp:useBean id=“...” type=“...” scope=“page” />
  或者仅仅使用<jsp:useBean id="..." type="..." />
  
  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"
  scope="request" />
  <jsp:getProperty name="key" property="someProperty" />
  
  基于会话的数据共享
  Servlet
  ValueObject value = new ValueObject(...);
  HttpSession session = request.getSession();
  session.setAttribute("key", value);
  RequestDispatcher dispatcher =
  request.g

[1] [2] 下一页


  • 上一个Java:
  • 下一个Java:
  •  
    热门文章
    推荐文章
    关于我们 | 发展历程 | 网站地图 | 广告服务 | 招贤纳士 | 战略合作 | 友情链接 | 著作声明 | 联系我们
    Copyright © 2002-2007 SYUE All rights reserved.
    E_mail:WebSyue@163.Com 皖ICP备05004589号
    未经授权禁止转载、摘编、复制或建立镜像.如有违反,追究法律责任.
    天龙八部私服 热血江湖私服 天龙八部私服 bet365 魔域私服 劲舞私服 传奇世界私服 bet365 传世私服 传奇世界私服