版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、索迪教育索迪教育IT教育成就人生教育成就人生基于基于 Java 的的 Web 編程技術(shù)編程技術(shù)第六章第六章 Servlet索迪教育索迪教育IT教育成就人生教育成就人生上章回顧上章回顧q 了解代理事件模型了解代理事件模型q 在在JavaBean中訪問數(shù)據(jù)庫中訪問數(shù)據(jù)庫索迪教育索迪教育IT教育成就人生教育成就人生我們的目標(biāo)我們的目標(biāo)q 了解了解Servlet體系結(jié)構(gòu)體系結(jié)構(gòu)q 掌握請求和響應(yīng)掌握請求和響應(yīng)索迪教育索迪教育IT教育成就人生教育成就人生簡介簡介-1q Java編程中一個最激動人心的最新趨勢是服編程中一個最激動人心的最新趨勢是服務(wù)器端務(wù)器端Java應(yīng)用程序的興起。應(yīng)用程序的興起。Java
2、這種面向這種面向?qū)ο蟮耐ㄓ镁幊陶Z言最初旨在用于小型嵌入對象的通用編程語言最初旨在用于小型嵌入設(shè)備,而后被認(rèn)為是一種用于以設(shè)備,而后被認(rèn)為是一種用于以Applet形式形式開發(fā)客戶端開發(fā)客戶端Web內(nèi)容的語言,如今內(nèi)容的語言,如今Java已是已是一種非常適合服務(wù)器端開發(fā)的語言,商家迅一種非常適合服務(wù)器端開發(fā)的語言,商家迅速認(rèn)識到速認(rèn)識到Java在服務(wù)器上的潛力。在服務(wù)器上的潛力。索迪教育索迪教育IT教育成就人生教育成就人生簡介簡介-2q Applet是以是以Java語言開發(fā)的程序,它運(yùn)行在語言開發(fā)的程序,它運(yùn)行在客戶端機(jī)器的瀏覽器上,這些客戶端機(jī)器的瀏覽器上,這些Applet不連接不連接到服務(wù)器。
3、在很多情況下需要訪問服務(wù)器上到服務(wù)器。在很多情況下需要訪問服務(wù)器上的數(shù)據(jù),而這無法通過的數(shù)據(jù),而這無法通過Applet實(shí)現(xiàn)。為了訪實(shí)現(xiàn)。為了訪問數(shù)據(jù)和執(zhí)行服務(wù)器端的請求處理,必須使問數(shù)據(jù)和執(zhí)行服務(wù)器端的請求處理,必須使用另一個稱為用另一個稱為Servlet的應(yīng)用程序。的應(yīng)用程序。Servlet是是以以Java編程語言開發(fā)的服務(wù)器端程序,它運(yùn)編程語言開發(fā)的服務(wù)器端程序,它運(yùn)行在行在Web服務(wù)器中,由于服務(wù)器中,由于Servlet在服務(wù)器內(nèi)在服務(wù)器內(nèi)運(yùn)行,所以這些程序可用于擴(kuò)展運(yùn)行,所以這些程序可用于擴(kuò)展Web服務(wù)器服務(wù)器的功能。的功能。索迪教育索迪教育IT教育成就人生教育成就人生簡介簡介-3客戶
4、端客戶端Servlet數(shù)據(jù)庫數(shù)據(jù)庫HTTP服務(wù)器服務(wù)器Servlet體系結(jié)構(gòu)體系結(jié)構(gòu)索迪教育索迪教育IT教育成就人生教育成就人生簡介簡介-4q 使用使用Servlet的優(yōu)點(diǎn)是:的優(yōu)點(diǎn)是:Servlet是持久性的。是持久性的。 Servlet只須由只須由Web服務(wù)器加載一次即可服務(wù)器加載一次即可維護(hù)請求之間的服務(wù)。相比之下,每次向維護(hù)請求之間的服務(wù)。相比之下,每次向Web服務(wù)器發(fā)出請服務(wù)器發(fā)出請求時,求時,Web服務(wù)器都必須加載和執(zhí)行服務(wù)器都必須加載和執(zhí)行CGI腳本。腳本。Servlet運(yùn)行速度快。由于只須加載一次,所以提供更佳的性運(yùn)行速度快。由于只須加載一次,所以提供更佳的性能。能。由于是用由
5、于是用Java編寫,所以編寫,所以Servlet可跨平臺。可跨平臺。Servlet可擴(kuò)展??蓴U(kuò)展。Java的所有優(yōu)點(diǎn)都可以在的所有優(yōu)點(diǎn)都可以在Servlet中體現(xiàn)。中體現(xiàn)。Servlet很安全。訪問很安全。訪問Servlet的唯一途徑是通過服務(wù)器。的唯一途徑是通過服務(wù)器。Servlet可以與各種客戶端一起使用??梢耘c各種客戶端一起使用。索迪教育索迪教育IT教育成就人生教育成就人生6.1 Servlet體系結(jié)構(gòu)體系結(jié)構(gòu)-1q Servlet是服務(wù)器端程序,運(yùn)行在是服務(wù)器端程序,運(yùn)行在Web服務(wù)器服務(wù)器上對客戶端的請求做出響應(yīng)。上對客戶端的請求做出響應(yīng)。Web服務(wù)器向服務(wù)器向Servlet發(fā)送請求
6、,發(fā)送請求, Servlet的輸出結(jié)果返回至的輸出結(jié)果返回至Web服務(wù)器,然后服務(wù)器,然后Web服務(wù)器將結(jié)果返回至服務(wù)器將結(jié)果返回至Web瀏覽器,最后瀏覽器,最后Web瀏覽器在屏幕上顯示瀏覽器在屏幕上顯示結(jié)果。該過程稱為結(jié)果。該過程稱為“請求請求-響應(yīng)響應(yīng)”模型。模型。Web瀏覽器瀏覽器ServletWeb服務(wù)器服務(wù)器HTTP請求請求HTTP響應(yīng)響應(yīng)索迪教育索迪教育IT教育成就人生教育成就人生6.1 Servlet體系結(jié)構(gòu)體系結(jié)構(gòu)-2q Servlet使用以下兩個包中的類和接口:使用以下兩個包中的類和接口:javax.servletjavax.servlet.httpq 包名以包名以javax
7、開頭而不是開頭而不是java,表示,表示Servlet API是一個是一個標(biāo)準(zhǔn)擴(kuò)展。標(biāo)準(zhǔn)擴(kuò)展。q javax.servlet包包含了可以支持通用、跨協(xié)議的包包含了可以支持通用、跨協(xié)議的Servlet的類。的類。q javax.servlet.http包中的類增加了特定于包中的類增加了特定于HTTP的功能。的功能。每個每個Servlet都必須實(shí)現(xiàn)都必須實(shí)現(xiàn)javax.servlet.Servlet接口。大接口。大部分部分Servlet通過擴(kuò)展以下其中一個特殊類來實(shí)現(xiàn)這一通過擴(kuò)展以下其中一個特殊類來實(shí)現(xiàn)這一接口:接口:javax.servlet.GenericServlet或或javax.serv
8、let.http.HttpServlet。索迪教育索迪教育IT教育成就人生教育成就人生6.1 Servlet體系結(jié)構(gòu)體系結(jié)構(gòu)-3q 跨協(xié)議跨協(xié)議Servlet應(yīng)該繼承應(yīng)該繼承GenericServlet。HTTP Servlet應(yīng)繼承應(yīng)繼承HttpServlet,而,而HttpServlet本身是本身是GenericServlet的子類,但的子類,但添加了特定于添加了特定于HTTP的功能。的功能。Servlet接口只聲接口只聲明而不實(shí)現(xiàn)用于管理明而不實(shí)現(xiàn)用于管理Servlet及其與客戶端通及其與客戶端通信的方法。信的方法。索迪教育索迪教育IT教育成就人生教育成就人生6.1 Servlet體系結(jié)
9、構(gòu)體系結(jié)構(gòu)-4ServletGenericServletHttpServlet自定義自定義Servlet索迪教育索迪教育IT教育成就人生教育成就人生6.1.1 常用接口和類常用接口和類- javax.servlet包包q 其中最常用的接口如下:其中最常用的接口如下:ServletRequest此接口用于將請求信息傳送給此接口用于將請求信息傳送給Servlet。在收到請求時,。在收到請求時,Servlet引擎會將關(guān)鍵的請求信息封裝在實(shí)現(xiàn)引擎會將關(guān)鍵的請求信息封裝在實(shí)現(xiàn)ServletRequest接口的對象接口的對象中,傳遞至中,傳遞至Servlet的的service()方法。方法。Servlet
10、Response此接口提供服務(wù)器對客戶端請求的響應(yīng)的對象表示。此接口提供服務(wù)器對客戶端請求的響應(yīng)的對象表示。Servlet引引擎會將實(shí)現(xiàn)擎會將實(shí)現(xiàn)ServletResponse接口的對象傳遞給接口的對象傳遞給Servlet的的service()方法。接著方法。接著Servlet就可以使用此對象對客戶端請求做出響應(yīng)。就可以使用此對象對客戶端請求做出響應(yīng)。RequestDispatcher此接口定義一個用于接收客戶端的請求并將其發(fā)送至任何資源此接口定義一個用于接收客戶端的請求并將其發(fā)送至任何資源的對象。此接口還可用于封裝的對象。此接口還可用于封裝Servlet。RequestDispatcher對
11、象對象用作資源的封裝器,通過路徑或名稱指定。資源可以是服務(wù)器用作資源的封裝器,通過路徑或名稱指定。資源可以是服務(wù)器上的上的Servlet、HTML文件或文件或JSP文件。文件。索迪教育索迪教育IT教育成就人生教育成就人生6.1.1 常用接口和類常用接口和類- javax.servlet包包q 其中最常用的接口如下:其中最常用的接口如下:Servlet這是每個這是每個Servlet都必須實(shí)現(xiàn)的接口,它定義必須由都必須實(shí)現(xiàn)的接口,它定義必須由Servlet實(shí)現(xiàn)實(shí)現(xiàn)的方法。的方法。ServletConfig此接口定義此接口定義Servlet配置對象。此對象由配置對象。此對象由Servlet引擎用于將
12、任何引擎用于將任何信息傳遞給信息傳遞給Servlet,以便可初始化,以便可初始化Servlet 。 ServletConfig 接接口的其他詳情將在本章后面討論??诘钠渌斍閷⒃诒菊潞竺嬗懻?。ServletContext此接口定義了一組方法,此接口定義了一組方法,Servlet使用這些方法與使用這些方法與Servlet引擎進(jìn)引擎進(jìn)行通信。行通信。SingleThreadModel此接口確保每次此接口確保每次Servlet只能處理一個請求。只能處理一個請求。索迪教育索迪教育IT教育成就人生教育成就人生6.1.1 常用接口和類常用接口和類- javax.servlet包包q 其中最常用的類如下:其
13、中最常用的類如下:q GenericServlet 這是大部分非這是大部分非HTTPServlet擴(kuò)展的類。此類定義通擴(kuò)展的類。此類定義通知、跨協(xié)議的知、跨協(xié)議的Servlet。q ServletInputStream 這是提供輸入流用于讀取來自客戶端請求的二進(jìn)這是提供輸入流用于讀取來自客戶端請求的二進(jìn)制數(shù)據(jù)的類。此類包括方法制數(shù)據(jù)的類。此類包括方法readLine(),以此有效,以此有效實(shí)現(xiàn)每次讀取一行數(shù)據(jù)。實(shí)現(xiàn)每次讀取一行數(shù)據(jù)。q ServletOutputStream 此類的運(yùn)行方式與此類的運(yùn)行方式與ServletInputStream相同,但此相同,但此類提供輸出流用于將二進(jìn)制數(shù)據(jù)發(fā)送
14、給客戶端。類提供輸出流用于將二進(jìn)制數(shù)據(jù)發(fā)送給客戶端。索迪教育索迪教育IT教育成就人生教育成就人生6.1.1 常用接口和類常用接口和類- javax.servlet包包q javax.servlet包還具有某些異常,它們是:包還具有某些異常,它們是:q ServletException 此異常是常規(guī)異常,由此異常是常規(guī)異常,由Servlet在執(zhí)行過程中遇到在執(zhí)行過程中遇到困難時拋出。困難時拋出。q UnavailableException 此異常定義的是由此異常定義的是由Servlet拋出以表示拋出以表示Servlet永久永久或臨時不可用的異常?;蚺R時不可用的異常。索迪教育索迪教育IT教育成就人
15、生教育成就人生6.1.1 常用接口和類常用接口和類- javax.servlet.http包包qjavax.servlet.http包中可用的接口包括:包中可用的接口包括:HttpServletRequest此接口擴(kuò)展此接口擴(kuò)展ServletRequest接口并支持接口并支持ServletResult接口的所有方法。接口的所有方法。HttpServletRequest定義用于描述定義用于描述HTTP請求的方法。實(shí)現(xiàn)請求的方法。實(shí)現(xiàn)HttpServletRequest接口的對象被傳遞給接口的對象被傳遞給Servlet的的service方法或任何方法或任何do()方法。方法。HttpServlet
16、Response此接口擴(kuò)展此接口擴(kuò)展ServletResponse并支持并支持ServletResponse接口的所有方法。接口的所有方法。 HttpServletResponse接口提供服務(wù)器對客戶端請求的響應(yīng)的對象表示。接口提供服務(wù)器對客戶端請求的響應(yīng)的對象表示。Servlet可以使用實(shí)現(xiàn)可以使用實(shí)現(xiàn)Servlet引擎?zhèn)鬟f的引擎?zhèn)鬟f的HttpServletResponse接口的對接口的對象。此對象將被傳遞至象。此對象將被傳遞至Servlet的的service()方法。方法。HttpSession此接口提供一種方法,用于在對此接口提供一種方法,用于在對Web站點(diǎn)的請求或訪問超過一個頁面站點(diǎn)的
17、請求或訪問超過一個頁面時標(biāo)識用戶。時標(biāo)識用戶。HttpSessionBindingListener在對象綁定至?xí)捝匣蚪獬龝捊壎〞r,此接口將通知對象。在對象綁定至?xí)捝匣蚪獬龝捊壎〞r,此接口將通知對象。索迪教育索迪教育IT教育成就人生教育成就人生6.1.1 常用接口和類常用接口和類- javax.servlet.http包包q javax.servlet.http包中常用的類包括:包中常用的類包括:CookieCookie類可以創(chuàng)建類可以創(chuàng)建Cookie , Cookie存儲了少量由存儲了少量由Servlet發(fā)送發(fā)送至客戶端的信息??蛻舳丝稍谏院笠L問以前訪問過的網(wǎng)頁時至客戶端的信息??蛻?/p>
18、端可在稍后要訪問以前訪問過的網(wǎng)頁時使用已存儲的信息。使用已存儲的信息。HttpServletHttpServlet類是最常用于擴(kuò)展類是最常用于擴(kuò)展Servlet的類,這是因?yàn)楹芏嗟念?,這是因?yàn)楹芏郤ervlet應(yīng)用程序都按應(yīng)用程序都按HTTP協(xié)議運(yùn)行。此類支持協(xié)議運(yùn)行。此類支持HTTP功能以及功能以及Servlet類的方法,它是個抽象類。它接收客戶端的請求,并向類的方法,它是個抽象類。它接收客戶端的請求,并向客戶端發(fā)送響應(yīng)??蛻舳税l(fā)送響應(yīng)。HttpSessionBindingEvent在對象綁定至?xí)捝匣蚪獬龝捊壎〞r,此類會將對象傳遞給在對象綁定至?xí)捝匣蚪獬龝捊壎〞r,此類會將對象傳遞給實(shí)
19、現(xiàn)實(shí)現(xiàn)HttpSessionBindingListener接口的會話。接口的會話。索迪教育索迪教育IT教育成就人生教育成就人生6.1.2 Servlet生命周期生命周期-1q Servlet是普通是普通Java類,在需要時被創(chuàng)建,在不用時被類,在需要時被創(chuàng)建,在不用時被破壞。破壞。Servlet的創(chuàng)建和破壞均由的創(chuàng)建和破壞均由Servlet容器自動處理,容器自動處理,這是因?yàn)檫@是因?yàn)镾ervlet是在是在Servlet容器內(nèi)運(yùn)行。容器內(nèi)運(yùn)行。Servlet容器容器可以在單個可以在單個Java虛擬機(jī)中執(zhí)行所有虛擬機(jī)中執(zhí)行所有Servlet。Servlet容容器必須遵循下列生命周期:器必須遵循下列
20、生命周期:創(chuàng)建和初始化創(chuàng)建和初始化Servlet(加載)(加載)處理客戶端的服務(wù)調(diào)用處理客戶端的服務(wù)調(diào)用破壞破壞Servlet并對其進(jìn)行垃圾收集并對其進(jìn)行垃圾收集q 這三個步驟對所有這三個步驟對所有Servlet都通用。都通用。 Servlet容器創(chuàng)建容器創(chuàng)建Servlet實(shí)例時使用的是實(shí)例時使用的是init()方法,而在破壞實(shí)例時使方法,而在破壞實(shí)例時使用的是用的是destroy()方法。方法。索迪教育索迪教育IT教育成就人生教育成就人生6.1.2 Servlet生命周期生命周期-2服務(wù)器加載服務(wù)器加載Servlet服務(wù)器創(chuàng)建服務(wù)器創(chuàng)建Servlet類的實(shí)例類的實(shí)例調(diào)用調(diào)用Servlet實(shí)例
21、的實(shí)例的init()方法方法收到請求收到請求調(diào)用調(diào)用service()方法方法service()方法處理請求并將輸出結(jié)果返回客戶端方法處理請求并將輸出結(jié)果返回客戶端Servlet等待下一個請求或由服務(wù)器卸載等待下一個請求或由服務(wù)器卸載Servlet在服務(wù)器調(diào)用在服務(wù)器調(diào)用destroy()方法后被卸載方法后被卸載索迪教育索迪教育IT教育成就人生教育成就人生6.1.2 Servlet生命周期生命周期-3q初始化初始化Servlet任何時候?qū)⑷魏螘r候?qū)ervlet加載至服務(wù)器,服務(wù)器都會調(diào)用加載至服務(wù)器,服務(wù)器都會調(diào)用Servlet的的init()方方法。即使大部分法。即使大部分Servlet在
22、多線程服務(wù)器上運(yùn)行,在多線程服務(wù)器上運(yùn)行,Servlet在初始化過在初始化過程中也不會碰到并發(fā)問題。程中也不會碰到并發(fā)問題。init()方法在方法在Servlet處理第一個請求之前調(diào)用,此方法用于執(zhí)行處理第一個請求之前調(diào)用,此方法用于執(zhí)行Servlet初始化初始化 創(chuàng)建或加載創(chuàng)建或加載Servlet在處理請求時使用的對象。服務(wù)在處理請求時使用的對象。服務(wù)器調(diào)用器調(diào)用Servlet的的init()方法,向新方法,向新Servlet提供任何有關(guān)其本身及其環(huán)提供任何有關(guān)其本身及其環(huán)境的信息。境的信息。覆蓋覆蓋init()方法是為了在方法是為了在Servlet中添加初始化的內(nèi)容,覆蓋中添加初始化的內(nèi)容
23、,覆蓋init()方法方法時必須遵循下列規(guī)則:時必須遵循下列規(guī)則:如果發(fā)生初始化錯誤,致使如果發(fā)生初始化錯誤,致使Servlet不能處理客戶端請求,則拋出不能處理客戶端請求,則拋出UnavailableException請勿調(diào)用請勿調(diào)用System.exit()方法方法ServletConfig對象向?qū)ο笙騍ervlet提供其初始化參數(shù)信息,這些參數(shù)與其提供其初始化參數(shù)信息,這些參數(shù)與其他任何請求都不關(guān)聯(lián)。他任何請求都不關(guān)聯(lián)。ServletConfig對象還有對對象還有對ServletContext對象的引用,對象的引用,Servlet可以使可以使用此對象調(diào)查其環(huán)境。用此對象調(diào)查其環(huán)境。索迪教
24、育索迪教育IT教育成就人生教育成就人生6.1.2 Servlet生命周期生命周期-4q 處理客戶端的請求處理客戶端的請求Servlet接受客戶端的調(diào)用時,它將收到兩個對象:接受客戶端的調(diào)用時,它將收到兩個對象:ServletRequest,用于封裝客戶端至服務(wù)器的通信。,用于封裝客戶端至服務(wù)器的通信。ServletResponse,用于封裝,用于封裝Servlet返回至客戶端的通信。返回至客戶端的通信。HttpServlet接受客戶端的調(diào)用時,與普通接受客戶端的調(diào)用時,與普通Servlet相似,它們相似,它們是:是:HttpServletRequestHttpServletResponseHt
25、tpServlet能夠并發(fā)地為多個客戶端服務(wù)。在能夠并發(fā)地為多個客戶端服務(wù)。在Servlet初始化初始化之后,在調(diào)用之后,在調(diào)用init()方法時,方法時, Servlet容器收到的任何請求都容器收到的任何請求都將被轉(zhuǎn)發(fā)至將被轉(zhuǎn)發(fā)至Servlet的的service()方法。根據(jù)正在接收的方法。根據(jù)正在接收的HTTP請請求類型,求類型, HttpServlet類的類的service()方法可在細(xì)分為方法可在細(xì)分為doGet()、doPost()、doDelete()、doOptions()、doPut()和和doTrace()方法。方法。其中,其中, doGet()和和doPost()是兩個常用
26、于處理服務(wù)器的請求并是兩個常用于處理服務(wù)器的請求并生成響應(yīng)的方法。生成響應(yīng)的方法。索迪教育索迪教育IT教育成就人生教育成就人生6.1.2 Servlet生命周期生命周期-5q 破壞破壞Servlet 要卸載要卸載Servlet時,服務(wù)器將調(diào)用時,服務(wù)器將調(diào)用Servlet的的destroy()方法。在方法。在destroy()方法中,方法中, Servlet應(yīng)該釋放任何應(yīng)該釋放任何已獲得的資源。已獲得的資源。 destroy()方法還使方法還使Servlet有機(jī)會有機(jī)會寫出其未保存的高速緩存信息或任何在下次調(diào)用寫出其未保存的高速緩存信息或任何在下次調(diào)用init()時應(yīng)該讀取的持久性信息。時應(yīng)該
27、讀取的持久性信息。索迪教育索迪教育IT教育成就人生教育成就人生6.2 請求和響應(yīng)請求和響應(yīng)-1q 下面討論表示客戶端請求和下面討論表示客戶端請求和Servlet響應(yīng)的對響應(yīng)的對象。象。Servlet的兩個包都具有請求和響應(yīng)的接的兩個包都具有請求和響應(yīng)的接口和類??诤皖悺avax.servlet包具有包具有ServletRequest和和ServletResponse接口,接口, javax.servlet.http包具包具有有HttpServletRequest和和HttpServletResponse接口。接口。索迪教育索迪教育IT教育成就人生教育成就人生6.2 請求和響應(yīng)請求和響應(yīng)-2q
28、 HttpServlet類類 HttpServlet類擴(kuò)展了類擴(kuò)展了GenericServlet,提供,提供Servlet接口的接口的HTTP協(xié)議的特定實(shí)現(xiàn)。如果協(xié)議的特定實(shí)現(xiàn)。如果Servlet必須遵必須遵循循HTTP協(xié)議,則只能擴(kuò)展協(xié)議,則只能擴(kuò)展HttpServlet類并覆蓋所類并覆蓋所需的方法。需的方法。 HttpServlet最常用的兩個接口是:最常用的兩個接口是: HttpServletRequest HttpServletResponse索迪教育索迪教育IT教育成就人生教育成就人生6.2 請求和響應(yīng)請求和響應(yīng)-3q HttpServletRequestHttpServletReq
29、uest對象提供對對象提供對HTTP頭數(shù)據(jù)的訪問,獲得客頭數(shù)據(jù)的訪問,獲得客戶端作為請求一部分進(jìn)行發(fā)送的參數(shù)。通過擴(kuò)展戶端作為請求一部分進(jìn)行發(fā)送的參數(shù)。通過擴(kuò)展HttpServlet類并覆蓋相應(yīng)方法可以處理類并覆蓋相應(yīng)方法可以處理HTTP請求,這些請求的方法包請求,這些請求的方法包括括doGet()和和doPost()??蛻舳藬?shù)據(jù)可以通過下列方式訪問:客戶端數(shù)據(jù)可以通過下列方式訪問:getParameter()方法,用于返回指定參數(shù)的值方法,用于返回指定參數(shù)的值getParameterValues()方法,在參數(shù)具有多個值時使用,此方法方法,在參數(shù)具有多個值時使用,此方法返回指定參數(shù)的值數(shù)組。
30、返回指定參數(shù)的值數(shù)組。如果所需數(shù)據(jù)是文本格式,則如果所需數(shù)據(jù)是文本格式,則getReader()方法返回方法返回BufferedReader對象用于讀取數(shù)據(jù),如果所需數(shù)據(jù)是二進(jìn)制對象用于讀取數(shù)據(jù),如果所需數(shù)據(jù)是二進(jìn)制格式,則格式,則getInputStream()方法返回方法返回ServletInputStream對象對象用于讀取數(shù)據(jù)。用于讀取數(shù)據(jù)。索迪教育索迪教育IT教育成就人生教育成就人生6.2 請求和響應(yīng)請求和響應(yīng)-4q HttpServletResponse HttpServletResponse對象提供兩個將數(shù)據(jù)返回給對象提供兩個將數(shù)據(jù)返回給用戶的方法。用戶的方法。 getWrite
31、r()方法,返回方法,返回Writer對象,用于將文本數(shù)據(jù)返對象,用于將文本數(shù)據(jù)返回給用戶回給用戶 getOutputStream()方法,返回方法,返回ServletOutputStream對象,對象,用于返回二進(jìn)制數(shù)據(jù)用于返回二進(jìn)制數(shù)據(jù) 在發(fā)送響應(yīng)后關(guān)閉在發(fā)送響應(yīng)后關(guān)閉Writer或或ServletOutputStream可讓服務(wù)器知道何時完成響應(yīng)。可讓服務(wù)器知道何時完成響應(yīng)。索迪教育索迪教育IT教育成就人生教育成就人生6.2 請求和響應(yīng)請求和響應(yīng)-5q HttpServlet類中的常用方法類中的常用方法void init()在初始化在初始化Servlet時調(diào)用一次時調(diào)用一次void de
32、stroy()在要破壞在要破壞Servlet實(shí)例時調(diào)用一次實(shí)例時調(diào)用一次void service(HttpServletRequest req,HttpServletResponse resp)請勿覆蓋此方法請勿覆蓋此方法doGet()、doPost()、doPut()、doDelete()、doOptions()、doTrace()這些方法根據(jù)收到的這些方法根據(jù)收到的HTTP請求的類型來請求的類型來調(diào)用。必須覆蓋以便生成響應(yīng)。調(diào)用。必須覆蓋以便生成響應(yīng)。void log(String msg)將消息寫入將消息寫入Servlet的日志文件的日志文件long getLastModified(Ht
33、tpServlet req)返回返回Servlet的最后修改日期的最后修改日期String getServletInfo()提供提供Servlet的一般信息字符串,例如作的一般信息字符串,例如作者、版本、版權(quán)等者、版本、版權(quán)等String getServletName()返回返回 Servlet的名稱的名稱String getInitParameter(String name)返回給定初始化參數(shù)的值返回給定初始化參數(shù)的值Enumeration getInitParameterNames()返回一個包含了所有提供的初始化參數(shù)返回一個包含了所有提供的初始化參數(shù)名稱的名稱的Enumeration對象
34、對象索迪教育索迪教育IT教育成就人生教育成就人生6.3 會話和環(huán)境會話和環(huán)境-1q HTTP沒有為服務(wù)器提供識別請求序列是否來沒有為服務(wù)器提供識別請求序列是否來自同一客戶端的方法,這就引起一個問題,自同一客戶端的方法,這就引起一個問題,因?yàn)樵S多因?yàn)樵S多Web應(yīng)用程序都是有狀態(tài)的。應(yīng)用程序都是有狀態(tài)的。HTTP服務(wù)器不能通過連接機(jī)器的服務(wù)器不能通過連接機(jī)器的IP地址來標(biāo)識客地址來標(biāo)識客戶端,這是因?yàn)閳?bào)告的戶端,這是因?yàn)閳?bào)告的IP地址可能是代理服地址可能是代理服務(wù)器的地址或者是有多個用戶的服務(wù)器的地務(wù)器的地址或者是有多個用戶的服務(wù)器的地址。此問題的解決方案是客戶端任何時候做址。此問題的解決方案是客
35、戶端任何時候做出新請求都必須進(jìn)行自我介紹。每個客戶端出新請求都必須進(jìn)行自我介紹。每個客戶端都必須提供一個唯一標(biāo)識以便服務(wù)器可識別都必須提供一個唯一標(biāo)識以便服務(wù)器可識別它,或者客戶端必須提供某些信息以便服務(wù)它,或者客戶端必須提供某些信息以便服務(wù)器可用于正確處理請求。器可用于正確處理請求。索迪教育索迪教育IT教育成就人生教育成就人生6.3 會話和環(huán)境會話和環(huán)境-2q 用戶在站點(diǎn)上瀏覽時,會話跟蹤使用戶在站點(diǎn)上瀏覽時,會話跟蹤使Servlet和其他服務(wù)和其他服務(wù)器端應(yīng)用程序可以跟蹤用戶。服務(wù)器端應(yīng)用程序可以器端應(yīng)用程序可以跟蹤用戶。服務(wù)器端應(yīng)用程序可以使用此功能跟蹤客戶端在站點(diǎn)上的操作。使用此功能跟
36、蹤客戶端在站點(diǎn)上的操作。Web服務(wù)器服務(wù)器通過為站點(diǎn)上的每個用戶創(chuàng)建通過為站點(diǎn)上的每個用戶創(chuàng)建Session對象來維護(hù)用戶對象來維護(hù)用戶狀態(tài),這些狀態(tài),這些Session對象存儲在服務(wù)器中,并在服務(wù)器對象存儲在服務(wù)器中,并在服務(wù)器中進(jìn)行維護(hù)。在用戶向站點(diǎn)做出請求時,用戶就分配中進(jìn)行維護(hù)。在用戶向站點(diǎn)做出請求時,用戶就分配有一個新的有一個新的Session對象和唯一的會話對象和唯一的會話ID。此會話。此會話ID在后續(xù)的請求中會將用戶與在后續(xù)的請求中會將用戶與Session對象進(jìn)行匹配然后對象進(jìn)行匹配然后Session對象就作為請求的一部分被傳遞至處理請求的對象就作為請求的一部分被傳遞至處理請求的
37、Servlet。 Servlet可以在可以在Session對象中添加信息或讀對象中添加信息或讀取其中的信息。會話對于由多個取其中的信息。會話對于由多個Servlet組成的應(yīng)用程組成的應(yīng)用程序來說很方便。序來說很方便。索迪教育索迪教育IT教育成就人生教育成就人生6.3 會話和環(huán)境會話和環(huán)境-3q 下面討論不同的會話跟蹤技術(shù)下面討論不同的會話跟蹤技術(shù) 用戶認(rèn)證用戶認(rèn)證 隱藏表單字段隱藏表單字段 URL重寫重寫 持久持久Cookie 會話交換和持久會話交換和持久索迪教育索迪教育IT教育成就人生教育成就人生6.3.1 用戶認(rèn)證用戶認(rèn)證q在在Web服務(wù)器只允許那些使用用戶名和口令進(jìn)行登錄的客戶端服務(wù)器只
38、允許那些使用用戶名和口令進(jìn)行登錄的客戶端訪問某些資源時,就需要使用用戶認(rèn)證。在客戶端登錄后,用訪問某些資源時,就需要使用用戶認(rèn)證。在客戶端登錄后,用戶名即通過戶名即通過getRemoteUser()提供給提供給Servlet。用戶名可用于跟蹤。用戶名可用于跟蹤客戶端會話。一旦用戶登錄,瀏覽器即記住用戶名,并在用戶客戶端會話。一旦用戶登錄,瀏覽器即記住用戶名,并在用戶查看站點(diǎn)的新頁面時返回用戶名和口令。查看站點(diǎn)的新頁面時返回用戶名和口令。Servlet可以通過用戶可以通過用戶名標(biāo)識用戶,并以此跟蹤用戶。名標(biāo)識用戶,并以此跟蹤用戶。q使用用戶認(rèn)證的優(yōu)點(diǎn)是:使用用戶認(rèn)證的優(yōu)點(diǎn)是:容易實(shí)現(xiàn)??勺尫?wù)器
39、保護(hù)一組頁面,并使用容易實(shí)現(xiàn)。可讓服務(wù)器保護(hù)一組頁面,并使用getRemoteUser()標(biāo)識標(biāo)識每個客戶端。每個客戶端。此技術(shù)即使在用戶從不同機(jī)器訪問站點(diǎn)時也有效。此技術(shù)即使在用戶從不同機(jī)器訪問站點(diǎn)時也有效。即使用戶離開站點(diǎn)或在返回站點(diǎn)前退出瀏覽器,此技術(shù)同樣有效。即使用戶離開站點(diǎn)或在返回站點(diǎn)前退出瀏覽器,此技術(shù)同樣有效。q使用用戶認(rèn)證的缺點(diǎn)是:使用用戶認(rèn)證的缺點(diǎn)是:要求每個用戶都注冊一個帳戶,然后在每次訪問站點(diǎn)時登錄。要求每個用戶都注冊一個帳戶,然后在每次訪問站點(diǎn)時登錄。用戶在同一站點(diǎn)上不能同時維護(hù)多個會話。用戶在同一站點(diǎn)上不能同時維護(hù)多個會話。索迪教育索迪教育IT教育成就人生教育成就人生
40、6.3.2 隱藏表單字段隱藏表單字段q 隱藏表單字段是指添加到隱藏表單字段是指添加到HTML表單中,但不在客戶表單中,但不在客戶端的瀏覽器中顯示的字段。在提交包含字段的表單時,端的瀏覽器中顯示的字段。在提交包含字段的表單時,字段將被發(fā)送至服務(wù)器。隱藏表單字段定義表單的常字段將被發(fā)送至服務(wù)器。隱藏表單字段定義表單的常變量,但對于接收提交的表單的變量,但對于接收提交的表單的Servlet,隱藏字段和,隱藏字段和可見字段沒有區(qū)別??梢娮侄螞]有區(qū)別。q 使用隱藏表單字段的優(yōu)點(diǎn)是其功能強(qiáng)大并支持匿名。使用隱藏表單字段的優(yōu)點(diǎn)是其功能強(qiáng)大并支持匿名。所有常用瀏覽器都支持隱藏字段,而且它們可用于未所有常用瀏覽
41、器都支持隱藏字段,而且它們可用于未登錄或注冊的客戶端。隱藏表單字段的缺點(diǎn)是只適用登錄或注冊的客戶端。隱藏表單字段的缺點(diǎn)是只適用于動態(tài)生成的表單序列。在遇到靜態(tài)文檔、以電子郵于動態(tài)生成的表單序列。在遇到靜態(tài)文檔、以電子郵件發(fā)送的文檔、設(shè)計(jì)為書簽的文檔和瀏覽器關(guān)閉時,件發(fā)送的文檔、設(shè)計(jì)為書簽的文檔和瀏覽器關(guān)閉時,該技術(shù)即束手無策。該技術(shù)即束手無策。索迪教育索迪教育IT教育成就人生教育成就人生6.3.3 URL重寫重寫q 使用使用URL重寫技術(shù),用戶單擊的每個重寫技術(shù),用戶單擊的每個URL都可被動都可被動態(tài)修改或重寫,以包括附加信息。附加信息的形式可態(tài)修改或重寫,以包括附加信息。附加信息的形式可為附
42、加路徑信息、添加的參數(shù)或某些特定于服務(wù)器的為附加路徑信息、添加的參數(shù)或某些特定于服務(wù)器的自定義自定義URL修改。重寫修改。重寫URL的可用空間是有限的,的可用空間是有限的,因此附加信息通常只限于唯一的會話因此附加信息通常只限于唯一的會話ID。q 每種重寫技術(shù)都有其優(yōu)點(diǎn)和缺點(diǎn)。附加路徑信息適用每種重寫技術(shù)都有其優(yōu)點(diǎn)和缺點(diǎn)。附加路徑信息適用于所有服務(wù)器,并作為使用于所有服務(wù)器,并作為使用GET和和POST方法的表單方法的表單的目標(biāo),但是,如果的目標(biāo),但是,如果Servlet必須使用附加路徑信息作必須使用附加路徑信息作為實(shí)際路徑信息時,它就不適用。添加的參數(shù)適用于為實(shí)際路徑信息時,它就不適用。添加的
43、參數(shù)適用于所有服務(wù)器,但在作為使用所有服務(wù)器,但在作為使用POST方法的表單的目標(biāo)方法的表單的目標(biāo)時將失效,并可能引起參數(shù)命名沖突。特定于服務(wù)器時將失效,并可能引起參數(shù)命名沖突。特定于服務(wù)器的自定義修改在任何情況下都適用于支持此類修改的的自定義修改在任何情況下都適用于支持此類修改的服務(wù)器。服務(wù)器。索迪教育索迪教育IT教育成就人生教育成就人生6.3.4 持久持久Cookieq Cookie是是Web服務(wù)器發(fā)送至瀏覽器,以后可服務(wù)器發(fā)送至瀏覽器,以后可從該瀏覽器上讀回的少量信息。瀏覽器收到從該瀏覽器上讀回的少量信息。瀏覽器收到Cookie后,在每次訪問服務(wù)器上的頁面時都后,在每次訪問服務(wù)器上的頁面
44、時都會將其發(fā)送回服務(wù)器。由于會將其發(fā)送回服務(wù)器。由于Cookie的值可以的值可以方便地標(biāo)識客戶端,因此方便地標(biāo)識客戶端,因此Cookie通常用于會通常用于會話跟蹤。話跟蹤。索迪教育索迪教育IT教育成就人生教育成就人生6.3.5 會話交換和持久會話交換和持久-1q 因?yàn)樵L問一個站點(diǎn)的用戶可有許多個,所以就會有許因?yàn)樵L問一個站點(diǎn)的用戶可有許多個,所以就會有許多會話訪問同一站點(diǎn)。多會話訪問同一站點(diǎn)。q Internet站點(diǎn)必須支持許多有效會話,例如,大型站站點(diǎn)必須支持許多有效會話,例如,大型站點(diǎn)可能同時有幾百甚至幾千個有效會話。由于每個會點(diǎn)可能同時有幾百甚至幾千個有效會話。由于每個會話都可以包含應(yīng)用
45、程序話都可以包含應(yīng)用程序Servlet放置的任意數(shù)據(jù)對象,放置的任意數(shù)據(jù)對象,所以整個系統(tǒng)的內(nèi)存要求就很高。所以整個系統(tǒng)的內(nèi)存要求就很高。q 內(nèi)存中可以存在的會話數(shù)受到會話跟蹤系統(tǒng)的限制。內(nèi)存中可以存在的會話數(shù)受到會話跟蹤系統(tǒng)的限制。session.maxresidents屬性設(shè)置此限制,當(dāng)同時進(jìn)行的屬性設(shè)置此限制,當(dāng)同時進(jìn)行的會話的數(shù)量超過會話的數(shù)量超過session.maxresidents設(shè)置的限制時,設(shè)置的限制時,會話跟蹤器會將最近最不常用的會話交換到磁盤。被會話跟蹤器會將最近最不常用的會話交換到磁盤。被交換的會話沒有丟失,它們可以重載入內(nèi)存。如果收交換的會話沒有丟失,它們可以重載入內(nèi)
46、存。如果收到請求,會話將被重載。會話交換使得系統(tǒng)中的有效到請求,會話將被重載。會話交換使得系統(tǒng)中的有效會話比內(nèi)存所能容納的會話要多。會話比內(nèi)存所能容納的會話要多。索迪教育索迪教育IT教育成就人生教育成就人生6.3.5 會話交換和持久會話交換和持久-2q會話交換絕不會影響會話的無效性。如果會話的未使用時間超會話交換絕不會影響會話的無效性。如果會話的未使用時間超過正常失效時間,它就會無效,不管會話是在內(nèi)存還是在磁盤。過正常失效時間,它就會無效,不管會話是在內(nèi)存還是在磁盤。session.invalidationinterval屬性設(shè)置會話無效時間。屬性設(shè)置會話無效時間。q串行化用于將會話寫入磁盤和
47、從磁盤讀取會話。所以,可以串串行化用于將會話寫入磁盤和從磁盤讀取會話。所以,可以串行化并置于會話中的對象將被寫入磁盤,而不能串行化的對象行化并置于會話中的對象將被寫入磁盤,而不能串行化的對象將保留在內(nèi)存中(即使會話的一部分已被寫入磁盤),會話跟將保留在內(nèi)存中(即使會話的一部分已被寫入磁盤),會話跟蹤操作不會受串行化的影響。因此,蹤操作不會受串行化的影響。因此,Servlet開發(fā)者只保存會話開發(fā)者只保存會話中的可串行化對象。實(shí)現(xiàn)中的可串行化對象。實(shí)現(xiàn)java.io.Serializable或或java.io.Externalizable接口的對象都可串行化。接口的對象都可串行化。q在啟用了會話持
48、久功能時,會話跟蹤器將使用會話交換機(jī)制實(shí)在啟用了會話持久功能時,會話跟蹤器將使用會話交換機(jī)制實(shí)現(xiàn)會話持久。服務(wù)器關(guān)閉時,內(nèi)存中的會話即被寫入現(xiàn)會話持久。服務(wù)器關(guān)閉時,內(nèi)存中的會話即被寫入session.swapdirectory屬性中指定的磁盤。一旦啟動服務(wù)器,寫屬性中指定的磁盤。一旦啟動服務(wù)器,寫入磁盤的會話就變得有效。這就使服務(wù)器在重啟時不會丟失任入磁盤的會話就變得有效。這就使服務(wù)器在重啟時不會丟失任何現(xiàn)有會話。會話中的可串行化數(shù)據(jù)元素在關(guān)閉何現(xiàn)有會話。會話中的可串行化數(shù)據(jù)元素在關(guān)閉/重啟操作時可重啟操作時可以繼續(xù)運(yùn)行。以繼續(xù)運(yùn)行。索迪教育索迪教育IT教育成就人生教育成就人生6.4 Htt
49、pSession接口接口-1q HttpSession接口定義一個對象,用于在客戶接口定義一個對象,用于在客戶端和服務(wù)器之間提供關(guān)聯(lián),此關(guān)聯(lián)在經(jīng)過多端和服務(wù)器之間提供關(guān)聯(lián),此關(guān)聯(lián)在經(jīng)過多次連接后仍然持久。它還可以維護(hù)事務(wù)處理次連接后仍然持久。它還可以維護(hù)事務(wù)處理之間的狀態(tài)。之間的狀態(tài)。q Servlet API提供提供HttpSession接口以實(shí)現(xiàn)存儲接口以實(shí)現(xiàn)存儲功能。功能。Servlet引擎可以創(chuàng)建一個對象,用于引擎可以創(chuàng)建一個對象,用于實(shí)現(xiàn)此接口,自動創(chuàng)建唯一的密鑰和將此密實(shí)現(xiàn)此接口,自動創(chuàng)建唯一的密鑰和將此密鑰附加至響應(yīng)。鑰附加至響應(yīng)。 Servlet引擎負(fù)責(zé)存儲會話、引擎負(fù)責(zé)存儲會
50、話、跟蹤會話持久時間以及根據(jù)跟蹤會話持久時間以及根據(jù)Servlet需要檢索需要檢索會話。會話。Session對象必須具有生命周期,這樣對象必須具有生命周期,這樣引擎才能將其拋棄。引擎才能將其拋棄。索迪教育索迪教育IT教育成就人生教育成就人生6.4 HttpSession接口接口-2q 為了創(chuàng)建為了創(chuàng)建HTTP客戶端和客戶端和HTTP服務(wù)器之間的會話,服務(wù)器之間的會話,Servlet引擎使用引擎使用HttpSession接口。對于用戶的多個連接口。對于用戶的多個連接或頁面請求,會話可持久的時間比實(shí)際指定的更長。接或頁面請求,會話可持久的時間比實(shí)際指定的更長。正常情況下,會話對應(yīng)一個建立至站點(diǎn)的連
51、接并多次正常情況下,會話對應(yīng)一個建立至站點(diǎn)的連接并多次訪問站點(diǎn)的用戶。服務(wù)器通過使用訪問站點(diǎn)的用戶。服務(wù)器通過使用Cookie或重寫或重寫URL來維護(hù)會話。來維護(hù)會話。q Servlet可通過可通過HttpSession接口來查看和操縱會話的相接口來查看和操縱會話的相關(guān)信息,如會話標(biāo)識符、創(chuàng)建時間和環(huán)境。此接口允關(guān)信息,如會話標(biāo)識符、創(chuàng)建時間和環(huán)境。此接口允許許Servlet將對象綁定至?xí)?,并允許將對象綁定至?xí)挘⒃试SServlet訪問標(biāo)準(zhǔn)訪問標(biāo)準(zhǔn)會話屬性,例如會話標(biāo)識符或會話環(huán)境。會話屬性,例如會話標(biāo)識符或會話環(huán)境。 HttpSession接口允許接口允許Servlet從會話獲得數(shù)據(jù)和修
52、改此從會話獲得數(shù)據(jù)和修改此數(shù)據(jù),然后將其返回給會話。數(shù)據(jù),然后將其返回給會話。索迪教育索迪教育IT教育成就人生教育成就人生6.4 HttpSession接口接口-3q 會話跟蹤器檢查對象是否實(shí)現(xiàn)會話跟蹤器檢查對象是否實(shí)現(xiàn)HttpSessionBindingListener接口。任何時候應(yīng)用程序接口。任何時候應(yīng)用程序存儲對象或?qū)⑵鋸臅捴袆h除,如果對象實(shí)現(xiàn)存儲對象或?qū)⑵鋸臅捴袆h除,如果對象實(shí)現(xiàn)HttpSessionBindingListener接口,則接口,則Servlet都會通知都會通知此對象它已被綁定至?xí)捇蛞呀獬龝捊壎?。此對象它已被綁定至?xí)捇蛞呀獬龝捊壎?。q 在下列任何一種情況下,
53、服務(wù)器都會將會話視為新的在下列任何一種情況下,服務(wù)器都會將會話視為新的會話:會話:客戶端首次進(jìn)入頁面或站點(diǎn)時客戶端首次進(jìn)入頁面或站點(diǎn)時會話還未啟動時會話還未啟動時客戶端選擇不參與會話時客戶端選擇不參與會話時索迪教育索迪教育IT教育成就人生教育成就人生6.5 ServletConfig接口接口q ServletConfig接口定義接口定義Servlet配置對象,配置對象, Servlet引擎引擎使用此對象將信息傳遞給使用此對象將信息傳遞給Servlet以初始化以初始化Servlet。它。它包含包含Servlet初始化參數(shù)的名稱初始化參數(shù)的名稱/值對,還包含對值對,還包含對ServletConte
54、xt對象的引用。此接口定義了三個訪問此對象的引用。此接口定義了三個訪問此信息的方法。信息的方法。String getInitParameter(String name) 返回包含了指定初始化參返回包含了指定初始化參數(shù)值的字符串,如果參數(shù)數(shù)值的字符串,如果參數(shù)不存在則返回不存在則返回nullEnumeration getInitParameterNames()將將Servlet初始化參數(shù)的名初始化參數(shù)的名稱作為字符串對象的枚舉稱作為字符串對象的枚舉返回,如果返回,如果Servlet沒有初沒有初始化參數(shù)則返回空枚舉始化參數(shù)則返回空枚舉ServletCntext getServletContext(
55、)返回服務(wù)器傳遞至此返回服務(wù)器傳遞至此Servlet的的ServletContext對對象象索迪教育索迪教育IT教育成就人生教育成就人生6.6 ServletContext-1q 使用此接口的對象讓使用此接口的對象讓Servlet查找有關(guān)查找有關(guān)Servlet引擎及其引擎及其環(huán)境的信息。從環(huán)境的信息。從ServletConfig對象可以獲得對象可以獲得ServletContext。 ServletContext類中常用的方法如下:類中常用的方法如下:Object getAttribute(String name)返回給定名稱的返回給定名稱的Servlet引擎屬性,引擎屬性,若無則返回若無則返回nullEnumeration getAttributeNames()返回包含了此返回包含了此Servlet環(huán)境中可用環(huán)境中可用屬性名稱的枚舉屬性名稱的枚舉ServletContext getContext(String uripath)返回對應(yīng)于服務(wù)器上指定返回對應(yīng)于服務(wù)器上指定URL的的ServletContext對象對象int getMajorVersion()返回此返回此Web服務(wù)器支持的服務(wù)器支持的Java Servlet API的主要
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 預(yù)算課程設(shè)計(jì)實(shí)例
- 語文拼音早教課程設(shè)計(jì)
- 視頻音頻處理課程設(shè)計(jì)
- 課程設(shè)計(jì)需要啥軟件
- 臨時員工勞動合同范本
- 零星工程維修合同模板
- 礦山開采工程承包合同
- 電子商務(wù)行業(yè)合同
- 農(nóng)業(yè)行業(yè)農(nóng)產(chǎn)品采購合同
- 電子商務(wù)平臺賣家與買家交易保障合同
- 2024年新課標(biāo)高考化學(xué)試卷(適用黑龍江、遼寧、吉林地區(qū) 真題+答案)
- 鈷酸鋰-安全技術(shù)說明書MSDS
- 江蘇省“大唐杯”全國大學(xué)生新一代信息通信技術(shù)大賽省賽題庫(含答案)
- (正式版)JBT 9229-2024 剪叉式升降工作平臺
- 如何做好談話筆錄
- 偏頭痛的治療及護(hù)理
- 世界十大物理學(xué)家圖文
- 醫(yī)學(xué)研究生文獻(xiàn)檢索實(shí)例
- 三年級數(shù)學(xué)(上)計(jì)算題及答案集錦
- 西師大版六年級上冊分?jǐn)?shù)除法練習(xí)300題及答案
- 高一期末家長會課件
評論
0/150
提交評論