Topic: 解決JSP程式撰寫不直覺、程式碼與UI混雜的痛: JSPWidget

  Print this page

1.解決JSP程式撰寫不直覺、程式碼與UI混雜的痛: JSPWidget Copy to clipboard
Posted by: lee5518
Posted on: 2003-06-20 20:10

開發 Web-based 應用程式已儼然成為企業應用未來的主流趨勢,而 JSP 具備了 Java 跨平台及可存取 J2EE 架構中提供的所有服務等優點,更是企業在專案開發時考量的最佳網站技術。

然而,單單用 JSP 來開發 Web 專案並不容易,因為 JSP 是非事件驅動程式撰寫模式 ( Non Event-Driven Computing Model)、 UI (HTML Elements) 無法由程式碼直接控制、以及 UI 的狀態(View State)無法自動保存, 這些因素造成了JSP的程式碼與 UI 混合在一起,錯綜複雜的 UI/程式碼不僅在開發上不容易,也造成日後維護與擴充上的困難。

相較於傳統的 Client Forms 或 Client-based Web Applications 程式撰寫模式而言, JSP顯然不直覺多了。原因有三,茲並列比較如下:

1. Event-Driven Computing Model

Client Forms : 你可以藉由撰寫事件處理函式 (Event Handler) 來處理由 GUI components所觸發的事件。 例如 Button 的 OnClick 事件或 DropdownList 的 OnSelectChanged 事件。

純 JSP : 因為JSP是由上到下循序處理 (Sequential Processing),因此你必須用程式來判斷到底使用者按了哪個按鈕, 使用者是否改變選定的選單項目等等,然後根據這些判斷結果來撰寫對應的程式碼。

2. GUI Compoment

Client Forms : 所有 GUI Compoment 的屬性與行為都可以由程式碼完全存取與控制, 程式碼與 UI是完全分開的。

純 JSP : 因為JSP是由上到下循序處理 (Sequential Processing),因此你必須在適當的JSP檔案位置插入程式碼, 以改變 output 至瀏覽器的 UI。但這樣撰寫方式往往造成程式碼與 UI 混雜在一起,非常難維護與擴充。

3. Retain View State automatically

Client Forms : 無庸置疑,在傳統的 client forms 中, GUI component 的狀態 (view state) 自動保持在最後使用者對它改變的狀態。

純 JSP : 因為 HTTP 是不保持狀態的 (Stateless),因此所有的 HTML element 的狀態 (View State )會在 post 回 web server 後就消失。 為了保持最後使用者對 GUI Compoment 改變的狀態 ,你必須要撰寫程式。 保持 HTML element 的狀態 (View State )並不容易,不同的 HTML element 需要用不同的處理方法。 通常,約有25%的程式碼單純為了這件在 Client Form 中視為理所當然的事。

附帶優點
除了上述的三個使用JSPWidget 的好處外, 另外下列附帶優點:
1. 自動傳回 (AutoPostBack)
2. 宣告式欄位編審(Declarative Validation)
3. 資料繫結(DataBinding)

這是由 恆逸資訊 所提供超好用而且免費的東西
網站上還有詳細的介紹和範例唷
http://edu.uuu.com.tw/jspwidget/
http://edu.uuu.com.tw/jspwidget/docs/jspwidget_introduction.htm
歡迎大家試試看唷~~~

2.Re:解決JSP程式撰寫不直覺、程式碼與UI混雜的痛: JSPWidget [Re: lee5518] Copy to clipboard
Posted by: juweiping
Posted on: 2003-06-20 21:42

我想知道与JSF比有什么优势?

3.Re:解決JSP程式撰寫不直覺、程式碼與UI混雜的痛: JSPWidget [Re: lee5518] Copy to clipboard
Posted by: nothing
Posted on: 2003-06-22 13:47

大陆简体版:

开发 Web-based 应用程序已俨然成为企业应用未来的主流趋势,而 JSP 具备了 Java 跨平台及可存取 J2EE 架构中提供的所有服务等优点,更是企业在项目开发时考量的最佳网站技术。

然而,单单用 JSP 来开发 Web 项目并不容易,因为 JSP 是非事件驱动程序撰写模式 ( Non Event-Driven Computing Model)、 UI (HTML Elements) 无法由程序代码直接控制、以及 UI 的状态(View State)无法自动保存, 这些因素造成了JSP的程序代码与 UI 混合在一起,错综复杂的 UI/程序代码不仅在开发上不容易,也造成日后维护与扩充上的困难。

相较于传统的 Client Forms 或 Client-based Web Applications 程序撰写模式而言, JSP显然不直觉多了。原因有三,兹并列比较如下:

1. Event-Driven Computing Model

Client Forms : 你可以藉由撰写事件处理函式 (Event Handler) 来处理由 GUI components所触发的事件。 例如 Button 的 OnClick 事件或 DropdownList 的 OnSelectChanged 事件。

纯 JSP : 因为JSP是由上到下循序处理 (Sequential Processing),因此你必须用程序来判断到底使用者按了哪个按钮, 使用者是否改变选定的选单项目等等,然后根据这些判断结果来撰写对应的程序代码。

2. GUI Compoment

Client Forms : 所有 GUI Compoment 的属性与行为都可以由程序代码完全存取与控制, 程序代码与 UI是完全分开的。

纯 JSP : 因为JSP是由上到下循序处理 (Sequential Processing),因此你必须在适当的JSP档案位置插入程序代码, 以改变 output 至浏览器的 UI。但这样撰写方式往往造成程序代码与 UI 混杂在一起,非常难维护与扩充。

3. Retain View State automatically

Client Forms : 无庸置疑,在传统的 client forms 中, GUI component 的状态 (view state) 自动保持在最后使用者对它改变的状态。

纯 JSP : 因为 HTTP 是不保持状态的 (Stateless),因此所有的 HTML element 的状态 (View State )会在 post 回 web server 后就消失。 为了保持最后使用者对 GUI Compoment 改变的状态 ,你必须要撰写程序。 保持 HTML element 的状态 (View State )并不容易,不同的 HTML element 需要用不同的处理方法。 通常,约有25%的程序代码单纯为了这件在 Client Form 中视为理所当然的事。

附带优点
除了上述的三个使用JSPWidget 的好处外, 另外下列附带优点:
1. 自动传回 (AutoPostBack)
2. 宣告式字段编审(Declarative Validation)
3. 资料系结(DataBinding)

这是由 恒逸信息 所提供超好用而且免费的东西
网站上还有详细的介绍和范例唷
http://edu.uuu.com.tw/jspwidget/
http://edu.uuu.com.tw/jspwidget/docs/jspwidget_introduction.htm
欢迎大家试试看唷~~~

4.Re:解決JSP程式撰寫不直覺、程式碼與UI混雜的痛: JSPWidget [Re: lee5518] Copy to clipboard
Posted by: supertoy
Posted on: 2003-06-23 08:28

最大的问题,是完全在页面里写代码,设计思想还是完全在jsp里面写东西。比如drop down list就没有传递一个集合进去填充的概念,
salmon有controller类,可以用那个来写代码逻辑,这个好像不行。

5.Re:解決JSP程式撰寫不直覺、程式碼與UI混雜的痛: JSPWidget [Re: lee5518] Copy to clipboard
Posted by: sutm
Posted on: 2003-06-24 11:03

let me try

6.Re:解決JSP程式撰寫不直覺、程式碼與UI混雜的痛: JSPWidget [Re: supertoy] Copy to clipboard
Posted by: lee5518
Posted on: 2003-07-02 12:15

supertoy wrote:
最大的问题,是完全在页面里写代码,设计思想还是完全在jsp里面写东西。比如drop down list就没有传递一个集合进去填充的概念,
salmon有controller类,可以用那个来写代码逻辑,这个好像不行。


The data source of this widget is a named scoped variable (a variable that is stored in one of the JSP scope), can be type of :
1. Array of primitives: the value and text of each option will be both set to each element in the array.
2. Array of Object: the value and text of each option will be both set to each element in the array.
3. Collection: the value and text of each option will be both set to each element in the collection.
4. Enumeration: the value and text of each option will be both set to each element of the enumeration.
5. Map: the value of each option will be set to the each value in the Map and the text will be set to the corresponding key in the Map.
6. Vector of Row: for ech Row, the value of each option will be set to the column indicated by the dataValueField attribute . And the text of each option will be set to the column indicated by the dataTextField attribute .

除了資料庫的值外,資料來源尚可為下列型別 :
1. 基本資料型別陣列 (Array of primitives): 清單項目顯示的值與選定的值皆為陣列中的各個元素。
2. 物件型別陣列 (Array of Object): 清單項目顯示的值與選定的值皆為陣列中的各個元素。
3. 集合 (Collection): 清單項目顯示的值與選定的值皆為集合中的各個元素。
4. 列舉表 (Enumeration): 清單項目顯示的值與選定的值皆為列舉表中的各個元素。
5. 對映(Map): 清單項目顯示的值為列舉表中各個鍵值 (Key),而 清單項目選定的值為各個鍵值所對應的值 (Value)。
6. Vector of Row: 清單項目為 Vector 中的各個 Row。 清單項目顯示的值為 dataTextField屬性所指定的欄位,而 清單項目選定的值為 dataValueField屬性所指定的欄位。

7.Re:解決JSP程式撰寫不直覺、程式碼與UI混雜的痛: JSPWidget [Re: lee5518] Copy to clipboard
Posted by: supertoy
Posted on: 2003-07-04 14:06

没有controller,怎么弄也还是jsp里面嵌代码和tag,你注意看ASP.NET,每个叶面里有个CONTROLLER,可以在里面想写windows应用一样写东西。salmon才是
真正的和asp.net思想类同的东西。


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923