版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第6章 JavaBean組件程序設計,,6,內容提要,本章介紹組件開發(fā)技術。簡要介紹組件的基本概念JavaBean的編寫以及調用方法JavaBean的屬性介紹常用的外部組件:發(fā)送Email組件文件上傳圖形組件。介紹JSP標記庫的編寫以及使用介紹Java設計模式以及JSP設計模式。,組件技術概述,現(xiàn)在軟件開發(fā)都已經轉向了基于組件的開發(fā),目前具備代表性的組件技術有微軟的COM、COM+,有Sun的JavaBean和EJ
2、B(Enterprise Java Bean),另外還有CORBA(Common Object Request Broker Architecture,公共對象請求代理結構)。,組件和容器,容器是包含其它組件的組件。它們被用作組件的框架。例如,可視化的開發(fā)工具使你能拖放組件到容器中,這些容器能調整大小和位置。軟件組件模型描述了如何開發(fā)和使用組件。軟件組件模型包括以下元素: 創(chuàng)造和使用組件的規(guī)范;軟件實現(xiàn)規(guī)范,為建造和使用組件提供
3、一種具體的機制。JavaBean規(guī)范將“軟件組件”的概念引入到Java編程的領域。組件是自包含的、可重用的軟件單元;而JavaBean組件,則可以使用可視的應用程序開發(fā)工具,可視地將它們編寫到Java程序中。JavaBean規(guī)范為Java開發(fā)人員提供了一種“組件化”其Java類的方法。,Bean開發(fā)工具,JavaSoft,開發(fā)Java系列開發(fā)工具的公司,開發(fā)了BDK (Bean開發(fā)工具)。 BDK可供開發(fā)者自由地使用,適用于Wind
4、ows 2000、XP、2003、以及Solaris 2.4和2.5。其它用于Bean開發(fā)的各種工具,常用的有7個。Sun MicroSystems公司的JavaPlan;Sun MicroSystems公司的Java Studio;Sun MicroSystems公司的Java Workshop ;IBM的Visual Age for Java ;Symantec的Visual Café for Java ;
5、微軟公司的Visual J++;Boland公司的Jbuilder。,JavaBean簡介,JavaBean是一種軟件組件模型。它與其它軟件對象相互作用,決定如何建立和重用軟件組件。這些可重用軟件組件被稱之為Bean。Bean使用現(xiàn)有的Bean幫助開發(fā)新的計劃,進而,建立它們之間的關系。在Sun公司的Java Bean規(guī)范的定義中,Bean的正式說法是:“Bean是一個基于Sun公司的JavaBean規(guī)范的、可在編程工具中被可視化
6、處理的可復用的軟件組件”。JavaBean是基于Sun公司的JavaBean規(guī)范的,可在編程工具中被可視化處理的可復用的軟件組件。因此JavaBean具有4個基本特性:(1)獨立性(2)可重用性(3)在可視化開發(fā)工具中使用(4)狀態(tài)可以保存,JavaBean編程,JavaBean分成可視組件和非可視組件。在JSP中主要使用非可視組件,對于非可視組件,不必去設計它的外觀,主要關心它的屬性和方法。,JavaBean的特點,編寫JavaB
7、ean就是編寫一個Java類,所以只要會寫類就能編寫一個Bean,一個完整JavaBean在類的命名上需要遵守4點。1、如果類的成員變量的名字是xxx,那么為了更改或獲取成員變量的值,在類中使用兩個方法:getXxx(),用來獲取屬性xxx。setXxx(),用來修改屬性xxx。2、對于boolean類型的成員變量,允許使用is代替get和set。3、類中方法的訪問屬性必須是public的。4、類中如果有構造方法,那么這個
8、構造方法也是public的,并且是無參數(shù)的。,JavaBean頁面指令,在JSP中專門提供三個頁面指令來和JavaBean交互,分別是jsp:useBean指令、jsp:setProperty指令和jsp:getProperty指令。jsp:useBean指令指定JSP頁面中包括的JavaBean,具體的語法格式為:,,JavaBean頁面指令,其中,id是當前頁面中引用JavaBean的名字,JSP頁面中的Java代碼將使用這個名
9、字來訪問JavaBean。scope:指定JavaBean的作用范圍,可以取4個值。page:JavaBean只能在當前頁面中使用。在JSP頁面執(zhí)行完畢后,該JavaBean將會被進行垃圾回收。request:JavaBean在相臨的兩個頁面中有效。session:JavaBean在整個用戶會話過程中都有效。application:JavaBean在當前整個Web應用的范圍內有效。jsp:setProperty指令功能是設置
10、JavaBean的屬性。jsp:getProperty操作指令功能是得到某個JavaBean的屬性值。,編寫JavaBean,,案例名稱:簡單的JavaBean程序名稱:j6_01.java,案例名稱:調用JavaBean方法一程序名稱:j6_02.jsp,案例名稱:調用JavaBean方法二程序名稱:j6_03.jsp,案例名稱:調用JavaBean方法三程序名稱:j6_04.jsp,注意:方法一在有些Tomcat上可能執(zhí)行失
11、敗,方法二和方法三完全通過!,JavaBean的屬性,通用Bean屬性的類型有四種:簡單屬性、關聯(lián)屬性、受限屬性和索引索性。簡單(Simple)屬性:該屬性解釋怎樣把屬性賦予Bean。關聯(lián)(Bound)屬性:一個Bound屬性是指當該種屬性的值發(fā)生變化時,要通知其它的對象。受限(Constrained)屬性:指當這個屬性的值要發(fā)生變化時,與這個屬性已建立了某種連接的其它Java對象可以否決屬性值的改變。索引(Indexed)屬性
12、:一個Indexed屬性可描述多值的屬性,用一個數(shù)組表示。,帶屬性的JavaBean,案例名稱:帶屬性的JavaBean程序名稱:j6_05.java,案例名稱:修改JavaBean的屬性方法一程序名稱:j6_06.jsp,案例名稱:修改JavaBean的屬性方法二程序名稱:j6_07.jsp,利用外部的Bean,JSP之所以強大,很大程度上依賴于外部組件的使用。有很多著名的公司開發(fā)外部Bean組件,比如SUN公司和IBM公司
13、等。本節(jié)介紹最常用的組件:Email組件、圖形組件和文件上傳組件,Email組件,JavaMail API 是一個用于閱讀、編寫和發(fā)送電子郵件的可選包(標準擴展)。在JSP中要想發(fā)送Email,需要實用JavaMail組件。這里需要兩個組件“activation.jar”和“mail.jar”,,發(fā)送Email,需要根據(jù)實際修改五個參數(shù),程序才可以正確執(zhí)行,目前的SMTP郵件發(fā)送服務器都需要驗證。驗證需要設置三個參數(shù),發(fā)送郵件的服務器地
14、址strHost、驗證用戶名strUserName和strPassWord密碼String strHost = "smtp.163.net";String strUserName = "szg";String strPassWord ="szg";,案例名稱: 發(fā)送Email程序名稱:mail.jsp,發(fā)送Email,還需要修改兩個參數(shù)就是發(fā)送人地址和收信人地址
15、。String strFrom = "shizhiguo@163.net";String strToList = "shizhiguo@tom.com";比如現(xiàn)在張三有一個郵箱是zhangsan@163.net,郵箱密碼是mamahao,現(xiàn)在他要給周潤發(fā)發(fā)郵件,周潤發(fā)的郵箱是zhourunfa@163.com。改完的五個參數(shù)如下面的代碼段。String strHost = "
16、;smtp.163.net";int nPort = 0;String strUserName = "zhangsan";String strPassWord ="mamahao";String strFrom = "zhangsan@163.net";String strToList = zhourunfa@163.com";,常見郵箱
17、的SMTP地址,發(fā)送Email,繪制圖形,在Java圖形編程領域中,最著名的組件是JGraph組件,該組件在繪制二維和三維方面功能非常優(yōu)秀。最新的JGraph組件可以從“http://prdownloads.sourceforge.net/jgraph/”下載,該組件大約130K,,使用JGraph繪圖,案例名稱:使用JGraph繪圖程序名稱:j6_09.java,文件上傳,在Web開發(fā)中,文件上傳是一項非常實用的功能在Java開
18、發(fā)體系中,文件上傳功能的實現(xiàn)主要依賴于JavaBean,常用的上傳組件是jspsmart,以jspsmart組件為例進行介紹文件上傳,使用jspsmart組件實現(xiàn)文件上傳,,案例名稱:文件上傳功能的實現(xiàn)程序名稱:selectfile.html文件名稱:存儲到服務器上的路徑:,使用jspsmart組件實現(xiàn)文件上傳,案例名稱:處理文件上傳的Servlet程序程序名稱:servletUpload.java,自定義JS
19、P標記庫,在JSP規(guī)范1.1版中增加了自定義標記庫,允許開發(fā)人員在自定義的標記符中封裝復雜的功能。定制標記使得JSP項目中很容易創(chuàng)建重用的代碼模塊,使用自定義標記庫,在使用自定義標記庫時,主要分為以下3個步驟:(1)建立一個TLD(Tag Library Descriptor)文件,指定標記庫中哪一個標記與哪一個處理程序相匹配。這是一種很簡單的XML文件,TLD文件描述和說明了屬性、信息和標記處理器文件位置等信息。JSP 容器使用這一
20、文件來映射被調用標記庫的位置和用法。(2)建立一個對標記的處理程序。處理程序本身也是一個Java類。這是標記庫的真正核心。JSP頁面把頁面上設置的標記屬性都傳遞給標記處理器,JSP頁面上的標記標示的內容也是這樣處理的。當標記處理器完成其處理過程,它就會把處理后的輸出結果回送給JSP頁面做進一步處理。(3)在JSP頁面中使用標記。在JSP頁面中首先聲明標記庫,然后再使用它。,創(chuàng)建并使用標記庫,案例名稱:TLD配置文件程序名稱:m
21、ytld.tld,案例名稱:處理自定義標記的Java類程序名稱:MyTagLib.java,案例名稱:使用自定義標記庫的JSP頁面程序名稱:exampletag.jsp,面向對象設計模式,面向對象軟件開發(fā)領域中,設計模式包括一些規(guī)則來完成一定任務。設計模式針對一些特定的問題,提出一種解決方案。常用的面向對象設計模式有4種:Factory模式、Singleton模式、Façade模式和MVC架構模式。,Factory模式
22、,如果想要通過Email發(fā)送一些新產品的信息,目標用戶的類型不同,所以需要發(fā)送不同內容的郵件。除此之外,用戶的類型還可能會不斷的增加。一般這種需求利用Factory模式設計。定義一個EmailSender類。,class EmailSender{void sendEMail(SeniorClientType client){SeniorClientEmail email = new SeniorClientEmail();
23、email.createEmailBody();email.createEmailSubject();…email.send();}void sendEMail(RichClientType client){RichClientEmail email = new RichClientEmail();email.createEmailBody();email.createEmailSubject
24、();…email.send();}void sendEMail(FemaleClientType client){FemalClientEmail email = new FemaleClientEmail();email.createEmailBody();email.createEmailSubject();…email.send();}},Factory模式,根據(jù)sendEMa
25、il傳遞的參數(shù)類型,創(chuàng)建不同的發(fā)送Email的對象,然后利用該對象的方法進行處理。創(chuàng)建的Email類為:,class SeniorClientEmail{void createEmailBody(){…}void createEmailSubject(){…}void send(){…}}class RichClientEmail{void createEmailBody(){…}void createEmail
26、Subject(){…}void send(){…}},Factory模式,如果要添加新的客戶類型。只要修改EmailSender類,添加一種新的客戶類型方法就可以。Factory模式建立的系統(tǒng)擴充性非常好。進一步抽象,利用接口或者抽象類,將公共的一些特征抽象成接口或者抽象類,將一些細節(jié)留給派生類處理。設計的Email類為,class EmailSender{Void sendEmail( IClientType clie
27、nt){Iemail email = client.createEmail();email.createEmailBody();email.createEmailSubject();email.send();},Factory模式,不同的客戶類型利用不同的類進行處理,抽象這些客戶的一些共同特征,建立接口IClientType,具體的客戶類型處理類都通過這個接口創(chuàng)建。,Interface IClientType{
28、IEmail createEmail();}class SeniorClientType implements IClientType{IEmail createEmail(){return new SeniorClientEmail();}class RichClientType implements IClientType{IEmail createEmail() { return new RichClientE
29、mail();},Factory模式,同時提取不同的Email類型的一些共同特征,建立接口IEmail,具體的類都通過這個接口創(chuàng)建。,interface IEmail{void createEmailBody();void createEmailSubject();void send();}class SeniorClientType implements IEmail{void createEmailBody()
30、{…}void createEmailSubject(){…}void send();}class RichClientType implements IEmail{void createEmailBody(){…}void createEmailSubject(){…}void send();},Singleton模式,數(shù)據(jù)庫管理系統(tǒng)DB2和Oracle有連接數(shù)目的限制,在默認的情況下,DB2是50用戶,Or
31、acle是100用戶,如果超過這個數(shù)據(jù)的話,程序就會出現(xiàn)異常。利用類ConnectionPoolManager來保證連接數(shù)不被超過。,Singleton模式,,class ConnectionPoolManager{static ConnectionPoolManager instance = null;int numberofConnection = 0;int maxConnection = 50;private
32、 ConnectionPoolManager(){};public static ConnectionPoolManager getConnectionPoolManager(){if(instance == null){instance = new ConnectionPoolManager();}return instance}public DBConnection getConnection(
33、){if ((numberOfConnection < maxConnection)){return createNewConnection();}else{sleep(3000);getConnection();}},Façade模式,比如要保存一個帳戶的信息,第一步需要得到數(shù)據(jù)連接對象,第二步需要解析客戶信息和帳戶信息,第三步根據(jù)需要存儲的內容生成不同的SQL語句,第四步
34、執(zhí)行SQL語句。過程比較繁雜。利用Façade模式:將所有的處理流程進行封裝,只向外提供一個方法,實現(xiàn)所有的功能。,MVC架構模式,Model-View-Controller架構模式是80年代中期在Smalltalk-80 GUI(一種經典的面向對象程序設計語言)實驗室發(fā)明的。根據(jù)MVC模式,一個軟件應該將商務邏輯(Model)和顯示(View)分開。分開有許多好處,最主要的有兩個方面:1、同一的商務邏輯層(Mode
35、l)可能會對應多個顯示層(View),如果商務邏輯層和顯示層放在一起的話,再添加一個顯示層的時候就會極大的增加組件的復雜性。一個商務邏輯對著兩個顯示層的例子是:銀行的帳戶的商務邏輯層對應ATM和Internet兩個顯示層。2、通常情況下,每次修改顯示層的時候一般并不需要修改商務邏輯層。,MVC架構模式,Model層一般利用Façade模式進行設計,在復雜的商務邏輯上,提供簡單并且統(tǒng)一的應用程序接口。這一層負責管理應用程序應用
36、程序的行為和狀態(tài),來響應狀態(tài)的請求和改變狀態(tài)的指令。View層:從Model層和Controler層獲取數(shù)據(jù),并按照某種方式顯示給用戶。Controller層的功能是捕捉用戶的一些事件,并根據(jù)用戶和應用程序的狀態(tài)來決定響應的類型。Controller層的響應會同時影響到View層和Model層。,MVC中三層的關系,JSP設計模式,JSP設計模式包括兩個:(1)Model1,JSP+JavaBean設計模式(2)Model2,M
37、VC設計模式,模式一JSP+JavaBean模式,在這種模式中,JSP頁面獨自響應請求并將處理結果返回客戶,所有的數(shù)據(jù)庫操作通過JavaBean來實現(xiàn)。大量地使用這種模式,常會導致在JSP頁面中嵌入大量的Java代碼,當需要處理的商業(yè)邏輯非常復雜時,這種情況就會變得很糟糕。大量的Java代碼使得JSP頁面變得非常臃腫。前端的頁面設計人員稍有不慎,就有可能破壞關系到商業(yè)邏輯的代碼。這種情況在大型項目中經常出現(xiàn),造成了代碼開發(fā)和維護
38、的困難,同時會導致項目管理的困難。因此這種模式只適用于中小規(guī)模的項目。,模式二MVC模式,“MVC”模式即是:“Model-View-Controller”模式。在這種模式中,通過JSP技術來表現(xiàn)頁面,通過Servlet技術來完成大量的事務處理工作,實現(xiàn)用戶的商業(yè)邏輯。在這種模式中,Servlet用來處理請求的事務,充當了控制器(Controller即“C”)的角色,Servlet負責響應客戶對業(yè)務邏輯的請求并根據(jù)用戶的請求行為,決
39、定將哪個JSP頁面發(fā)送給客戶。JSP頁面處于表現(xiàn)層,也就是視圖(View即“V”)的角色。JavaBean則負責數(shù)據(jù)的處理,也就是模型(Model即“M”)的角色,模式二MVC模式,MVC在JSP中的實現(xiàn)模型,目前有兩種實現(xiàn)模型:(1)基于Bean的MVC模型。(2)基于Stucts的MVC模型。,基于Bean的MVC模型,Bean可以利用JavaBean實現(xiàn),也可以利用EJB來實現(xiàn),分別構成的系統(tǒng)是:JavaBean(M)+JS
40、P(V)+ServletEJB(M)+JSP(V)+Servlet(C)實現(xiàn)。,MVC模型案例,用戶首先請求頁面login.html,login.html會要求用戶輸入用戶名和密碼。輸入的用戶名和密碼會POST到validate.jsp,validate.jsp使用bean: mypackage.validate,來驗證用戶名和密碼是否正確。如果驗證沒有通過,則顯示error.jsp頁面,顯示錯誤信息。如果驗證通過,則轉到servl
41、et: mypackage.forky。mypackage.forky根據(jù)用戶名轉到不同的頁面。如果用戶名為teacher,則轉到teacher.jsp;否則轉到student.jsp文件。,目錄結構,基于Struts的MVC模型,Struts是Apache組織的一個項目,像其他的Apache組織的項目一樣,它也是開放源碼項目。Struts是一個比較好的MVC框架提供了對開發(fā)MVC系統(tǒng)的底層支持,它采用的主要技術是Servlet,J
42、SP和custom tag library。,基于Struts的MVC模型,Struts 是一組相互協(xié)作的類、Servlet 和 JSP 標記,它們組成一個可重用的MVC設計。這個定義表示Struts是一個框架,而不是一個庫,但Struts也包含了豐富的標記庫和獨立于該框架工作的實用程序類。Struts的基本結構如圖所示。,小結,本章介紹組件開發(fā)技術。簡要介紹組件的基本概念JavaBean的編寫以及調用方法JavaBean的屬性
43、介紹常用的外部組件:發(fā)送Email組件文件上傳圖形組件。介紹JSP標記庫的編寫以及使用介紹Java設計模式以及JSP設計模式。,本章習題,6-1 什么是組件?使用組件有什么優(yōu)點?6-2 編寫JavaBean的時候,要注意哪些?6-3 使用Email組件發(fā)送Email。(上機完成)6-4 使用上傳組件編寫照片上傳程序。(上機完成)6-5 編寫標記庫顯示系統(tǒng)時間。(上機完成,提示:修改案例6-3實現(xiàn))6-6 簡述常用的面
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- web程序設計_第6章__web數(shù)據(jù)庫程序設計
- c語言程序設計第6章課件-
- 《visual c#程序設計教程與上機指導》第6章windows程序設計
- 第4章 程序設計.PDF
- 第4章 程序設計.PDF
- c語言程序設計ppt-第2版-第7章-指針程序設計
- 第4章arm程序設計基礎
- c語言程序設計第8章
- c語言程序設計ppt課件_第2章_簡單程序設計-
- Java程序設計 6章_ppt.txt
- 第3章java語言程序設計基礎
- Java程序設計 6章_ppt.txt
- 第7章 jsp與javabean
- java程序設計決賽試題(第6屆)
- 第5章-數(shù)論中的程序設計
- 第02章c語言程序設計基礎
- 《高級語言程序設計》第14章在線測試
- java程序設計基礎第2章陳國君
- web_《web高級程序設計教程》第2章__web程序設計的基礎
- 第10章面向對象程序設計語言
評論
0/150
提交評論