`
dev_liu
  • 浏览: 112509 次
  • 性别: Icon_minigender_1
  • 来自: 成都
最近访客 更多访客>>
社区版块
存档分类
最新评论

学习struts/jsf,首先要比较知道model1和model2模式,以及mvc模式

阅读更多

MODEL2视图

struts视图

Command (ActionServlet) 与 Model (Action & ActionForm) 之间的关系的 UML 图

Command (ActionServlet) 与 Model (Action) 之间的关系的 UML 图

详细文章可以link

http://www.ccw.com.cn/htm/center/prog/02_8_9_4_5.asp

分享到:
评论
2 楼 dev_liu 2007-01-07  
如果有时间,可以预研一下jsf,比struts容易上手....不过现阶段要挑战struts的霸主地位,还有待观察.
1 楼 dev_liu 2007-01-07  
本想看关于DTO的文档,想不到这篇文档对Model 1, Model 2和Model 2x的描述写的很好,于是copy下来。

Model 1
Model 1的基础是JSP文件,它由一些相互独立的JSP文件,和其他一些Java Class组成(不是必须的)。这些JSP从HTTP Request中获得所需要的数据,处理业务逻辑,然后将结果通过Response返回前端浏览器。

Model 1的应该说是唯一的好处是"简单",可以大大加快系统的开发进度。它把表现层和业务逻辑层柔和在一起,不利于以后的维护工作以及开发角色的分配,所以这种模式只能适合于小的系统开发。
Model 2
采用面向对象技术实现MVC模式从而扩展JSP/Servlet的模式被成为是Model 2模式。Apache Jakarta项目中Struts是一个实现Model 2的很好的框架,它通过一些Custom Tag Lib处理表现层,用ActionFrom Bean表示数据,用自己提供的一个ActionServlet作为控制器实现页面的流转的控制功能。


Struts强制开发人员采用MVC的设计进行系统开发,虽然它会带来如将表现层和业务层分开,合理安排开发人员角色等诸多方面的好处,但也存在一些缺点:

由于View层采用JSP,所以开发人员还是可以在其中写上一大堆的Java代码,从而使最后的系统还处于一种混乱的状态。而实际上开发人员确实会出现这种状况;
开发人员需要学习Struts提供的Custome Tag Lib,这需要时间,尤其对以前只熟悉HTML的页面设计人员来说,同时其中的一些Tag已经被Java Standard Tag Library取代掉了。
Model 2x
将Struts中的View层用XML/XSLT技术替换掉,这就是我们要提到的Model 2x模式。Apache Cocoon是Jakarta项目组提供的另外一套XML技术框架,配合Struts一起使用,将很好的解决我们上面遇到的这些问题。


这样的结构会带来如下一些优点:

避免了开发人员将逻辑代码直接写在JSP中,从而明晰地划分了业务逻辑层和表现层的界限。后台的Java程序员只需要关心业务逻辑的实现,最后将结果用XML来表示;而页面设计人员只需要关心如何美化页面,只要双方定义好中间的数据接口;
借助XSLT,开发人员可以完全不用学习Struts提供的那些已经不标准的Custom Tag。这个问题我们可以从输入页面和输出页面来考虑。对于输入,不管我们的JSP页面(对于Struts来说)采用什么样的技术,最终在浏览器中显示的始终是HTML,那么我们完全可以不用Struts提供的例如html:form等Tag,而是直接用HTML来描述,只要我们注意表单(form)中的字段和ActionForm中属性之间的对应关系即可;而对于输出页面来讲,借助XSL/XSLT的帮助,我们也完全可以抛开Struts的Tag,将XML最终显示成HTML。
从上图中我们可以看到,对于Struts部分在结构上没有任何变化,只是另外加了一个层次。而对于Cocoon来说,虽然看上去我们又多用了一个框架结构,但实际我们不需要对Cocoon做什么程序编写工作,只是需要多维护一个sitemsp.xmap文件(一个XML文件)。




但是,任何一种架构或者解决方案都是双刃剑,在我们获得的同时必须有一定的付出。这种模式也带来了如下一些实际的问题。

开发人员需要学习XSL。但我们毕竟需要学习一些东西,相信XSL中对逻辑以及对数据格式等诸多的方便处理给我们的开发人员的项目经理一些学习这些东西的理由;
如何定义我们的数据结构,从而满足我们的业务需求。在自己做过的项目中,经常会遇到一些返回例如用户列表,用XML/XSLT显示报表的具体问题,那么如何能够定义一个比较好的数据结构方便地处理类似的问题呢?
如何使用Cocoon的Pipeline将我们的数据结构转化成XML并最终显示成HTML?经过研究发现,Cocoon提供的Generator无法满足我们具体的数据处理的要求。这个问题我们可以通过扩展Cocoon的Generator来解决。
        回忆以前做的项目,大部分都是Model1,没用EJB的话开发还比较顺利,用了EJB开发起来也挺慢的。Model2只做过一个项目,感觉就一个字“烦”。与Model1最大的变化就是
1.  一个form提交的action不是jsp,而是一个ActionBean;
2.  ActionBean得到FormBean之后可以直接从FormBean读取页面提交的参数,而不用每个参 数都request一次。
3.  url是.do结尾,而不是xxxx.jsp。

相关推荐

    struts2.0集成JSF插件

    在提供的"struts4jsf"压缩包中,可能包含Struts2和JSF集成的示例代码、配置文件、以及必要的文档。通过研究这些内容,开发者可以快速上手并掌握Struts2与JSF的集成技巧,从而在实际项目中灵活运用。记住,实践是检验...

    MVC模式JSF与Struts的异同.txt

    ### MVC模式下JSF与Struts的异同分析 #### 一、概述 MVC(Model-View-Controller)模式是一种广泛应用于软件工程中的设计模式,尤其在Web应用开发领域非常常见。它将应用程序分为三个核心组件:模型(Model)、视图...

    Struts&JSF学习资料

    4. **示例应用**: 展示如何整合Struts和JSF,以及如何处理用户输入和展示结果。 5. **最佳实践**: 提供在开发过程中应遵循的指导原则。 通过深入学习这些材料,你不仅能掌握Struts和JSF的基本使用,还能了解到如何...

    Struts2整合JSF

    Struts2是一个强大的MVC(Model-View-Controller)框架,它基于WebWork的核心技术,为Java EE应用程序提供了丰富的架构支持。与JavaServer Faces(JSF)整合,可以实现更高效的Web开发。JSF是一种标准的Java EE组件...

    Struts & JSF 教学ppt

    Struts和JavaServer Faces(JSF)是两种广泛使用的Java Web开发框架,它们在构建企业级应用程序中扮演着重要角色。下面将详细讲解这两个框架的核心概念、特点以及它们在实际应用中的价值。 **Struts框架** Struts是...

    MVC模式和Struts框架

    Struts 1是最早的版本,而Struts 2则引入了更多的灵活性和扩展性。 - **Tapestry**:一个组件化和事件驱动的MVC框架,提供了更高级别的抽象和更好的类型安全。 - **WebWork**:Struts 2的基础,后来与Struts合并...

    struts和jsf分页

    Struts和JSF是两种广泛使用的Java Web...Struts更适合传统的MVC开发模式,而JSF则更强调组件化和面向声明的编程风格。在实际应用中,开发者可以根据项目的规模、性能要求以及团队的技术栈来选择最适合的分页实现方式。

    Struts基于MVC的Java Web设计的实例

    学习Struts框架,你需要理解MVC模式的基本原理,掌握如何创建Action类和ActionForm,编写struts-config.xml配置文件,以及如何使用JSP页面显示数据。此外,还需要了解Servlet和JSP的基础知识,因为Struts是建立在...

    jsf struts 学习ppt

    **JSF(JavaServer Faces)与Struts是两种在J2EE平台上广泛使用的MVC(Model-View-Controller)框架,用于构建企业级Web应用程序。它们都提供了组件化开发、事件处理和页面导航等特性,但各有其特点和优势。** ### ...

    基于J2EE下的JSF与Struts框架比较分析

    Struts 作为早期的框架,基于MVC(Model-View-Controller)设计模式,已经在业界获得了广泛的认可。而JSF作为一种相对较新的框架,旨在简化Web应用程序的开发过程,特别是用户界面的交互设计。本文将对JSF和Struts...

    struts與jsf比較

    Struts和JSF是两种流行的Java Web框架,它们在处理MVC(模型-视图-控制器)架构方面都有各自的特点和优缺点。以下是对两者的主要比较: **相似点:** 1. **表示层处理**:两者都使用Taglib(标签库)在JSP页面中...

    Spring集成Struts、JSF、WebWork2

    而Struts、JSF(JavaServer Faces)和WebWork2则是其他流行的MVC(Model-View-Controller)框架,它们各自有独特的特性和优势。这篇博客"Spring集成Struts、JSF、WebWork2"探讨了如何将这些框架与Spring进行整合,以...

    Tapestry,JSF和Struts的比较

    Tapestry、JSF(JavaServer Faces)和Struts都是广泛使用的MVC(Model-View-Controller)框架,它们各自具有独特的特性和优势。下面我们将深入探讨这三个框架的核心概念、优缺点以及适用场景。 首先,Tapestry是由...

    Struts2,JSF,SpringMVC快速入门Demo

    Struts2、JSF(JavaServer Faces)和SpringMVC都是Java Web开发中非常重要的框架,它们主要用于构建基于MVC(Model-View-Controller)架构的Web应用程序。本快速入门Demo将带你逐步了解这三个框架的基本概念、核心...

    jsf,struts2中文教程

    Struts2是基于MVC设计模式的开源Web框架,它是Struts1的下一代产品,吸取了其他框架的优点,提供了更灵活和强大的功能。 1. **Action和Result**:在Struts2中,Action类是业务逻辑的载体,Result则是Action执行后的...

    javaee 实验报告 实验一 JSP+Servlet+Javabean+jdbc-基于MVC模式的数据库的应用

    这些高级框架简化了数据访问和业务逻辑的处理,JSF提供了一种声明式UI开发方式,JPA简化了ORM(Object-Relational Mapping),而Struts、Spring和Hibernate分别是MVC模式中的Action、依赖注入和持久化框架,它们共同...

    Struts+Spring+Hibernate+Jsf

    Struts 是一个开源的MVC(Model-View-Controller)框架,主要用于处理Web应用的用户界面和业务逻辑的分离。它提供了请求驱动的架构,使得开发者可以更好地控制HTTP请求的处理流程,同时通过Action和ActionForm来处理...

    JSF学习

    在IT领域,尤其是Web开发中,JavaServer Faces(JSF)和Struts作为两种流行的框架,经常被开发者拿来比较。本文旨在深入探讨这两个框架,分析它们的特点、实施技巧以及选择标准,帮助读者理解在JSF发布后,Struts...

    JSFとStruts.doc

    **Struts**是基于MVC(Model-View-Controller)模式的框架,它主要依赖于Action类来处理用户在客户端页面上的操作。在Struts中,一个表单通常对应一个Action类,即一个表单事件。ActionForm对象承载了从JSP页面传递...

Global site tag (gtag.js) - Google Analytics