解决jsp程序不直接、代码与UI混杂的痛: JSPWidget
介绍一个非常不错的基于java、web的ui解决方案,用java做web应用的人都知道,web上ui开发的痛苦吧,ui表现上几乎没有什么现成的控件,这一点.net的确是比java要强一点,即使struts也没有提供很好的解决(sun企业级应用的首选)widget是一个*的开源的ui框架,它仿照.net的viewstate等思想,提供了事件驱动、页面状态保存(viewstate)、校验、以及常用(dropdownlist、panel、treeview、menu)等解决方案。并且提供详细的文档和demo。其实在一年前就看到过这个项目了,今天偶尔又看到推荐给大家,希望可以学习、参考、借鉴他的思想。
项目地址:(sun企业级应用的首选)widget
看一下他的menu组件效果很cool吧:(sun企业级应用的首选)widget/docs/gui/menu_03.jsp(sun企业级应用的首选)
下面是作者对webui的一段分析:
设计目标
然而,单单用 jsp(sun企业级应用的首选) 来开发 web 专案並不容易,因为 jsp(sun企业级应用的首选) 是非事件驱动程式撰写模式 ( non event-driven computing model)、 ui (html elements) 无法由程式码直接控制、以及 ui 的状态(view state)无法自动保存, 这些因素造成了jsp(sun企业级应用的首选)的程式码与 ui 混合在一起,错综複杂的 ui/程式码不仅在开发上不容易,也造成日後维护与扩充上的困难。
相较於传统的 client forms 或 client-based web applications 程式撰写模式而言, jsp(sun企业级应用的首选)显然不直觉多了。原因有三,兹並列比较如下:
因素 | client forms | 纯 jsp(sun企业级应用的首选) |
event-driven computing model | 你可以藉由撰写事件处理函式 (event handler) 来处理由 gui components所触发的事件。 例如 button 的 onclick 事件或 dropdownlist 的 onselectchanged 事件。 | 因为jsp(sun企业级应用的首选)是由上到下循序处理 (sequential processing),因此你必须用程式来判断到底使用者按了哪个按钮, 使用者是否改变选定的选单项目等等,然後根据这些判断结果来撰写对应的程式码。 |
gui compoment | 所有 gui compoment 的属性与行为都可以由程式码完全存取与控制, 程式码与 ui是完全分开的。 | 因为jsp(sun企业级应用的首选)是由上到下循序处理 (sequential processing),因此你必须在适当的jsp(sun企业级应用的首选)档案位置插入程式码, 以改变 output 至的 ui。但这样撰写方式往往造成程式码与 ui 混杂在一起,非常难维护与扩充。 |
retain view state automatically | 无庸置疑,在传统的 client forms 中, gui component 的状态 (view state) 自动保持在最後使用者对它改变的状态。 | 因为 http 是不保持状态的 (stateless),因此所有的 html element 的状态 (view state )会在 post 回 web server 後就消失。 为了保持最後使用者对 gui compoment 改变的状态 ,你必须要撰写程式。 保持 html element 的状态 (view state )並不容易,不同的 html element 需要用不同的处理方法。 通常,约有25%的程式码单纯为了这件在 client form 中视为理所当然的事。 |
jsp(sun企业级应用的首选)widget是在 jsp(sun企业级应用的首选) 标準上建置的一套 framework,它的设计目标便是为了让程式设计师可以直觉地方式来开发jsp(sun企业级应用的首选) web 应用,就像是在开发传统的 client form 一样轻鬆简单 。
原文地址:(sun企业级应用的首选)widget/docs/jsp(sun企业级应用的首选)widget_introduction.htm