控制层:Struts中通过form的action来提交请求,通过ActionServlet来分发请求,最后由ActionBean来处理请求,在Action中实现业务逻辑或者调用其他的业务逻辑bean来完成用户的请求并返回客户端。在这里,一个form只有一个action,即一个页面只能提交到一个action Bean。对于页面上有多个按钮都需要提交的情况就需要使用一些变通的方法了。和传统的web开发的模式比较接近。
对于JSF,采用了事件模式来处理用户提交的请求。JSF实现了事件监听器来监测事件,例如当用户单击了一个按钮就会触发一个按钮单击事件,还有valuechange事件监听器来监测数值改变的事件等。例如在页面中通过通过CommandButton按钮的action属性来关联到backing bean的方法来执行相应的操作。 每个不同的按钮都可以关联不同的方法,当然也可以关联相同的方法(这样就和Action Bean非常类似了)。这中开发模式比较接近于传统的c/s模式或者Asp.net的开发模式。对于那些从c/s架构程序或者Asp.net架构转过来的开发者来说,这种方式可能更自然一些。
在JSF的一些简单的示例程序中,通常把和jsp对应的model层和jsp所提交的action放在同一个backing bean中,即业务逻辑和业务逻辑所处理的数据在同一个bean中。本人认为,这样的结构只能用在简单的应用中,对于企业级的开发并不适合。应该将页面所关联的数据和页面所做的action分开,这样的结构更好一些,比较类似于struts的结构。
JSF的backing bean中的方法访问session,request等没有struts中的直观。笔者找了很多例子才知道如何访问session中的数据。
本文地址:http://com.8s8s.com/it/it15712.htm