知识大全 JSF和Struts的区别概述

Posted

篇首语:智慧并不产生于学历,而是来自对于知识的终生不懈的追求。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 JSF和Struts的区别概述相关的知识,希望对你有一定的参考价值。

JSF和Struts的区别概述  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  据说JSF的主要负责人就是struts的主要作者 所以二者的相似点还是有很多的

  都采用taglib来处理表示层 在jsp页面中 二者都是采用一套标记库来处理页面的表示和model层的交互

  二者都采用了bean来作为和jsp页面对应的model层 该model层保存了jsp页面上的数据 同时可以作一些验证工作 在struts中就是FormBean 在JSF中就是back bean

  都采用bean作为控制层 Struts中采用ActionBean来处理业务逻辑 对于简单的应用可以直接在ActionBean中编写业务逻辑代码 也可以调用另外的bean或者EJB来处理业务逻辑 对于JSF则采用backing bean来处理业务逻辑 同样 backing bean也可以直接编写业务逻辑或者调用其他的bean来处理业务逻辑

  都采用xml配置文件来处理bean的配置 页面导航等问题 增加了系统的灵活性

  都采用资源文件来处理国际化和本地化的问题

  然而 二者的不同点也很多 下面分别说明

   首先二者的侧重点不同 Struts侧重于控制层 侧重于如何分派和处理用户的请求 所以表示层的taglib功能不够强大 而JSF则侧重于表示层 实现 了大量的标准组件 允许开发人员对表示层有更多的控制权 同时JSF实现了一个开放的架构 允许开发人员创建自己的组件 或者在现有的组件上继承 开发功 能更强大的组件 本人认为这是JSF最大的一个特色 (有点类似于vcl和 net组件)

   和jsp 对应的model层 在Struts中采用FormBean来保存用户输入的数据 基本上一般字段的类型都是String 而且可以进行简单的验证 当然 如果采用动态的FormBean就不能在FormBean中进行验证了 在Struts中 jsp和FormBean是紧密结合在一起的 只要写一个 jsp就必须对应一个FormBean 同时jsp上的每个组件都对应FormBean中相同名字的字段 本人认为这里不太灵活 比如 开发页面的时候就 必须考虑后台的FormBean的实现 但此时如果该页面没有FormBean的化则程序运行时会出错 在JSF中 JSP页面中的组件通过value属 性和backing bean的字段关联 这样就有比较大的灵活性 页面上的每个组件可以对应相同的backing bean 也可以对应不同的backing bean(当然本人认为在一般的应用中 一个页面上的组件还是都对应到一个backing bean较好) 而且在设计页面的时候可以不考虑backing bean如何设计 可以在设计完页面之后再考虑backing bean的实现问题

   关于数据验证 Struts可以采用在FormBean中的验证函数中进 行验证 也可以使用validator进行验证(关于这种验证方法 本人没有测试过 不知效果如何 希望有经验的朋友指教!) 在JSF中 提供了一些标 准的validator 可以对输入的数据做一些简单的验证 例如验证数值数据的范围 字段是否必填等 但其验证的反馈信息为英文 如果该信息不能自定义 的化 那么针对国内的应用就不太适合了 目前本人还没有找到该反馈信息是否能够自定义的办法 另外对于input类型的组件可以通过validator属 性关联到backing bean的一个验证方法上 在事件处理方法中进行验证也是一个办法

  在JSF中还有一个问题就是在JSF生成的页面 中 组件的Id命名比较怪异 所有的组件的id都类似于 form pnentid 即form的名称+ +组件的id 这样通过javascript访问组件就不是很方便 通过form id形式好像不能访问到组件 不知道各位有没有好的解决方案

   控制层 Struts 中通过form的action来提交请求 通过ActionServlet来分发请求 最后由ActionBean来处理请求 在Action中实现业务 逻辑或者调用其他的业务逻辑bean来完成用户的请求并返回客户端 在这里 一个form只有一个action 即一个页面只能提交到一个action Bean 对于页面上有多个按钮都需要提交的情况就需要使用一些变通的方法了 和传统的web开发的模式比较接近

  对于JSF 采用了事件模 式来处理用户提交的请求 JSF实现了事件监听器来监测事件 例如当用户单击了一个按钮就会触发一个按钮单击事件 还有valuechange事件监听器 来监测数值改变的事件等 例如在页面中通过通过CommandButton按钮的action属性来关联到backing bean的方法来执行相应的操作 每个不同的按钮都可以关联不同的方法 当然也可以关联相同的方法(这样就和Action Bean非常类似了) 这中开发模式比较接近于传统的c/s模式或者的开发模式 对于那些从c/s架构程序或者架构转过来的 开发者来说 这种方式可能更自然一些

  在JSF的一些简单的示例程序中 通常把和jsp对应的model层和jsp所提交的action放在 同一个backing bean中 即业务逻辑和业务逻辑所处理的数据在同一个bean中 本人认为 这样的结构只能用在简单的应用中 对于企业级的开发并不适合 应该将页面所 关联的数据和页面所做的action分开 这样的结构更好一些 比较类似于struts的结构

  JSF的backing bean中的方法访问session request等没有struts中的直观 笔者找了很多例子才知道如何访问session中的数据

   页面的导航 关于页面的导航 struts和JSF比较类似 都是在xml的配置文件中配置导航规则 每个要跳转的页面都有一个别名 在程序中通过别名进行 跳转 另外Struts中的跳转是在ActionBean中发生 execute方法最后返回一个actionForward来进行跳转 而JSF则在事 件处理方法中最后返回一个字符串 由系统在xml文件中匹配自动进行跳转 在JSF中也可以通过在JSP页面的CommandButton的action 属性中直接填写跳转的别名直接跳转 而不必经过事件处理方法的处理

cha138/Article/program/Java/ky/201311/28762

相关参考

知识大全 选择JSF不选Struts的十大理由

选择JSF不选Struts的十大理由  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n

知识大全 简谈JSF与Struts的功能比较[1]

简谈JSF与Struts的功能比较[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  首先事件

知识大全 简谈JSF与Struts的功能比较[4]

简谈JSF与Struts的功能比较[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Back

知识大全 简谈JSF与Struts的功能比较[2]

简谈JSF与Struts的功能比较[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  上述两个

知识大全 JSF与Struts的比较 超易懂![1]

JSF与Struts的比较超易懂![1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Stru

知识大全 JSF与Struts的比较 超易懂![3]

JSF与Struts的比较超易懂![3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Back

知识大全 深入分析JSF与Struts的异同[2]

Java进阶:深入分析JSF与Struts的异同[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 深入分析JSF与Struts的异同[1]

Java进阶:深入分析JSF与Struts的异同[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 简谈JSF与Struts的功能比较[3]

简谈JSF与Struts的功能比较[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在Str

知识大全 JSF与Struts的比较 超易懂![2]

JSF与Struts的比较超易懂![2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  正如St