Struts框架之构建Model组件

一、概述

Model就是在对用户请求的整个控制过程中,真正处理用户请求并保存处理结果的对象,在整个过程中,我们一般利用JavaBean来把一些信息保存起来以便在各个对象之间传递。因为在框架中,Model对象是真正处理商业逻辑功能的对象,因此也就是框架中应用需求实现相关性最大的部分。 在Struts的实现里,Model的具体表现形式就是ActionForm对象和与其对应的Action对象了。对用户提交表单的数据进行校验,甚至对数据进行预处理都能在ActionForm中完成。通常的应用中,一般是一个Model对象和一个请求页面对应的关系,但也可以一个Model对象对应多个页面请求。如果struts-config.xml配置文件没有指定一个Model对象对应的Action,那么控制器将直接把(通过Model对象完成数据封装的)请求转到一个View对象。下图表示的是Model layer 的层次结构。

在Struts中Model以一个或多个java bean的形式存在。这些bean分为三类:Action Form、Action、JavaBean or EJB。Action Form通常称之为FormBean,封装了来自于Client的用户请求信息,如表单信息。Action通常称之为ActionBean,获取从ActionSevlet传来的FormBean,取出FormBean中的相关信息,并做出相关的处理,一般是调用JavaBean或EJB等。

许多需求文档将构建Web应用的焦点集中在视图上。我们必须确保每一个提交的请求都在模型视图中都已经被定义。通常,开发者在模型组件中关注于开发JavaBean类以实现所有的功能需求。 应用应该准确的使用哪些beans,根据其需求不同而差异巨大,但是,在经过区分后通常都能分被为若干个类别。

二、创建Model 组件

1、JavaBeans

在一个Web基础的应用中,能使用许多不同的"属性(attributes)"集合来保存(和访问)JavaBeans。 每个集合都有它自己不同的生命周期和beans存储在哪里的可见度。 同时,beans通过 作用域 来定义生命周期和可见度规则。 在JavaServer Pages (JSP)规范中定义了作用域选择使用以下几项(在括号中是servlet API中的等价概念定义)。

page :Beans只会在一个JSP页中可见,只在当前的请求周期中存在。 (在 service 方法中的本地变量)

request : Beans只会在一个JSP页中可见,与page相同或servlet包含本页,或转发到本页。 (Request属性)

session :Beans能被所有的JSP页和servlet通过特定的用户session来使用, 它可以跨越一个或多个请求。 (Session属性)

application :Beans能被Web应用中的所有JSP页和servlets来使用。 (Servlet context属性)

我们需要记住的是在一个web应用中JSP页面和servlet会共享bean集合的设置。 例如在一个servlet中将一个bean存储到attribute中如下:

MyStudy Mystudy = new MyStudy(...);

request.setAttribute("cart", MyStudy);

在这个servlet将请求转发给一个JSP页面后,我们马上可以使用标准的动作标签(tag)来看到相应的值:

<jsp:useBean id="cart" scope="request" class="com.mycompany.MyApp.MyStudy"/ >

2、ActionForm Beans

在 actionform beans频繁地有属性相当于属性在我们的model beans的时候,那form beans它们自己应该考虑成为一个控制器组件。 同样地,他们能在模型和视图层之间传递资料。

Struts框架通常假定我们在我们的应用中已经为输入定义一个 ActionForm beans(简而言之,一个扩展自 ActionForm 类的Java类)。 ActionForm beans有时仅仅调用表单beans(form beans)。 这可能会是一个细粒度的对像,它让每个表单对应一个bean,还有就是一个bean服务于若干个表单甚至全部应用形成粗粒度的情况。

如果在我们的Struts配置文件中定义了bean,Struts的controller servlet在调用适当的 Action 方法前将自动为我们提供如下服务:

使用适当的关键字检查在用户适当的作用域(request或session)中是否有适当类的bean的一个实例。

如果没有这样的实例可用,则自动建立一个新的bean实例并将期加入到适当的作用域中(request或session)。

对于每个请求参数通过其名称来对应到bean的一个属性(property)上,并调用相应的setter方法来设置属性值。 这个方法类似于标准JSP中以以通配符"*"来使用 <jsp:setProperty > 标记。

更新后的 ActionForm bean被传递给 Action 类[ org.apache.struts.Action ] 的 execute 方法, 以使这些值能被我们的系统状态和业务逻辑bean来使用。

时间: 2024-12-30 23:30:09

Struts框架之构建Model组件的相关文章

Struts框架之构建Controller组件

一.概述 在Struts 架构中,Controller主要是ActionServlet,但是对于业务逻辑的操作则主要由Action.ActionMapping.ActionForward这几个组件协调完成.其中,Action扮演了真正的业务逻辑的实现者,而ActionMapping和ActionForward则指定了不同业务逻辑或流程的运行方向. 应用程序的 Controller 部分集中于从客户端接收请求(典型情况下是一个运行浏览器的用户),决定执行什么商业逻辑功能,然后将产生下一步用户界面的

Struts框架在小区物业管理系统中的应用

摘要  Struts提供了一个非常好的MVC框架,在Web应用开发中把界面和业务逻辑分离,提高了代码的可重用性和灵活性.文中首先介绍了Struts概念和体系结构,阐述了Struts的工作原理.然后介绍了小区物业管理系统各个功能模块以及整个系统基于Struts的开发流程.最后,通过一个应用示例,详细介绍了Struts框架在系统开发中的应用. 关键词  MVC:Struts框架:Web:物业管理系统:  前言  物业管理系统是近年来为适应小区建设和管理而兴起的一种新型产业,它的出现为住宅小区的现代化

Struts框架技术在J2EE中的研究和应用

j2ee 摘 要 简要介绍了J2EE技术及其应用程序架构的发展,论述了Struts框架的基本设计思想,分析了Struts框架开发系统的优点,并结合具体项目实现了Struts框架技术的应用. 关键词 J2EE:MVC:Struts:框架 J2EE简介 J2EE是一个开放的.基于标准的平台,可以开发.部署和管理N层结构的.面向Web的.以服务器为中心的企业级应用,它是利用Java 2 平台来简化与多级企业解决方案的开发.部署和管理相关的诸多复杂问题的应用体系结构. J2EE平台采用一个多层次分布式的

基于MVC模式的Struts框架概述

作者:yarshray   关键字: Java  J2EE  MVC  JSP  Servlet  MVC  Struts 内容简介:        MVC设计模式成为了目前十分流行的一种设计方法.它是一种软件的设计方法模式.并且被大量的开发和实践所证明.因此本文通过介绍Struts框架这种已经实现了MVC模式的软件构件框架了讨论该模式的优势和如何投入到软件开发中去.        本文内容注重理论和实践相结合,比较系统的从多层设计方式到分布式软件开发中所用到的技术,从而切入目前Sun公司退出的

基于MVC模式的Struts框架研究与应用

摘要: Struts框架具有组件的模块化,灵活性和重用性的优点,同时简化了基于MVC的web应用程序的开发.本文讨论了Struts框架实现MVC模式的原理与方法,给出了一个具体的应用实例. 分布式企业应用软件结构复杂.涉及多种技术,对设计开发人员提出了很高的要求.在此情况下,运用设计模式――可复用的设计方案进行软件的设计开发十分必要.MVC模式已被证明是一种成功的软件设计模式,本文主要讨论了一种实现MVC模式的应用框架――Struts,并通过一个实例展示了Struts框架实现MVC模式的方法.

J2EE基础 用Struts框架开发MVC系统步骤

j2ee 由于Struts已经为我们提供了一个非常好的MVC框架,我们利用Struts开发MVC系统时可以大大加快开发的速度.在开发时可以采用的一个开发流程如下: 1. 收集和定义应用需求. 2. 基于数据采集和显示的原则定义和开发"屏幕显示"需求 . 3. 为每一个"屏幕显示"定义访问路径. 4. 定义ActionMappings建立到应用业务逻辑之间的联系. 5. 开发满足"屏幕显示"需求的所有支持对象. 6. 基于每一个"屏幕显示

浅谈Struts框架及其组成部分

一,什么是框架? 所谓框架就是提供了一组统一的接口和编程方式的可以重用组件,同时我们可以在框架中扩充我们自 己的特定逻辑. 二,MVC设计模式 将应用程序分为3个部分:模型 Model,视图View,控制器Controller:模型组件:负责业务逻辑:模 型包含应用程序的核心功能.模型封装了应用程序的状态.有时它包含的唯一功能就是状态.它对视图或 控制器一无所知.视图组件:负责表示业务范围的视图:视图提供模型的表示.它是应用程序的外观.视 图可以访问模型的读方法,但不能访问写方法.此外,它对控制

详解Java的Struts框架以及相关的MVC设计理念_java

struts简介Struts是Apache软件基金会(ASF)赞助的一个开源项目.它最初是jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目.它通过采用JavaServlet/JSP技术,实现了基于JavaEEWeb应用的MVC设计模式的应用框架,是MVC经典设计模式中的一个经典产品. Struts发展历史 Struts是作为ApacheJakarta项目的组成部分,项目的创立者希望通过对该项目的研究,改进和提高JavaServerPages.servlet.标签库以及面向

Java的Struts框架中的主题模板和国际化设置_Mysql

主题模板 如果不指定一个主题,然后Struts2中会使用默认的XHTML主题.例如Struts 2中选择标签: <s:textfield name="name" label="Name" /> 生成HTML标记: <tr> <td class="tdLabel"> <label for="empinfo_name" class="label">Name:<