首页   资讯  应用与安全  Web开发  数据库  编程语言  开源服务  管理信息化  IT商城   技术论坛   up
    [栏目导航]>>[主页]>>[编程语言]>>[Java]>>[阅读信息]
 [关闭

表现层框架之争 JSF与Struts的异同

发布时间:2008-09-13 09:52:48   点评:0   人气:44 

     Struts和JSF/Tapestry都属于表现层框架,这两种分属不同性质的框架,后者是一种事件驱动型的组件模型,而Struts只是单纯的MVC模式框架,老外总是急吼吼说事件驱动型就比MVC模式框架好,何以见得,我们下面进行详细分析比较一下到底是怎么回事?

  首先事件是指从客户端页面(浏览器)由用户操作触发的事件,Struts使用Action来接受浏览器表单提交的事件,这里使用了Command模式,每个继承Action的子类都必须实现一个方法execute。

  在struts中,实际是一个表单Form对应一个Action类(或DispatchAction),换一句话说:在Struts中实际是一个表单只能对应一个事件,struts这种事件方式称为application event,application event和component event相比是一种粗粒度的事件。

  struts重要的表单对象ActionForm是一种对象,它代表了一种应用,这个对象中至少包含几个字段,这些字段是Jsp页面表单中的input字段,因为一个表单对应一个事件,所以,当我们需要将事件粒度细化到表单中这些字段时,也就是说,一个字段对应一个事件时,单纯使用Struts就不太可能,当然通过结合Java也是可以转弯实现的。

  而这种情况使用JSF就可以方便实现,

<h:inputText id="userId" value="#{login.userId}">
  <f:valueChangeListener type="logindemo.UserLoginChanged" />
</h:inputText>

  #{login.userId}表示从名为login的JavaBean的getUserId获得的结果,这个功能使用struts也可以实现,name="login" property="userId"

  关键是第二行,这里表示如果userId的值改变并且确定提交后,将触发调用类UserLoginChanged的processValueChanged(...)方法。

  JSF可以为组件提供两种事件:Value Changed和 Action. 前者我们已经在上节见识过用处,后者就相当于struts中表单提交Action机制,它的JSF写法如下:

<h:commandButton id="login" commandName="login">
  <f:actionListener type=”logindemo.LoginActionListener” />
</h:commandButton>


  从代码可以看出,这两种事件是通过Listerner这样观察者模式贴在具体组件字段上的,而Struts此类事件是原始的一种表单提交Submit触发机制。如果说前者比较语言化(编程语言习惯做法类似Swing编程);后者是属于WEB化,因为它是来自Html表单,如果你起步是从Perl/PHP开始,反而容易接受Struts这种风格。

 [关闭]

查找与[表现层框架之争 JSF与Struts的异同]相关

相关商品
  
  《论表现——自我表现的艺术》(日)多湖辉 电子书(PDF)
 单 价: 1.0
.
  
  室内空间徒手表现法 杨建 (手绘马克笔效果图技法表现)高清160p
 单 价: 3.0
.
  
  【2送1-3重优惠】铅与黄金:西部狂野之争 5.5元/盘
 单 价: 5.5
.
  
  明星范儿 框架眼镜 非主流 时尚框架镜
 单 价: 19.0
.
  
  墨斋正版]上帝许给的土地--闵明我行记和礼仪之争/西方早期汉学经
 单 价: 28.39
.
  
  JSF898时尚新品布艺沙发/休闲组合布沙发/多人布艺沙发!
 单 价: 2666.0
.
  
  美猴王 小石猴篇 5 猴王之争(全套图书共4篇,共20册)
 单 价: 8.5
.
  
  全脑启动卡-右脑创意表现0085
 单 价: 3.0
.
  
  赛龙之争 个性车贴 汽车贴 汽车拉花 科鲁兹车贴
 单 价: 435.0
.

与[表现层框架之争 JSF与Struts的异同]相邻的Java

   上一条:  java程序员需要了解的几个开源协议
   下一条:  Java路径问题最终解决方案之一

与[表现层框架之争 JSF与Struts的异同]相邻的开源项目

   上一条:  漫谈Hibernate的前世今生
点评(0)  表扬 赞成 补充 纠正 否定 提醒 举报     笔名:
[提交]

京ICP备09058017号