JSF和Struts的区别概述

答案  据说JSF的主要负责人就是struts的主要作者 所以二者的相似点还是有很多的  都采用taglib来处理表示层 在jsp页面中 二者都是采用一套标记库来处理页面的表示和model层的交互  二者都采用了bean来作为和jsp页面对应的model层 该model层保存了jsp页面上的数据 同时可

101398

 据说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 属性中直接填写跳转的别名直接跳转 而不必经过事件处理方法的处理

lishixinzhi/Article/program/Java/ky/201311/28762

1、可以用"Ultraedit"打开。

2、用记事本也可以打开的。

JSF文件:

JSF主要由两个部分组成:一套功能强大的API函数,用来表示UI组件、管理组件状态、处理事件、进行输入有效性验证,以及对国际化和可访问性的支持;一套包含各种页面元素的并允许自定义的JSP标签库,用来在JSP页面中显示JSF的界面。通过使用JSF所提供的简单而又实用的模型,任何开发人员都可以快速轻松地开发Web应用程序。他们可以使用大量现成的可重用的UI组件,并将这些组件与数据源连接,还可以很容易地将客户端事件和服务器端的事件处理程序绑定。强大的JSF技术可以很好地处理和管理任何复杂的用户界面,使开发人员可以将注意力集中在应用程序的开发上。

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

图片声明:本站部分配图来自人工智能系统AI生成,国外stocksnap摄影无版权图库。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国外贸事业出一份力,发布内容不收取任何费用也不接任何广告!
 

  • 热门焦点
  • 顺丰快递从上海到哈尔滨需要几天

    顺丰快递从上海寄到哈尔滨市区内,最快需要第3天到达收件,一般是不超过第4天上午。。。从上海到哈尔滨市有2270公里左右,已经是很远了,但现在的交通也很发达,快递也比较快。如果顺
    08-12
  • 京东快递跨省几天能到

    京东快递跨省一般1-3天的时间能到。在京东商城和京东自营买东西,一般采用京东快递配送。购买的商品一般是24小时内发货,一般到货时间是1-3天。如果是进驻商家,快递合作方由商家
    08-12
  • 正在通知快递取件一般要等多久

    正在通知快递取件一般要等2个小时左右,如果是约定取件,快递员会在约定的时间内上门取件。当商家发货后,快递公司会在1-2个工作日内到达商家所在地,并进行取件。然而,具体时间还要
    08-18
  • 怎样查询邮政的快递信息?

    进入到邮政官方,在邮件查询方式里选择手机号查询,输入手机号码和验证码,就可以查询了。操作方法如下:1、首先打开浏览器,输入邮政点击官网进入。2、进入之后点击邮件查询。3、在左侧的导航栏里继续点击邮件查询。4、然后选择手机号查询。5、输入手机号码并填写相关的信息后点
    09-24
  • 顺丰快递需要填写什么资料

    顺丰快递需要填写什么资料 顺丰快递需要填写寄件人地址,寄件人电话,收件人地址,收件人电话,物品名称,物品重量,物品体积,付款方式这些资料,以下是顺丰快递单据的填写方法: 1、填写寄件人资讯 首先要拿到一张顺丰空白快递单,填写寄件人资讯,公司名称可以根据实际情况可写可不写;联
    09-03
  • 为什么我的快递显示已签收却没有取件码?

    取件码是需要入库上架之后的,快递显示已经代收了,说明快递员已经把快递交给了代收点,比如说菜鸟驿站,但是菜鸟驿站还没来得及上架,所以没有取件码。快递又称速递或快运,是指物流
    08-18
  • 一对20公斤哑铃要邮走大概多少邮费哈尔滨到齐齐哈尔

    特快专递资费:20元/500克,每加量500克加收6元。共134元邮费。(包装费另算)快递包裹资费:与特快专递的资费约等于一半。(包装费另算)普通包裹资费:1.2元/1000克在加三元挂号费。(
    08-11
  • 菜鸟驿站不扫码出库有影响吗

    菜鸟驿站不扫码出库没有影响。菜鸟没有扫码出库直接拿走没有影响,系统会自动签收的。在购物时,如果时间上不方便接收快递,可以选择由菜鸟驿站代为签收,快递到达菜鸟驿站后,菜鸟驿
    08-18
  • 中铁单位有多少局?都分布在哪,子公司在哪

    1、中国铁路工程总公司:北京市西客站南广场中铁工程大厦;2、中铁一局集团有限公司:西安市雁塔北路1号;3、中铁二局集团有限公司:成都市马家花园路10号;4、中铁三局集团有限公司:太原市迎泽大街269号;5、中铁四局集团有限公司:合肥市望江东路96号;6、中铁五局集团有限公司:贵阳市枣山
    09-03
  • 中国邮编是多少, Zip code是什么啊?

    您好!中国的邮政编码是6位数,在世界任何一个地方往中国寄件都是填写6位邮编。Zip Code 是美国邮编的叫法从国外寄信件到中国大陆如何填写邮编?直接填写大陆地址对应的邮编即可
    08-12
  • 邮政快递营业时间表

    早上8点至下午6点。根据查询中国邮政官网显示,邮政快递营业时间是周一至周日早上8点至下午6点,节假日不休息。邮政快递主要经营国内速递、国际速递、合同物流等业务,是中国速递
    08-12
  • 韵达快递货物寄出后多长时间能查到物流信息

    一般情况下快递到店会进行录单,便可在官网上查询,此时提示“xxxx网点已揽件”包括发出时间、地点、货物状态都会详细记录的,单号查询可在韵达官网可查询详细的记录通常当天上午
    08-11
  • 国际邮寄包裹资费标准?

    国内邮件资费 (2004年1月1日起执行) 单位:元 编号 业务种类 计费单位 资费标准 本埠(县)资费 外埠资费 1 信函 首重100克内,每重20克 (不足20克按20克计算) 0.60 0.80 续重101-2000
    08-13
  • 有什么快递公司可以往国外寄东西?

    国际快递是指在全球提供门到门服务的公司,主要的公司有:①EMS : 国家邮局国际特快专递,由到达国的邮局派送。国内的如顺丰、韵达申通快递都是有开通部分国际业务。②四大国际巨
    08-12