将某一特定框架作为应用程序架构是个具有潜在风险的决定,原因是以后再作改变可能要付出昂贵的代价.同时,随着可供我们使用的技术的不断发展,以及新技术的不断实用化,我们希望在不浪费以前所有投资的情况下,能把这些新技术融合到现有的应用程序中去.因此,选择基础技术(如 web 应用程序框架结构)的评判因素之一就是在新技术变得可用时所选的框架是否包容这些新技术.
jsp 标准标签库( jstl )的发展引进了一种标准表达式语言语法,它比最初的 struts 表达式语言更为强大简洁.作为回应, struts 添加了一组软件通用型的标签库,这些标签库提供了常见的功能,但允许使用那些与 jstl 标签(现在,随着 jsp 2.0 的出现,可用在 jsp 页面的任何地方)完全相同的表达式. 【程序编程相关:Java压缩文件/目录成ZIP包最新技巧】
struts 框架从几个不同的方面说明了新技术概念的接受程度. struts 与模型层的实现策略无关.在这一层使用任何 java 技术都是可以的.在控制器层,为了易于定制与专业化, struts 控制器实现方面的新近创新集中于调整现行的设计实践以使之适用于容器上,尤其是要把复杂的操作分解成易于组合的几部分.与此同时,操作的标准组合使向后兼容性得到了维持.在视图层, struts 早就基于自定义标签提供了可选的视图层,也是使用类似脚本的表达式来把输入输出绑定到模型层中相应的属性值的早期改革者.随着 jsp 技术的发展, struts 已包含了它们. 【推荐阅读:ASM classworking】
javaserver faces ( jsf )的标准化产生了一个愿望(就应用程序架构师而言):能够在基于 struts 的现有应用程序的 jsp 页面中使用 jsf 组件.这个愿望正在通过 struts-faces 集成库的开发而得以实现. 【扩展信息:JBuilder2005单元测试之JUn】
可插性
struts-faces 集成库的设计中心是要利用 jsf 中的可插性接口,并在必要时提供软件通用型 jsf 组件,以便现有的应用程序能够在视图层使用 jsf 组件,一次一页,同时对应用程序的控制器层与模型层基本上不作改变.(因此,实现 mvc 结构所鼓励的有意义的分离键值之一;通过使变更仅在一层中发生来在一层中最大限度地降低实施变更的成本.)在大多数情况下,需要的惟一变更是对 jsp 页面自身,以及配置文件中逻辑映射.
一起部署时, jsf 接收并处理每一个请求(就像只基于 jsf 的应用程序中的情况一样).如果请求发送给服务器只是为了改变某一 ui 组件的状态(例如,在数据表中滚动行,或者在树组件中展开一个节点), jsf 将在不干扰模型层的情况下,设法改变组件的状态并重新显示当前页.这对视图层的状态变化完全适用.另一方面,如果请求是通过激活提交按钮触发的,则该库集成到 jsf 请求处理生命周期中将导致标准 struts 请求处理生命周期的调用,包括原来描述的所有行为.
... 下一页