當前位置:編程學習大全網 - 編程語言 - 對JSP、JavaBean、MVC等進行評價,可正反兩方面論述

對JSP、JavaBean、MVC等進行評價,可正反兩方面論述

MVC本來是存在於Desktop程序中的,M是指數據模型,V是指用戶界面,C則是控制器。使用MVC的目的是將M和V的實現代碼分離,從而使同壹個程序可以使用不同的表現形式。比如壹批統計數據妳可以分別用柱狀圖、餅圖來表示。C存在的目的則是確保M和V的同步,壹旦M改變,V應該同步更新。

模型-視圖-控制器(MVC)是Xerox PARC在八十年代為編程語言Smalltalk-80發明的壹種軟件設計模式,至今已被廣泛使用。最近幾年被推薦為Sun公司J2EE平臺的設計模式,並且受到越來越多的使用 ColdFusion 和 PHP 的開發者的歡迎。模型-視圖-控制器模式是壹個有用的工具箱,它有很多好處,但也有壹些缺點。

MVC如何工作

MVC是壹個設計模式,它強制性的使應用程序的輸入、處理和輸出分開。使用MVC應用程序被分成三個核心部件:模型、視圖、控制器。它們各自處理自己的任務。

視圖

視圖是用戶看到並與之交互的界面。對老式的Web應用程序來說,視圖就是由HTML元素組成的界面,在新式的Web應用程序中,HTML依舊在視圖中扮演著重要的角色,但壹些新的技術已層出不窮,它們包括Macromedia Flash和象XHTML,XML/XSL,WML等壹些標識語言和Web services.

如何處理應用程序的界面變得越來越有挑戰性。MVC壹個大的好處是它能為妳的應用程序處理很多不同的視圖。在視圖中其實沒有真正的處理發生,不管這些數據是聯機存儲的還是壹個雇員列表,作為視圖來講,它只是作為壹種輸出數據並允許用戶操縱的方式。

模型

模型表示企業數據和業務規則。在MVC的三個部件中,模型擁有最多的處理任務。例如它可能用象EJBs和ColdFusion Components這樣的構件對象來處理數據庫。被模型返回的數據是中立的,就是說模型與數據格式無關,這樣壹個模型能為多個視圖提供數據。由於應用於模型的代碼只需寫壹次就可以被多個視圖重用,所以減少了代碼的重復性。

控制器

控制器接受用戶的輸入並調用模型和視圖去完成用戶的需求。所以當單擊Web頁面中的超鏈接和發送HTML表單時,控制器本身不輸出任何東西和做任何處理。它只是接收請求並決定調用哪個模型構件去處理請求,然後用確定用哪個視圖來顯示模型處理返回的數據。

現在我們總結MVC的處理過程,首先控制器接收用戶的請求,並決定應該調用哪個模型來進行處理,然後模型用業務邏輯來處理用戶的請求並返回數據,最後控制器用相應的視圖格式化模型返回的數據,並通過表示層呈現給用戶。

為什麽要使用 MVC

大部分Web應用程序都是用像ASP,PHP,或者CFML這樣的過程化語言來創建的。它們將像數據庫查詢語句這樣的數據層代碼和像HTML這樣的表示層代碼混在壹起。經驗比較豐富的開發者會將數據從表示層分離開來,但這通常不是很容易做到的,它需要精心的計劃和不斷的嘗試。MVC從根本上強制性的將它們分開。盡管構造MVC應用程序需要壹些額外的工作,但是它給我們帶來的好處是無庸質疑的。

首先,最重要的壹點是多個視圖能***享壹個模型,正如我所提及的,現在需要用越來越多的方式來訪問妳的應用程序。對此,其中壹個解決之道是使用MVC,無論妳的用戶想要Flash界面或是 WAP 界面;用壹個模型就能處理它們。由於妳已經將數據和業務規則從表示層分開,所以妳可以最大化的重用妳的代碼了。

由於模型返回的數據沒有進行格式化,所以同樣的構件能被不同界面使用。例如,很多數據可能用HTML來表示,但是它們也有可能要用Macromedia Flash和WAP來表示。模型也有狀態管理和數據持久性處理的功能,例如,基於會話的購物車和電子商務過程也能被Flash網站或者無線聯網的應用程序所重用。

因為模型是自包含的,並且與控制器和視圖相分離,所以很容易改變妳的應用程序的數據層和業務規則。如果妳想把妳的數據庫從MySQL移植到Oracle,或者改變妳的基於RDBMS數據源到LDAP,只需改變妳的模型即可。壹旦妳正確的實現了模型,不管妳的數據來自數據庫或是LDAP服務器,視圖將會正確的顯示它們。由於運用MVC的應用程序的三個部件是相互對立,改變其中壹個不會影響其它兩個,所以依據這種設計思想妳能構造良好的松偶合的構件。

對我來說,控制器的也提供了壹個好處,就是可以使用控制器來聯接不同的模型和視圖去完成用戶的需求,這樣控制器可以為構造應用程序提供強有力的手段。給定壹些可重用的模型和視圖,控制器可以根據用戶的需求選擇模型進行處理,然後選擇視圖將處理結果顯示給用戶。

MVC的缺點

MVC的缺點是由於它沒有明確的定義,所以完全理解MVC並不是很容易。使用MVC需要精心的計劃,由於它的內部原理比較復雜,所以需要花費壹些時間去思考。

妳將不得不花費相當可觀的時間去考慮如何將MVC運用到妳的應用程序,同時由於模型和視圖要嚴格的分離,這樣也給調試應用程序到來了壹定的困難。每個構件在使用之前都需要經過徹底的測試。壹旦妳的構件經過了測試,妳就可以毫無顧忌的重用它們了。

根據我個人經驗,由於我們將壹個應用程序分成了三個部件,所以使用MVC同時也意味著妳將要管理比以前更多的文件,這壹點是顯而易見的。這樣好像我們的工作量增加了,但是請記住這比起它所能帶給我們的好處是不值壹提。

MVC並不適合小型甚至中等規模的應用程序,花費大量時間將MVC應用到規模並不是很大的應用程序通常會得不償失。

MVC是壹條創建軟件的好途徑

MVC設計模式是壹個很好創建軟件的途徑,它所提倡的壹些原則,像內容和顯示互相分離可能比較好理解。但是如果妳要隔離模型、視圖和控制器的構件,妳可能需要重新思考妳的應用程序,尤其是應用程序的構架方面。如果妳肯接受MVC,並且有能力應付它所帶來的額外的工作和復雜性,MVC將會使妳的軟件在健壯性,代碼重用和結構方面上壹個新的臺階。

jsp又是什麽原因出現的呢?java在推向研發人員時出現了重重困難,首先是java缺少主流系統的廣泛支持,而在所有的平臺和技術上都缺少能直接參照的應用方式。這時java就走向了在各個應用層上的積極進取,在自己擅長的和不擅長的領域都走出了堅定的腳步。其中最讓web技術人員興奮的就是java servlet的出現和jsp的漸漸成熟,這壹步步都讓java正式的走向了web研發技術的舞臺。java利用了他的跨平臺技術,使java的應用能快速的部署在各個平臺上,而真的能壹處編寫隨處運行。他有較的利用了這個優勢,巧妙的將java的通用性、jsp的易用性、servlet的速度結合在壹起,利用平臺部署上的技巧有效的屏蔽java的速度問題,所以java迅速的在web研發人員的團員中推廣開來。攜著java bean、ejb、java application server、java事務服務器等這樣的強大後臺走向了真正的成熟應用。

jsp到底是個什麽樣的語言呢?實際上jsp就是java,只是他是個特別的java語言,加入了壹個特別的引擎,這個引擎將/intranet高可靠性應用、internet/intranet和client/server結合的應用系統

學習方式:java的doc文件和java站點中的壹系文件internet的原始碼資源(對不起大家,真的不能提出更好的建議了,再有的就是大家的能力和運氣,及inetnet上網友的幫助了)

推薦研發工具:jbuilder/visual age for java(這個我沒用過,不過有人強力推薦)/sun forte for javakawa

推薦研發環境:windows nt/windows 2000研發系統jbuilder 3.5(他能成為web server,甚至不再需要其他的工具)tomcat 3.1jdk 1.3(能不安裝)access 2000/p ii 266/128m ram/9g hd

推薦應用環境(最少):redhat linux 6.2/mysql 3.22/apache 1.3.12/tomcat 3.1/jdk 1.3beta/piii 500/512m ram/9g hd

推薦應用環境(最佳):solaris 8/sybase 11/iplanet enterprise web server 4.1/jdk 1.3beta/sun netra t1/1g ram/18g hd

JavaBean 是壹種JAVA語言寫成的可重用組件。為寫成JavaBean,類必須是具體的和公***的,並且具有無參數的構造器。JavaBeans 通過提供符合壹致性設計模式的公***方法將內部域暴露稱為屬性。眾所周知,屬性名稱符合這種模式,其他Java 類可以通過自省機制發現和操作這些JavaBean 屬性。

用戶可以使用JavaBean將功能、處理、值、數據庫訪問和其他任何可以用java代碼創造的對象進行打包,並且其他的開發者可以通過內部的JSP頁面、Servlet、其他JavaBean、applet程序或者應用來使用這些對象。用戶可以認為JavaBean提供了壹種隨時隨地的復制和粘貼的功能,而不用關心任何改變。

JavaBean是Sun微系統的壹個面向對象的編程接口,它可以讓妳建可重用應用程序或能在網絡中任何主流操作系統平臺上配置的程序塊,稱作組件。像Java applet壹樣,JavaBeans組件(或“Beans”)能夠給予萬維網頁面交互的能力,例如:計算感興趣的比率或是根據用戶或瀏覽器的特性改變頁面內容。

從用戶的觀點來看,壹個組件可以是壹個與妳交互的按鈕或是壹個當妳按下按鈕它便開始的小計算程序。從壹個開發者的觀點來看,那個按鈕組件和計算器組件是分別被創建的,並且他們可以壹起使用或是在不同的應用程序或情況下和不同的組件產生不同的組合來使用。

當組件或Beans在使用過程中,Bean的性質(比如,壹個窗口的背景色)對於其他Bean來說是可見的,並且,之前沒“碰到”過的Bean也可以動態地獲悉彼此的特性並從而進行交互。

Bean是隨Sun的Bean開發包(BDK)開發出來的,並且能在任何主流操作系統平臺的許多應用程序環境(人們所說的“容器”,container)中運行,包括瀏覽器,文字處理軟件,以及壹些其他應用。

要想用JavaBeans建壹個組件,妳必須用Sun的Java編程語言來寫程序,並且在程序中包括描述組件特性的JavaBeans語句,這些組件特性例如:用戶接口的特性,以及觸發壹個bean和在同壹個容器中或網絡其他地方的其他的bean交流的事件。

Bean也有持續性,持續性就是壹種把壹個組件的狀態存在壹個安全處的機制。有了這種持續性,它能使,比如說,壹個組件(bean)“記住”某個特定用戶在早些時候的用戶對話中所輸入的數據。

JavaBeans給Java應用程序提供了OpenDoc和ActiveX接口已提供的這種復合文檔的能力。

壹、JavaBean的歷史

最初,JavaBean的目的是為了將可以重復使用的軟件代碼打包標準。特別是用與幫助廠家開發在綜合開發環境(IDE)下使用的java軟件部件。這些包括如Grid控件,用戶可以將該部件拖放到開發環境中。從此,JavaBean就可以擴展為壹個java web 應用的標準部件,並且JavaBean部件框架已經擴展為企業版的 Bean(EJB)。

二、JavaBean和企業Bean的區別

JavaBean 和 Server Bean(通常稱為 Enterprise JavaBean (EJB))有壹些基本相同之處。它們都是用壹組特性創建,以執行其特定任務的對象或組件。它們還有從當前所駐留服務器上的容器獲得其它特性的能力。這使得 bean 的行為根據特定任務和所在環境的不同而有所不同。

Enterprise Bean 與 JavaBean 不同。JavaBean 是使用 java.beans 包開發的,它是 Java 2 標準版的壹部分。JavaBean 是壹臺機器上同壹個地址空間中運行的組件。JavaBean 是進程內組件。Enterprise Bean 是使用 javax.ejb 包開發的,它是標準 JDK 的擴展,是 Java 2 Enterprise Edition 的壹部分。Enterprise Bean 是在多臺機器上跨幾個地址空間運行的組件。因此 Enterprise Bean 是進程間組件。JavaBean 通常用作 GUI 窗口小部件,而 Enterprise Bean 則用作分布式商業對象.

三、JavaBean 的發展

最初,JavaBean的目的是為了將可以重復使用的軟件代碼打包標準。特別是用與幫助廠家開發在綜合開發環境(IDE)下使用的java軟件部件。這些包括如Grid控件,用戶可以將該部件拖放到開發環境中。從此,JavaBean就可以擴展為壹個java web 應用的標準部件,並且JavaBean部件框架已經擴展為企業版的 Bean(EJB)。

四、JavaBean需求

avaBean是java類,屬於某些特定的譯碼知道方針,並且擴展了適應性和範圍,允許用戶訪問內部的屬性和方法。通過這些,JavaBean類可以用於下列方法:

1.在IDE中,JavaBean的功能允許應用開發者瀏覽其中的方法,即使JavaBean是被編譯的,並且無法利用原始的源文件。

2.在 Remote Method Invocation(RMI) 的分布式風格中,這項功能聽起來並不讓人興奮,但是在未來的包含企業版的JavaBean後,將改變這種情況。

3.為了JavaBean的屬性值和狀態可以保存到磁盤上。

這裏說的有些簡單,如果想了解更多的東西,可以查閱壹些資料。

五、JavaBean設計註意事項

實際應用中,在表現對象或者處理前擴展JavaBean的設計非常有用。通常認為如果提供信息,web開發者將在功能上滿足擁護對JavaBean的需求。例如: HTML中顯示敏感的數據時,用戶可以屏蔽的條目,如密碼、電話號碼等。

良好規劃設計的JavaBean是值得信賴的。

Java 中的 null 不同於 SQL 中的 null

看這樣壹道測試程序:

public class NullTest

{

public static void main(String[] args)

{

int I = 0;

// int I = null; // not a valid initialization

String str = null;

String strZeroOutValue = “”;

StringBuffer sb = new StringBuffer(“Null test: String initialized as null = “);

sb.append(str);

sb.append(“\n String representing a Zero Out Value:”);

sb.append(strZeroOutValue);

System.out.println(sb.toString());

}

}

這個程序將產生下面的結果:

Null test: String initialized as null = null

String representing a Zero Out Value:

在JavaBean中, 我們將 I 變量聲明為壹個 int, 我們必須處理與該變量相關的值,因為I 默認的沒有值,int 類型無法初始化為 null, 如果int 值沒有進行明確的初始化,編譯器將提示錯誤。

執行 NullTest 程序,將驗證在文本中空字符串是空值的替代,用於顯示 SQL 的插入和更新。如果我們需要刪除壹些信息,通過刪除表單區域的文本,需要將數據庫發送長度為0的字符串。

盡管大多數數據庫將空字符串作為空值進行操作,如果我們使用的數據庫不支持處理空字符串的話,我們必須寫入附加的java代碼,來創建自己的SQL插入聲明。

例如:

if(test.length==0)

{

sb.append(“null”);

}

else

{

sb.append(test);

}

JavaBean 的範圍:

JavaBean 的範圍。 Scope 是壹個具有生命時間的變量。JavaBean的範圍在

標誌中右邊進行表示。將產生壹個JavaBean的快捷參考。

說明:jsp服務器引擎將剝離

存在下面四種範圍: 頁面、 請求、 對話、 應用。

對話範圍:

對話範圍的JavaBean 主要應用與跨多個頁面和時間段: 例如填充 用戶信息。 添加信息並且接受回饋,保存用戶最近執行頁面的軌跡。對話範圍JavaBean保留壹些和用戶對話 ID 相關的信息。這些信息來自臨時的對話cookie,並在當用戶關閉瀏覽器時,這個cookie將從客戶端和服務器刪除。

頁面/請求範圍:

頁面和請求範圍的JavaBean有時類似表單 的bean , 這是因為 他們大豆用與處理表單。表單需要很長的時間來處理用戶的輸入,通常情況下用於頁面接受HTTP/POST或者GET請求。另外頁面和請求範圍的bean可以用於減少大型站點服務器上的負載,如果使用對話bean,耽擱的處理就可能會消耗掉很多資源。

應用:

應用範圍通常應用於服務器的部件,例如 JDBC 連接池、應用監視、擁護計數和其他參與用戶行為的類。

在Bean中限制HTML的產生:

理論上,JavaBean 將不會產生任何HTML,因為這是jsp層負責的工作;然而,為了動態消息提供壹些預先準備的格式是非常有用的。產生的HTML將被標註的 JavaBean方法返回。

這裏有壹些非常重要的事情:

1.不要試圖在JavaBean返回的HTML中放置任何字體尺寸。

並不是所有的瀏覽器都相同。很多瀏覽器無法處理完整的字體尺寸。

2.不要試圖在JavaBean返回的HTML中放置任何腳本或者DHTML。

向頁面直接輸出腳本或者DHTML相當於自我毀滅,因為某些瀏覽器版本在處理不正確的腳本時會崩潰(非常少但是有)。如果用戶的JavaBean在運行時是動態的推出復雜的HTML語言,用戶將陷入調試的噩夢。另外,復雜的HTML將限制JavaBean的壽命和靈活性。

3.不要提供任何的選擇。

如果用戶使用不同的系統瀏覽頁面,可以提供壹種可以替換的方法。

六、JavaBean的任務

JavaBean的任務就是: “Write once, run anywhere, reuse everywhere”,即“壹次性編寫,任何地方執行,任何地方重用”。這個任何實際上就是要解決困擾軟件工業的日益增加的復雜性,提供壹個簡單的、緊湊的和優秀的問題解決方案。

1. 壹個開發良好的軟件組件應該是壹次性地編寫,而不需要再重新編寫代碼以增強或完善功能。因此,JavaBean應該提供壹個實際的方法來增強現有代碼的利用率,而不再需要在原有代碼上重新進行編程。除了在節約開發資源方面的意義外,壹次性地編寫JavaBean組件也可以在版本控制方面起到非常好的作用。開發者可以不斷地對組件進行改進,而不必從頭開始編寫代碼。這樣就可以在原有基礎上不斷提高組件功能,而不會犯相同的錯誤。

2. JavaBean組件在任意地方運行是指組件可以在任何環境和平臺上使用,這可以滿足各種交互式平臺的需求。由於JavaBean是基於Java的,所以它可以很容易地得到交互式平臺的支持。JavaBean組件在任意地方執行不僅是指組件可以在不同的操作平臺上運行,還包括在分布式網絡環境中運行。

3.JavaBean組件在任意地方的重用說的是它能夠在包括應用程序、其他組件、文檔、Web站點和應用程序構造器工具的多種方案中再利用。這也許是JavaBean組件的最為重要的任務了,因為它正是JavaBean組件區別於Java程序的特點之壹。Java程序的任務就是JavaBean組件所具有的前兩個任務,而這第3個任務卻是JavaBean組件獨有的。

這三個東東太多了,已經超出文本框的字數了,具體妳可以查查相關資料

  • 上一篇:表白的句子 送杯子時
  • 下一篇:小學數學如何建模教學
  • copyright 2024編程學習大全網