【文檔資料】【精品課件】 精品課件-java語(yǔ)言程序設(shè)計(jì)(第三版,清華)_第1頁(yè)
【文檔資料】【精品課件】 精品課件-java語(yǔ)言程序設(shè)計(jì)(第三版,清華)_第2頁(yè)
【文檔資料】【精品課件】 精品課件-java語(yǔ)言程序設(shè)計(jì)(第三版,清華)_第3頁(yè)
【文檔資料】【精品課件】 精品課件-java語(yǔ)言程序設(shè)計(jì)(第三版,清華)_第4頁(yè)
【文檔資料】【精品課件】 精品課件-java語(yǔ)言程序設(shè)計(jì)(第三版,清華)_第5頁(yè)
已閱讀5頁(yè),還剩153頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第十二章 JSP的JavaBean實(shí)現(xiàn)JAVA語(yǔ)言程序設(shè)計(jì)1Website to reference: :/ :/ 參考教材:?JSP實(shí)用教程? 清華大學(xué)出版社,耿詳義,張躍平編著2目錄12.1 JSP簡(jiǎn)介12.2 JSP與JavaBean12.3 JSP標(biāo)簽庫(kù)12.4 JSP與Servlet12.5 本章小結(jié)312.1 JSP簡(jiǎn)介servlet和JSPJavaServer Page已成為開發(fā)電子商務(wù)等動(dòng)態(tài)網(wǎng)站的首選技術(shù),它們都是運(yùn)行在效勞器上的Java程序servletServlet 類使Java程序員能開發(fā)基于B/S構(gòu)架的Web應(yīng)用程序,使用servlet類使HTTP請(qǐng)求和響應(yīng)封裝在標(biāo)準(zhǔn)的

2、Java類中,從而實(shí)現(xiàn)各種web應(yīng)用方案Servlet語(yǔ)言將程序的邏輯控制代碼與輸出網(wǎng)頁(yè)文檔內(nèi)容混合著一起,使得控制網(wǎng)頁(yè)文檔內(nèi)容的顯示和布局較困難。使用print語(yǔ)句生成HTML并不容易,非Java開發(fā)人員很難處理這些HTML412.1.1 什么是JSP程序JSPJSP是建立在Servlet模型之上的表達(dá)層技術(shù),是對(duì)Servlet API的一種擴(kuò)展。同Servlet一樣,JSP頁(yè)是效勞器端的技術(shù)。在后臺(tái)被自動(dòng)轉(zhuǎn)換成servlet,Servlet在編譯后載入到效勞器內(nèi)存中,初始化并被執(zhí)行。JSP彌補(bǔ)了Servlet的缺陷,對(duì)網(wǎng)頁(yè)中的動(dòng)態(tài)內(nèi)容采用Java代碼,而對(duì)固定不變的HTML靜態(tài)內(nèi)容采用普通

3、的HTML頁(yè)面方式編寫。從而,使用靜態(tài)頁(yè)面和動(dòng)態(tài)頁(yè)面編寫得以別離。JSP運(yùn)行在Web效勞器上,被Web效勞器轉(zhuǎn)換成Servlet后運(yùn)行靜態(tài)內(nèi)容的輸出都采用標(biāo)準(zhǔn)的HTML,而java語(yǔ)言編寫頁(yè)面中生成動(dòng)態(tài)內(nèi)容的代碼包括在特殊的標(biāo)簽中 。JSP頁(yè)面僅在修改后的第一次被訪問(wèn)時(shí),才會(huì)被轉(zhuǎn)換成servlet并進(jìn)行編譯,創(chuàng)立JSP唯一的一個(gè)一實(shí)例,并調(diào)用_jspInit完成初始化,之后每個(gè)用戶請(qǐng)求都會(huì)創(chuàng)立一個(gè)調(diào)用JSP實(shí)例的_jspService方法的線程。因而多個(gè)并發(fā)請(qǐng)求會(huì)導(dǎo)致多個(gè)線程同時(shí)調(diào)用_jspServiceTomcat中,默認(rèn)目錄下的JSP文件被轉(zhuǎn)換生成的servlet文件及編譯后生成的clas

4、s文件被放在install_dir/work/ Catalina/ localhost/ _/org/apache/jsp目錄下JSP簡(jiǎn)介5Web瀏覽器JSPServletHTML客戶請(qǐng)求生成HTMLJSP運(yùn)行流暢6JSP與Servlet的轉(zhuǎn)換welcome.jspwelcome_jsp.javaJSP 轉(zhuǎn)為Servlet7根本的JSP結(jié)構(gòu) /JSP標(biāo)簽 /HTML標(biāo)簽8 First Example11 in JSP這是一個(gè)簡(jiǎn)單的JSP頁(yè)面 % for(i=1;i 1到100的連續(xù)和是:JSP TabHTML TabVariable DeclarationExpressionJava prog

5、ram slice9JSP文件在效勞器的部署Tomcat中JSP的默認(rèn)目錄是install_dir/webapps/ROOT,只要把編寫好的JSP文件直接放在此目錄下即可例如install_dir/webapps/ROOT/SomeDirectory/SomeFile.jsp那么對(duì)應(yīng)的URL為 :/host:port/SomeDirectory/SomeFile.jsp例題訪問(wèn)路徑: :/localhost:8080/Example1-1.jspJSP簡(jiǎn)介10注意:如果需要建立新的web效勞目錄,并讓用戶使用虛擬目錄訪問(wèn),那么需修改conf/server.xml修改方法:在前參加假設(shè)新建目錄為

6、F:/testjsp 訪問(wèn): :/localhost:8080/test/*.jsp1112.1.1 什么是JSP程序 JSP頁(yè)面被請(qǐng)求后的操作JSP簡(jiǎn)介 將JSP頁(yè)面轉(zhuǎn)換為servlet編譯servlet將servlet載入到服務(wù)器內(nèi)存中調(diào)用jspInit調(diào)用_jspService頁(yè)面初次創(chuàng)建請(qǐng)求1有有有有有請(qǐng)求2無(wú)無(wú)無(wú)無(wú)有服務(wù)器重啟后請(qǐng)求3無(wú)無(wú)有有有請(qǐng)求4無(wú)無(wú)無(wú)無(wú)有頁(yè)面修改后請(qǐng)求5有有有有有請(qǐng)求6無(wú)無(wú)無(wú)無(wú)有1212.1.2 JSP語(yǔ)法概述 JSP頁(yè)面元素腳本元素scripting elements使你可以向JSP文件產(chǎn)生的servlet文件中插入代碼腳本元素由三局部組成:變量和方法聲明、表

7、達(dá)式、程序片腳本代碼注釋語(yǔ)句1312.1.2 JSP語(yǔ)法概述 JSP指令元素JSP指令不直接產(chǎn)生輸出代碼,它用來(lái)向JSP容器發(fā)出一些指令來(lái)控制JSP頁(yè)面的特性。如:發(fā)送消息到容器、設(shè)置頁(yè)面屬性、聲明要導(dǎo)入到類、定義輸出類型等JSP中共有三個(gè)指令page指令:用于定義include指令:用于在JSP頁(yè)面中包含另外一個(gè)文件的內(nèi)容taglib指令:使用戶定義自己的標(biāo)簽注意:這里的指令和屬性值并不是自己定義的,而是JSP標(biāo)準(zhǔn)中定義的屬性的標(biāo)準(zhǔn),在程序設(shè)計(jì)中根據(jù)不同的需求選擇不同的指令和屬性,1412.1.2 JSP語(yǔ)法概述除了標(biāo)準(zhǔn)的HTML以外,JSP主要包括三類組件腳本元素scripting ele

8、ments使你可以向JSP文件產(chǎn)生的servlet文件中插入代碼腳本元素由三局部組成:表達(dá)式、程序片腳本代碼、變量和方法聲明指令標(biāo)簽directives用來(lái)定義整個(gè)JSP頁(yè)面的屬性和屬性的值將影響由JSP頁(yè)產(chǎn)生的servlet的總體結(jié)構(gòu)動(dòng)作標(biāo)簽actions影響JSP運(yùn)行時(shí)的功能JSP簡(jiǎn)介151、腳本元素向JSP文件產(chǎn)生的servlet文件中插入代碼聲明語(yǔ)句:用于聲明一個(gè)或多個(gè)變量和方法%! public String f(int i) if (iJSP簡(jiǎn)介12.1.2 JSP語(yǔ)法概述 腳本元素16聲明的內(nèi)容包括變量和方法,將被插入到生成servlet的類體中,在_jspService方法之外

9、,成為類變量和類方法,直到效勞器關(guān)閉才被釋放聲明的變量整個(gè)JSP頁(yè)面有效,當(dāng)JSP引擎將JSP頁(yè)面轉(zhuǎn)譯程Java文件時(shí),將這些變量做為類的成員變量,當(dāng)有多個(gè)用戶請(qǐng)求JSP頁(yè)面時(shí)都會(huì)影響其它用戶Example2_2.jsp當(dāng)多個(gè)客戶請(qǐng)求一個(gè)JSP頁(yè)面時(shí),多個(gè)線程將共享這些變量和方法,因而任何一個(gè)用戶對(duì)這些變量操作的結(jié)果,都會(huì)影響到其他用戶Example2_4.jsp17Variable, method and class declarationVariable declaration: Member variable and available inside JSP pageMemory spa

10、ce for member variable is kept before server is closedJSP engine starts a thread for each clientAny change in member variable can affect each otherExample2_2.jsp for member variable18 You are the customer to visit our website.19Method declaration Local variable: Available inside methodExample2_3.jsp

11、20 You are the customer to visit our website.21Class declarationClass is available inside JSP pageObject can be created in the java program slice22Class declaration:Available inside JSP pageObject created by the class can be instanced inside JSPArea is: 2312.1.2 JSP語(yǔ)法概述 腳本元素表達(dá)式 %和=之間不能有空格。expression

12、必須能求值,效勞器計(jì)算出值后以字符串形式發(fā)送到客戶端顯示程序片JSP的代碼局部,該局部幾乎可以使用Java的任何語(yǔ)法一個(gè)JSP頁(yè)面可以有許多,它們將被插入到生成的servlet文件的_jspService方法中每次客戶端請(qǐng)求都會(huì)新開一個(gè)線程,調(diào)用servlet的service方法,service方法再調(diào)用_jspService方法24 GOODMORNING GOODAFTERNOON2512.1.2 JSP語(yǔ)法概述 JSP指令標(biāo)簽2、指令標(biāo)簽:JSP指令不直接產(chǎn)生輸出代碼,它用來(lái)向JSP容器發(fā)出一些指令來(lái)控制JSP頁(yè)面的特性。如:發(fā)送消息到容器、設(shè)置頁(yè)面屬性、聲明要導(dǎo)入到類、定義輸出類型等J

13、SP中共有三個(gè)指令page指令:用于定義include指令:用于在JSP頁(yè)面中包含另外一個(gè)文件的內(nèi)容taglib指令:使用戶定義自己的標(biāo)簽注意:這里的指令和屬性值并不是自己定義的,而是JSP標(biāo)準(zhǔn)中定義的屬性的標(biāo)準(zhǔn),在程序設(shè)計(jì)中根據(jù)不同的需求選擇不同的指令和屬性,26page指令定義整個(gè)JSP頁(yè)面的屬性和屬性值可放在文檔內(nèi)的任何位置,該指令對(duì)整個(gè)頁(yè)面有效可以定義一個(gè)或多個(gè)大小寫敏感的屬性,包括import、contentType、isThreadSafe、Session、buffer等import屬性為JSP頁(yè)面引入Java核心包中的類,這樣就可以在腳本局部使用這些類,如: 可以為import屬

14、性指定多個(gè)值,這些值用逗號(hào)分割,這樣就可以引入假設(shè)干個(gè)包或類也可使用多個(gè)page指令來(lái)指定屬性及其值,如: JSP頁(yè)面默認(rèn)import屬性已經(jīng)有如下的值:java.lang.*, javax.servlet.*,.*,.*“除import屬性外,Page指令的其它屬性只能指定一個(gè)值Example2_9.jspJSP簡(jiǎn)介12.1.2 JSP語(yǔ)法概述 指令標(biāo)簽/page指令27contentType屬性定義JSP頁(yè)面相應(yīng)的MIMEMultipurpose Internet Mail Extension,多用途Internet 郵件擴(kuò)展類型和JSP頁(yè)面字符編碼其屬性使用以下兩種格式之一 或者例如其屬

15、性默認(rèn)值為 常用: JSP簡(jiǎn)介12.1.2 JSP語(yǔ)法概述 指令標(biāo)簽/page指令28Language 屬性Define script using by JSP- extends 屬性用于聲明所繼承的類29isThreadSafe屬性用來(lái)設(shè)置JSP頁(yè)面是否可多線程訪問(wèn)設(shè)為true時(shí),JSP頁(yè)面能同時(shí)響應(yīng)多個(gè)客戶的請(qǐng)求設(shè)為false時(shí),同一時(shí)刻只能處理一個(gè)客戶的請(qǐng)求,其它客戶須等待其默認(rèn)值為truesession屬性表示當(dāng)前JSP頁(yè)面是否參與HTTP會(huì)話用于設(shè)置是否需要使用內(nèi)置的session對(duì)象設(shè)為true時(shí),可以使用內(nèi)置的類型的一個(gè)名為session的對(duì)象設(shè)為false時(shí),那么該對(duì)象不被創(chuàng)立

16、默認(rèn)值為trueJSP簡(jiǎn)介12.1.2 JSP語(yǔ)法概述 指令標(biāo)簽/page指令30isELIgnored屬性JSP2.0 的特點(diǎn),支持表達(dá)語(yǔ)言屬性值為true時(shí),JSP頁(yè)面的EL將被無(wú)視,false時(shí),EL將被正常顯示31buffer屬性內(nèi)置輸出對(duì)象out負(fù)責(zé)將效勞器的某些信息或運(yùn)行結(jié)果發(fā)送到客戶端,buffer屬性用來(lái)指定out設(shè)置的緩沖的大小,如果設(shè)置為none,那么不使用緩沖區(qū)默認(rèn)值是8kb例如 autoflush屬性控制out的緩沖區(qū)在裝滿時(shí)的處理,默認(rèn)為true設(shè)為true時(shí),裝滿時(shí)那么自動(dòng)去除緩沖區(qū)設(shè)為false時(shí),裝滿后那么會(huì)出現(xiàn)異常buffer的值是none時(shí)將autoflus

17、h設(shè)為false是不合法的JSP簡(jiǎn)介12.1.2 JSP語(yǔ)法概述 指令標(biāo)簽/page指令32info屬性指定JSP頁(yè)面信息,定義一個(gè)字符串,并可以通過(guò)getServletInfo方法可從servlet中檢索到所定義的信息格式為 isErrorPage屬性指明當(dāng)前頁(yè)是否能充當(dāng)其它JSP頁(yè)面的錯(cuò)誤處理頁(yè)。采用以下兩種格式之一或者 。如果為true表示該頁(yè)其它JSP頁(yè)面可以使用此頁(yè)來(lái)處理異常errorPage屬性和isErrorPage配合使用。errorPage屬性設(shè)置一個(gè)處理異常錯(cuò)誤的JSP的URL,如:這個(gè)URL指定的錯(cuò)誤頁(yè)的isErrorPage屬性必須被設(shè)為true方可使用JSP簡(jiǎn)介12.

18、1.2 JSP語(yǔ)法概述 指令標(biāo)簽/page指令33include指令與page指令不同,該指令應(yīng)該放在你想要將外部文件插入的位置,它可以將文件整體插入到該處其格式為 其作用是在JSP頁(yè)面出現(xiàn)該指令的位置處?kù)o態(tài)插入一個(gè)文件。插入文件將與JSP頁(yè)面合成一個(gè)新的JSP頁(yè)面,然后JSP引擎將新的JSP頁(yè)面轉(zhuǎn)譯成Java類文件。Example2_10.jsp Example_comp.jsp12.1.2 JSP語(yǔ)法概述 指令標(biāo)簽/include指令JSP簡(jiǎn)介34我是firstExample.jsp頁(yè)面35 This is test for include tab! Successful!36!Examp

19、le_comp.jsp,包含JSP文件please input a integer, then click button37!Computer.jsp % String a=request.getParameter(ok); if(a=null) a=1; try double number=Integer.parseInt(a); out.print(+Math.sqrt(number); catch(NumberFormatException e) out.print(+Please input number); %注:合并后見Example_comp_1.jsp38taglib指令JSP

20、1.1標(biāo)準(zhǔn)中新增的指定一個(gè)標(biāo)記庫(kù),用于擴(kuò)充標(biāo)準(zhǔn)的JSP標(biāo)記集taglib通常定義在tag標(biāo)簽庫(kù)中,這種標(biāo)簽庫(kù)存放著自己定義的tag標(biāo)簽。自定義tag標(biāo)簽主要用于操作隱藏對(duì)象、處理html提交表單、訪問(wèn)數(shù)據(jù)庫(kù)或其它企業(yè)級(jí)的效勞完成三個(gè)任務(wù)首先,它通知JSP效勞器,頁(yè)面使用一個(gè)標(biāo)記庫(kù)其次,它指定包含標(biāo)記庫(kù)標(biāo)志符的特殊jar文件的位置最后,它指定一個(gè)用于唯一區(qū)分這些新標(biāo)記的標(biāo)記前綴格式為:uri屬性:一個(gè)引用標(biāo)記庫(kù)描述符文件后綴名為TLD:Tag Library Descriptor的絕對(duì)或相對(duì)URLprefix屬性:指定一個(gè)將要在TLD文件定義的標(biāo)記名前面使用的前綴如果TLD文件定義了一個(gè)名為ta

21、g1的標(biāo)記,并且prefix屬性的值設(shè)為test,那么實(shí)際的標(biāo)記名將為test:tag112.1.2 JSP語(yǔ)法概述 指令標(biāo)簽/taglib指令JSP簡(jiǎn)介393、動(dòng)作標(biāo)簽一種特殊的標(biāo)簽,影響JSP運(yùn)行時(shí)的功能格式為action_name代表動(dòng)作名稱attribute代表屬性名稱value代表屬性值分為兩類Resource動(dòng)作JavaBean動(dòng)作JSP簡(jiǎn)介12.1.2 JSP語(yǔ)法概述 動(dòng)作標(biāo)簽40 Resource動(dòng)作include動(dòng)作標(biāo)簽告訴JSP頁(yè)面動(dòng)態(tài)包含一個(gè)文件,即JSP頁(yè)面運(yùn)行時(shí)才將文件參加與include指令標(biāo)簽不同,例如: 不把JSP頁(yè)面與include所包含文件進(jìn)行合并,而是在J

22、SP在運(yùn)行時(shí)即Java字節(jié)碼文件加載才包含進(jìn)來(lái)。如果包含的是普通的文本文件,就將文件的內(nèi)容發(fā)送到客戶端,由客戶端負(fù)責(zé)顯示如果包含的是JSP文件,JSP引擎就執(zhí)行這個(gè)文件,然后將執(zhí)行的結(jié)果發(fā)送到客戶端顯示注意:文本文件需同當(dāng)前JSP頁(yè)面在同一Web效勞目錄中Example2_16.jspJSP簡(jiǎn)介12.1.2 JSP語(yǔ)法概述 動(dòng)作標(biāo)簽/Resource動(dòng)作41Param標(biāo)簽以“名-值對(duì)應(yīng)形式為其它標(biāo)簽提供附件信息,可和jsp:include, jsp:forword, jsp:plugin標(biāo)簽一起使用1當(dāng)同jsp:include使用時(shí)結(jié)合param指令,將param標(biāo)簽中的值傳遞到include

23、指令加載的文件中去pass value to included file格式為: 被包含的文件通過(guò)JSP的內(nèi)置對(duì)象request調(diào)用getParameter方法獲得參數(shù)值。 request.getParameter(“name);parameter.jsp, param_sum.jsp42 Load: 43 % String str=request.getParameter(computer); int n=Integer.parseInt(str); int sum=0; for(int i=1; i the sum from 1 to is: 內(nèi)置對(duì)象request調(diào)用getParamet

24、er方法獲得參數(shù)computer的值44 Load: jsp:param name=computer value=/ 45 % String str=request.getParameter(computer); int n=Integer.parseInt(str); int sum=0; for(int i=1; i the sum from 1 to is: 46forward動(dòng)作標(biāo)簽告訴JSP頁(yè)面從該指令處停止當(dāng)前頁(yè)面的繼續(xù)執(zhí)行,而轉(zhuǎn)向其他的一個(gè)頁(yè)面,當(dāng)前頁(yè)面后邊的內(nèi)容將不被執(zhí)行,例如: 該標(biāo)簽也可結(jié)合param指令,向要轉(zhuǎn)到的頁(yè)面?zhèn)魉托畔?,格式同include標(biāo)簽Example2_1

25、2_1.jspJSP簡(jiǎn)介12.1.2 JSP語(yǔ)法概述 動(dòng)作標(biāo)簽/Resource動(dòng)作47plugin動(dòng)作標(biāo)簽當(dāng)瀏覽器不支持Java小應(yīng)用程序時(shí),可以通過(guò)plugin動(dòng)作標(biāo)簽指示JSP頁(yè)面加載Java plugin。該插件由用戶負(fù)責(zé)下載 prompt message提示信息,用來(lái)提示用戶的瀏覽器是否支持插件下載 12.1.2 JSP語(yǔ)法概述 動(dòng)作標(biāo)簽/Resource動(dòng)作JSP簡(jiǎn)介48JavaBean動(dòng)作(后面講)useBean動(dòng)作標(biāo)簽格式為或者效勞器將加載該bean類的一個(gè)對(duì)象setProperty動(dòng)作標(biāo)簽設(shè)置bean的屬性getProperty動(dòng)作標(biāo)簽獲取bean屬性的值并輸出12.1.2

26、JSP語(yǔ)法概述 動(dòng)作標(biāo)簽/JavaBean動(dòng)作JSP簡(jiǎn)介4912.1.3 JSP內(nèi)置對(duì)象JSP的內(nèi)置對(duì)象在JSP頁(yè)面的腳本元素中,有些不用聲明就可以使用的對(duì)象包括out、request、response、session、application等out對(duì)象是類的實(shí)例,JspWriter包含的方法大多數(shù)與類一樣這個(gè)輸出流對(duì)象用來(lái)向客戶端輸出數(shù)據(jù),其可調(diào)用的方法如下表JSP簡(jiǎn)介5012.1.3 JSP內(nèi)置對(duì)象(續(xù)) out對(duì)象可使用的方法名稱解釋print(Boolean b)輸出一個(gè)布爾值print(char c)輸出一個(gè)字符print(double d)輸出一個(gè)雙精度的浮點(diǎn)數(shù)print(floa

27、t f)輸出一個(gè)單精度的浮點(diǎn)數(shù)print(long l)輸出一個(gè)長(zhǎng)整型數(shù)據(jù)print(String s)輸出一個(gè)字符串newLine()輸出一個(gè)換行符flush()輸出緩沖區(qū)里的內(nèi)容close()關(guān)閉流JSP簡(jiǎn)介51request對(duì)象是的實(shí)例客戶每次請(qǐng)求頁(yè)面時(shí),JSP引擎創(chuàng)立一個(gè)request對(duì)象代表該請(qǐng)求封裝了用戶提交的信息,這些信息包括HTTP請(qǐng)求的請(qǐng)求行HTTP頭信息體調(diào)用相應(yīng)的方法可以獲取封裝的信息,最常用的方法是request.getParameter(param_name)12.1.3 JSP內(nèi)置對(duì)象(續(xù)) request對(duì)象JSP簡(jiǎn)介5212.1.3 JSP內(nèi)置對(duì)象(續(xù)) req

28、uest對(duì)象的常用方法名稱解釋getProtocal()獲取客戶向服務(wù)器提交信息使用的通訊協(xié)議getServletPath()獲取JSP文件的目錄getContentLength()獲取提交信息的長(zhǎng)度getMethod()獲取客戶提交信息的方式,例如post或getgetHeaderNames()獲取頭名字的一個(gè)枚舉getHeader(String s)獲取HTTP頭文件中由s指定的屬性的值,例如“content-type”,“cookie”等getRemoteHost()獲取客戶機(jī)的名稱getRemoteAddr()獲取客戶機(jī)的IP地址getServerName()獲取服務(wù)器的名稱getSe

29、rverPort()獲取服務(wù)器的端口號(hào)getParameterNames()獲取客戶提交的信息體部分中所有參數(shù)的名字getParameter(String_name)獲取指定參數(shù)名字的參數(shù)值JSP簡(jiǎn)介53Language propertyimport propertyImport java classescontentType propertyResponse type and code typeDefault: “text/html; charset=ISO-8859-1session propertyDefault: truebuffer property outFlush propert

30、yDefault: 8kb54Request 根本操作Client submit information through HTML formFORM method=get or post action=“destination page Request package the information submitted by clientRequest also can be used to get information submitted request.getParameter(“stName);Exmaple: put_post555657 response對(duì)象的實(shí)例與request對(duì)

31、象相對(duì)應(yīng),我們可以用response對(duì)象對(duì)客戶的請(qǐng)求做出動(dòng)態(tài)響應(yīng),向客戶端發(fā)送數(shù)據(jù)。類似于HTTP請(qǐng)求,HTTP響應(yīng)也由三個(gè)根本局部組成狀態(tài)行:包括使用的協(xié)議以及狀態(tài)代碼,表示請(qǐng)求是否成功頭:包含關(guān)于效勞器和返回的文檔的消息,例如效勞器名稱和文檔類型等信息體使用這個(gè)對(duì)象的一些方法可以完成如下任務(wù)動(dòng)態(tài)設(shè)置contentType屬性頁(yè)面重定向設(shè)置返回狀態(tài)碼等JSP簡(jiǎn)介12.1.3 JSP內(nèi)置對(duì)象(續(xù)) response對(duì)象58JSP簡(jiǎn)介12.1.3 JSP內(nèi)置對(duì)象(續(xù)) resnponse對(duì)象的常用方法名稱解釋setStatus(int sc)設(shè)置返回狀態(tài)碼setContentType(Strin

32、g type)設(shè)置被發(fā)送文檔的MIME類型setHeader(String name, String value)設(shè)置頭中指定屬性name為指定值valuesetRedirect(String location)重定向到指定URL 59ResponseDynamically change properties of contentType by using response object setContentType (String s);Value for stext/htmltext/plainapplication/x-msexcel(Excel方式翻開)application/mswo

33、rdword方式翻開Example_response2.jspview.jsp, table.txt60616263會(huì)話的概念從一個(gè)客戶翻開瀏覽器連接到效勞器的某個(gè)效勞目錄,到客戶關(guān)閉瀏覽器離開該效勞目錄稱為一個(gè)會(huì)話每個(gè)會(huì)話只對(duì)應(yīng)于一個(gè)客戶,并且可以跨多個(gè)頁(yè)面session對(duì)象的實(shí)例,對(duì)應(yīng)于會(huì)話的概念用于在使用無(wú)狀態(tài)連接協(xié)議如HTTP的情況下跟蹤關(guān)于某個(gè)客戶的信息,對(duì)識(shí)別客戶是非常重要的在客戶首次訪問(wèn)某效勞目錄中的任何一個(gè)JSP頁(yè)面時(shí)創(chuàng)立,并且具有一個(gè)獨(dú)一無(wú)二的Id號(hào),直到客戶關(guān)閉瀏覽器或這個(gè)session對(duì)象到達(dá)了最大生存時(shí)間,效勞器端該客戶的session對(duì)象才被取消調(diào)用相應(yīng)的方法可以存儲(chǔ)

34、客戶在訪問(wèn)各個(gè)頁(yè)面期間提交的各種信息,比方姓名、編號(hào)等JSP簡(jiǎn)介12.1.3 JSP內(nèi)置對(duì)象(續(xù)) session對(duì)象64JSP簡(jiǎn)介12.1.3 JSP內(nèi)置對(duì)象(續(xù)) session對(duì)象的常用方法名稱解釋int getMaxInactiveInterval()返回會(huì)話過(guò)期前需要經(jīng)過(guò)的秒數(shù)void setMaxInactiveInterval(int interval)設(shè)置某個(gè)會(huì)話的生命期long getCreationTime()返回創(chuàng)建會(huì)話的時(shí)間long getLastAccessedTime()返回上次使用此會(huì)話的時(shí)間void invalidate()使得session對(duì)象無(wú)效boolea

35、n isNew()判斷是否是個(gè)新會(huì)話String getId()返回識(shí)別客戶的獨(dú)一無(wú)二的字符串Enumeration getIds()返回一個(gè)包含當(dāng)前所有會(huì)話Id的枚舉值void setAttribute(String key, Object value)在session對(duì)象中添加obj,并指定索引關(guān)鍵字為keyObject getAttribute(String name)從session對(duì)象獲取關(guān)鍵字為key的對(duì)象void removeAttribute(String name)從session中刪除指定索引關(guān)鍵字的對(duì)象Enumeration getAttributeName( )獲取se

36、ssion對(duì)象存儲(chǔ)的所有鍵名65Example_sessionA.jspFirst1.jspaccount.jsp66application對(duì)象的實(shí)例。比session對(duì)象的生存時(shí)期更長(zhǎng)。效勞器啟動(dòng)后,就產(chǎn)生了這個(gè)application對(duì)象,直到效勞器關(guān)閉,該對(duì)象才被取消所有客戶共享這個(gè)內(nèi)置的application對(duì)象,所以任何客戶對(duì)該對(duì)象中存儲(chǔ)的數(shù)據(jù)的改變都會(huì)影響到其他客戶,因此,在某些情況下,對(duì)該對(duì)象的操作需要同步處理 12.1.3 JSP內(nèi)置對(duì)象(續(xù)) application對(duì)象JSP簡(jiǎn)介6712.1.3 JSP內(nèi)置對(duì)象(續(xù)) application對(duì)象的常用方法名稱解釋void set

37、Attribute(String key, Object obj)將obj對(duì)象添加到application對(duì)象中,并為obj指定一個(gè)索引關(guān)鍵字key。Object getAttribute(String key)獲取application對(duì)象中指定關(guān)鍵字的對(duì)象Enumeration getAttributeNames( )返回application對(duì)象的所有索引關(guān)鍵字void removeAttribute(String key)刪除指定索引的對(duì)象JSP簡(jiǎn)介6812.1.4 一個(gè)簡(jiǎn)單的JSP程序在表單中輸入一個(gè)自然數(shù),計(jì)算從1到該數(shù)的累加和%! int continuousSum(int n)

38、 int sum=0; for(int i=1;iJSP簡(jiǎn)介6912.1.4 一個(gè)簡(jiǎn)單的JSP程序(續(xù)) 計(jì)算連續(xù)和 請(qǐng)輸入一個(gè)自然數(shù) input type=text name=number value= 的連續(xù)和是JSP簡(jiǎn)介7012.1.4 一個(gè)簡(jiǎn)單的JSP程序(續(xù)) 例12_1運(yùn)行結(jié)果JSP簡(jiǎn)介71練習(xí)將12_1拆分成兩個(gè)jsp文件,其中信息提交放在req.jsp中,計(jì)算及結(jié)果顯示放在count.jsp中7212.2 JSP與JavaBean指令標(biāo)簽和動(dòng)作標(biāo)簽都可以嵌入代碼。前者實(shí)際上是將代碼插入行內(nèi),后者是將另一個(gè)頁(yè)面的輸出插入原來(lái)的頁(yè)面這些方法無(wú)助于別離表示邏輯和業(yè)務(wù)邏輯,它們都造成了

39、顯著的可伸縮性問(wèn)題,不利于開發(fā)人員分工合作JavaBean解決了這個(gè)問(wèn)題,它將一系列相關(guān)的屬性和方法組合在一個(gè)Java類中,構(gòu)成了一個(gè)組件在JSP程序中,只要使用JavaBean動(dòng)作標(biāo)簽調(diào)用該組件就可以了7312.2.1 JavaBean簡(jiǎn)介JavaBean其實(shí)就是Java類必須使用一組相當(dāng)簡(jiǎn)單而又標(biāo)準(zhǔn)的設(shè)計(jì)和命名約定,因而調(diào)用它們的應(yīng)用程序無(wú)須理解其內(nèi)部工作原理,就可以很容易的使用JavaBean的方法JavaBean類的一個(gè)實(shí)例叫做一個(gè)bean通常我們將JavaBean文件取名為XxxBeanJSP與JavaBean7412.2.1 JavaBean簡(jiǎn)介(續(xù)) JavaBean的設(shè)計(jì)要求對(duì)

40、于JSP中使用的JavaBean,有三個(gè)設(shè)計(jì)要求必須擁有一個(gè)默認(rèn)無(wú)參數(shù)的構(gòu)造函數(shù)如果未聲明任何構(gòu)造函數(shù),默認(rèn)的構(gòu)造函數(shù)會(huì)被自動(dòng)創(chuàng)立JSP元素創(chuàng)立bean時(shí),會(huì)調(diào)用默認(rèn)構(gòu)造函數(shù)類中不應(yīng)該有公開的屬性對(duì)于類內(nèi)的屬性,通常應(yīng)該提供設(shè)置和獲取其值的方法public void setXxx(Objec_type value)方法進(jìn)行設(shè)置public Object_type getXxx()方法進(jìn)行獲取,如果該屬性是布爾類型的,允許使用public boolean isXxx()獲取屬性值如果某個(gè)屬性只有g(shù)etXxx或isXxx方法 ,叫做只讀屬性JSP與JavaBean75可以使用JSP腳本元素訪問(wèn)類的

41、任意方法訪問(wèn)bean的標(biāo)準(zhǔn)JSP動(dòng)作只能使用那些遵循getXxx/setXxx或isXxx/setXxx命名約定的方法12.2.1 JavaBean簡(jiǎn)介(續(xù))JSP對(duì)JavaBean的訪問(wèn)JSP與JavaBean76設(shè)計(jì)一個(gè)描述員工信息的JavaBean類。包括編號(hào)、姓名、性別、工資、職務(wù)屬性package myBeans;public class EmployeeBean private int id=0,salary=0;private String name=none,occupation=none;private boolean male=true;public int getId()

42、 return id; public void setId(int id) this.id=id; public String getName() return name; public void setName(String name) =name; public boolean isMale() return male;public void setMale(boolean male) this.male=male; public int getSalary() return salary; public void setSalary(int salary) this.salary=sal

43、ary;public String getOccupation() return occupation; public void setOccupation(String occupation)this.occupation=occupation;JSP與JavaBean12.2.1 JavaBean簡(jiǎn)介(續(xù))例12_277EmployeeBean類滿足成為JavaBean的條件沒有公開的實(shí)例變量沒有聲明任何顯式的構(gòu)造函數(shù),從而也就擁有了一個(gè)默認(rèn)的無(wú)參數(shù)的構(gòu)造函數(shù)它的屬性的設(shè)置和獲得都使用了標(biāo)準(zhǔn)的形式JSP與JavaBean12.2.1 JavaBean簡(jiǎn)介(續(xù)) 例12_2說(shuō)明7812.2.

44、2 在JSP程序中使用JavaBeanJavaBean類在Web應(yīng)用中的部署不能放在含有JSP文件的目錄中,而應(yīng)該放在安裝servlet的目錄中,且一定要使用包單個(gè)JavaBean類的字節(jié)碼文件的正確位置是webAppDir/WEB-INF/classes/PackageName/JSP2.0后class 文件要放到package中含有bean類的JAR文件應(yīng)該放在webAppDir/WEB-INF/lib/目錄中在JSP頁(yè)面中,可以使用三種JavaBean動(dòng)作標(biāo)簽構(gòu)建和操作JavaBean組件useBean動(dòng)作標(biāo)簽setProperty動(dòng)作標(biāo)簽getProperty動(dòng)作標(biāo)簽JSP與JavaB

45、ean79 表示建立一個(gè)bean類的對(duì)象class指定的bean類的類名id指定該實(shí)例的名字scope屬性表示bean的有效范圍,有4個(gè)可選值PageRequestSessionApplication如果已經(jīng)存在scope和id相同的實(shí)例,那么訪問(wèn)現(xiàn)存的實(shí)例JSP與JavaBean12.2.2 在JSP程序中使用JavaBean(續(xù)) 建立JavaBean80Page默認(rèn)值,有效范圍是當(dāng)前請(qǐng)求訪問(wèn)的JSP頁(yè)面表示每次請(qǐng)求訪問(wèn)JSP頁(yè)面時(shí)都會(huì)創(chuàng)立新的bean,并將其放在PageContext對(duì)象中servlet可以通過(guò)預(yù)定義變量pageContext的getAttribute方法訪問(wèn)它Reque

46、st有效范圍是當(dāng)前的請(qǐng)求將bean放在HttpServletRequest對(duì)象中,如果已經(jīng)存在,那么調(diào)用之,可通過(guò)getAttribute方法訪問(wèn)在使用jsp:include,jsp:forward,或者RequestDispatcher的include或forward方法時(shí),兩個(gè)JSP頁(yè)面,或JSP頁(yè)面和servlet將會(huì)共享該bean12.2.2 在JSP程序中使用JavaBean(續(xù)) 建立JavaBeanJSP與JavaBean81Session有效范圍是客戶的會(huì)話期間表示要將bean實(shí)例存儲(chǔ)到與當(dāng)前請(qǐng)求相關(guān)的HttpSession對(duì)象中如果這個(gè)客戶在多個(gè)頁(yè)面中相互鏈接,每個(gè)頁(yè)面都包含

47、有一個(gè)useBean標(biāo)簽,這些useBean標(biāo)簽中id的值相同,并且scope的值都是session,那么該客戶在這些頁(yè)面得到的bean是相同的一個(gè)Application表示要將bean實(shí)例存儲(chǔ)在ServletContext中,ServletContext由Web應(yīng)用中多個(gè)servlet和JSP頁(yè)面共享所有客戶共享這個(gè)bean,如果一個(gè)客戶改變這個(gè)bean的某個(gè)屬性的值,那么所有客戶的這個(gè)bean的屬性值都發(fā)生了變化這個(gè)bean直到效勞器關(guān)閉才被取消JSP與JavaBean12.2.2 在JSP程序中使用JavaBean(續(xù)) 建立JavaBean82 表示讀取bean屬性的值bean的名稱由

48、name項(xiàng)指定,與useBean標(biāo)簽的id項(xiàng)對(duì)應(yīng)property項(xiàng)指定屬性名稱該語(yǔ)法只能讀取在JavaBean類文件中有g(shù)etXxx方法的屬性也可用JSP腳本元素得到相同的結(jié)果JSP與JavaBean12.2.2 在JSP程序中使用JavaBean(續(xù)) 取得Bean的屬性值83 表示設(shè)置bean的屬性值name項(xiàng)指定bean的名稱,與useBean標(biāo)簽的id相對(duì)應(yīng)property項(xiàng)指定屬性名稱value項(xiàng)指定屬性的值該語(yǔ)法只能設(shè)置JavaBean類文件中有setXxx方法的屬性也可以用JSP腳本元素得到相同的結(jié)果JSP與JavaBean12.2.2 在JSP程序中使用JavaBean(續(xù))

49、設(shè)置Bean的屬性值84建立JSP文件Ex12_3.jsp使用上節(jié)建立的EmployeeBean使用JavaBean 初始值: 名字是: 編號(hào)是: 是否男性? 工資是:元 職務(wù)是: 修改后: 名字是: 編號(hào)是: 是否男性? 工資是:元 職務(wù)是: 12.2.2 在JSP程序中使用JavaBean(續(xù)) 例12_3JSP與JavaBean85 首先顯示初始值,修改后,顯示新值JSP與JavaBean12.2.2 在JSP程序中使用JavaBean(續(xù)) 例12_3運(yùn)行結(jié)果86通過(guò)表單使用上節(jié)建立的EmployeeBean。使用JavaBean 姓名:性別: 男 女 編號(hào): 職務(wù): 工資: 名字是:

50、 編號(hào)是: 是否男性? 工資是:元 職務(wù)是: 12.2.2 在JSP程序中使用JavaBean(續(xù)) 例12_4JSP與JavaBean8712.2.2 在JSP程序中使用JavaBean(續(xù)) 例12_4運(yùn)行結(jié)果在表單中填入信息后,將顯示填入的信息JSP與JavaBean88File manipulate in JSPServer can access file for client requirementsFile objects are used to get properties of a file (see File class)InputStream and OutputStrea

51、m are still used for input and outputInformation are kept in session objectExample Example4_8.jsp899091Database in JSPMechanisms are all same as J2SEExample faq.jsp92939412.3 JSP標(biāo)簽庫(kù)JSP標(biāo)簽庫(kù)除了使用JavaBean,JSP還可以使用定制的標(biāo)記,便于Web開發(fā)人員實(shí)現(xiàn)內(nèi)容和功能的別離相對(duì)于使用JavaBean,用戶自定義的標(biāo)簽庫(kù)有如下優(yōu)點(diǎn)beans不可以操縱JSP的內(nèi)容,但標(biāo)簽庫(kù)可以使用標(biāo)簽比bean可以用更加簡(jiǎn)單

52、的形式完成復(fù)雜的功能,JSP通過(guò)指令標(biāo)簽中的taglib指令使用標(biāo)簽庫(kù)9512.3 JSP標(biāo)簽庫(kù)(續(xù))使用自定義標(biāo)簽比使用bean要復(fù)雜一些,它需要3個(gè)局部實(shí)現(xiàn)標(biāo)簽行為的標(biāo)簽處理類將XML元素名稱映射到標(biāo)簽實(shí)現(xiàn)上的標(biāo)簽庫(kù)描述文件后綴名為tld使用標(biāo)簽的JSP程序JSP標(biāo)簽庫(kù)9612.3.1 標(biāo)簽處理類標(biāo)簽處理類是一個(gè)Java類,用來(lái)告訴系統(tǒng)在JSP程序中遇到標(biāo)簽后應(yīng)該做些什么必須實(shí)現(xiàn)接口通常通過(guò)擴(kuò)展如下兩類來(lái)實(shí)現(xiàn)JSP標(biāo)簽庫(kù)9712.3.1 標(biāo)簽處理類(續(xù))TagSupport類及其doStartTag方法如果在taglib指令標(biāo)簽中沒有屬性或標(biāo)簽體,即標(biāo)簽的引用形式為,這樣的標(biāo)簽類應(yīng)該擴(kuò)展T

53、agSupport類該類實(shí)現(xiàn)Tag接口并包含根本標(biāo)簽所需的大量標(biāo)準(zhǔn)功能。只須重載改該類的doStartTag方法,這個(gè)方法中的代碼將在頁(yè)面請(qǐng)求時(shí)期遇到標(biāo)簽頭時(shí)執(zhí)行為了產(chǎn)生輸出, doStartTag方法應(yīng)該調(diào)用pageContext類變量的getOut方法獲得JspWriter對(duì)象除此之外,調(diào)用pageContext的別的一些方法,還可以獲得和請(qǐng)求相關(guān)的別的數(shù)據(jù)結(jié)構(gòu):例如getRequest、getResponse、getServletContext、getSession如果標(biāo)簽沒有體,doStartTag方法應(yīng)該返回SKIP_BODY常量,這將告訴系統(tǒng)忽略標(biāo)簽起始和結(jié)束之間的內(nèi)容JSP標(biāo)簽庫(kù)

54、98實(shí)現(xiàn)一個(gè)標(biāo)簽處理類,當(dāng)JSP程序遇到相應(yīng)標(biāo)簽,可插入一個(gè)100以內(nèi)的隨機(jī)整數(shù)和一行文本package tags;import .*;import .*;import java.io.*;public class ExampleTag extends TagSupportpublic int doStartTag() try JspWriter out=pageContext.getOut (); out.print(int)(Math.random ()*100); out.print( My first tag test!); catch(IOException ioe) System.

55、out.println(Error in ExampleTag:+ioe); return(SKIP_BODY);12.3.1 標(biāo)簽處理類(續(xù)) 例12_5JSP標(biāo)簽庫(kù)9912.3.2 標(biāo)簽庫(kù)描述文件標(biāo)簽庫(kù)描述文件定義了標(biāo)簽處理類后,接下來(lái)就是在效勞器上為這個(gè)類命名,并將其和一個(gè)專門的XML標(biāo)簽名關(guān)聯(lián)起來(lái)。通過(guò)標(biāo)簽庫(kù)描述文件可以完成這個(gè)任務(wù)該文件包括一個(gè)XML版本聲明、一個(gè)DOCTYPE聲明、以及一個(gè)taglib容器元素重點(diǎn)是taglib容器元素中的tag元素,對(duì)于沒有屬性的標(biāo)簽,tag元素又應(yīng)該包括以下四個(gè)子元素name:該元素定義了將在JSP文件中使用的tagname;tag-class:

56、該元素給出了標(biāo)簽處理類的完整類名,包括包名;body-content:對(duì)于沒有體的標(biāo)簽應(yīng)該取值為EMPTY;description:一個(gè)簡(jiǎn)短的說(shuō)明JSP標(biāo)簽庫(kù)100 建立一個(gè)標(biāo)簽庫(kù)描述文件,將上例建立的標(biāo)簽處理類和example名關(guān)聯(lián)。將其存儲(chǔ)在Chapter12webWEB-INF tldsexample.tld 1.0 example /WEB-INF/tlds/example example tags.ExampleTag empty Insert a random integer 12.3.2 標(biāo)簽庫(kù)描述文件(續(xù)) 例12_6JSP標(biāo)簽庫(kù)10112.3.3 在JSP文件中使用標(biāo)簽已經(jīng)有

57、了標(biāo)簽處理類和標(biāo)簽庫(kù)描述文件,接下來(lái)就可以在JSP文件中使用自定義的標(biāo)簽了在首次使用標(biāo)簽之前,需要使用taglib指令標(biāo)簽uri屬性是一個(gè)引用標(biāo)簽庫(kù)描述符文件的絕對(duì)或相對(duì)URLprefix屬性指定一個(gè)將要在標(biāo)簽庫(kù)描述符文件定義的標(biāo)簽名前面使用的前綴接下來(lái)就可以使用引用標(biāo)簽了JSP標(biāo)簽庫(kù)102建立一個(gè)JSP文件,使用剛剛建立的標(biāo)簽處理類和標(biāo)簽庫(kù)描述文件使用標(biāo)簽12.3.3 在JSP文件中使用標(biāo)簽(續(xù)) 例12_7JSP標(biāo)簽庫(kù)103每次按刷新后結(jié)果都是隨機(jī)的12.3.3 在JSP文件中使用標(biāo)簽(續(xù)) 例12_7運(yùn)行結(jié)果JSP標(biāo)簽庫(kù)10412.3.4 自定義標(biāo)簽庫(kù)有時(shí)我們需要在JSP文件中指定標(biāo)簽的

58、一些屬性例如我們希望能輸出1000以內(nèi),而不是100以內(nèi)的隨機(jī)整數(shù)這時(shí)的引用形式應(yīng)該是相應(yīng)的需要修改標(biāo)簽處理類和標(biāo)簽庫(kù)描述文件JSP標(biāo)簽庫(kù)10512.3.4 自定義標(biāo)簽庫(kù)(續(xù)) 修改標(biāo)簽處理類NewExampleTag.java使用attribute1將導(dǎo)致調(diào)用標(biāo)簽處理類的setAttribute1方法。所以為了在Ex12_7中能夠指定隨機(jī)整數(shù)的范圍,我們?yōu)閷傩匀∶麨閞ange,并修改標(biāo)簽處理類ExampleTag.java為NewExampleTag.java如下public class NewExampleTag extends TagSupport protected int range

59、=100; public int doStartTag() try JspWriter out=pageContext.getOut (); out.print(int)(Math.random ()*range); out.print( Tag test with attribute! ); catch(IOException ioe) System.out.println(Error in ExampleTag:+ioe); return(SKIP_BODY); public void setRange(String range) try this.range=Integer.parseI

60、nt (range); catch(NumberFormatException nfe) this.range=100; JSP標(biāo)簽庫(kù)106此外還需要修改標(biāo)簽庫(kù)描述文件,在節(jié)中介紹的tag元素中再增加attribute子元素,這個(gè)子元素又包括三個(gè)孫元素name::定義了屬性名稱,這個(gè)例子中,屬性名為rangerequired:指出是否必須提供該屬性,true是必須提供,false是可以不提供,這個(gè)例子中,range屬性是可選的,如果不選,那么默認(rèn)為100,所以我們將其設(shè)定為falsertexprvalue:是一個(gè)可選孫元素,表示屬性值是否可以是JSP表達(dá)式,以便在請(qǐng)求時(shí)期動(dòng)態(tài)確定,默認(rèn)狀態(tài)下是

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論