




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、高級(jí)軟件人才實(shí)作培訓(xùn)專家高級(jí)軟件人才實(shí)作培訓(xùn)專家! !北京傳智播客教育 JavaWEBJavaWEB開發(fā)開發(fā)-Servlet-Servlet過(guò)濾器過(guò)濾器佟剛佟剛 高級(jí)軟件人才實(shí)作培訓(xùn)專家高級(jí)軟件人才實(shí)作培訓(xùn)專家! !北京傳智播客教育 Filter(過(guò)濾器)簡(jiǎn)介lFilter 的基本功能是對(duì)對(duì) Servlet 容器調(diào)用容器調(diào)用 Servlet 的過(guò)的過(guò)程進(jìn)行攔截程進(jìn)行攔截,從而在從而在 Servlet 進(jìn)行響應(yīng)處理的前后實(shí)進(jìn)行響應(yīng)處理的前后實(shí)現(xiàn)一些特殊的功能現(xiàn)一些特殊的功能。l在 Servlet API 中定義了三個(gè)接口類來(lái)開供開發(fā)人員編寫 Filter 程序:Filter, FilterCha
2、in, FilterConfiglFilter 程序是一個(gè)實(shí)現(xiàn)了程序是一個(gè)實(shí)現(xiàn)了 Filter 接口的接口的 Java 類類,與 Servlet 程序相似,它由它由 Servlet 容器進(jìn)行調(diào)用和執(zhí)行容器進(jìn)行調(diào)用和執(zhí)行l(wèi)Filter 程序需要在程序需要在 web.xml 文件中進(jìn)行注冊(cè)和設(shè)置它文件中進(jìn)行注冊(cè)和設(shè)置它所能攔截的資源所能攔截的資源:Filter 程序可以攔截 Jsp, Servlet, 靜態(tài)圖片文件和靜態(tài) html 文件高級(jí)軟件人才實(shí)作培訓(xùn)專家高級(jí)軟件人才實(shí)作培訓(xùn)專家! !北京傳智播客教育 Filter 的過(guò)濾過(guò)程高級(jí)軟件人才實(shí)作培訓(xùn)專家高級(jí)軟件人才實(shí)作培訓(xùn)專家! !北京傳智播客教
3、育 Filter 的基本工作原理l當(dāng)在 web.xml 中注冊(cè)了一個(gè) Filter 來(lái)對(duì)某個(gè) Servlet 程序進(jìn)行攔截處理時(shí),這個(gè) Filter 就成了 Servlet 容器與該 Servlet 程序的通信線路上的一道關(guān)卡,該 Filter 可以對(duì)可以對(duì) Servlet 容器發(fā)送給容器發(fā)送給 Servlet 程序的請(qǐng)求和程序的請(qǐng)求和 Servlet 程序回送給程序回送給 Servlet 容器的相應(yīng)進(jìn)行攔截,容器的相應(yīng)進(jìn)行攔截,可以決定是否將請(qǐng)求繼續(xù)傳遞給可以決定是否將請(qǐng)求繼續(xù)傳遞給 Servlet 程序,以及對(duì)請(qǐng)求和相程序,以及對(duì)請(qǐng)求和相應(yīng)信息是否進(jìn)行修改應(yīng)信息是否進(jìn)行修改l在一個(gè) web
4、 應(yīng)用程序中可以注冊(cè)多個(gè) Filter 程序,每個(gè) Filter 程序都可以對(duì)一個(gè)或一組 Servlet 程序進(jìn)行攔截。l若有多個(gè) Filter 程序?qū)δ硞€(gè) Servlet 程序的訪問(wèn)過(guò)程進(jìn)行攔截,當(dāng)針對(duì)該 Servlet 的訪問(wèn)請(qǐng)求到達(dá)時(shí),web 容器將把這多個(gè) Filter 程序組合成一個(gè) Filter 鏈鏈(過(guò)濾器鏈)。Filter 鏈中各個(gè)鏈中各個(gè) Filter 的攔截的攔截順序與它們?cè)趹?yīng)用程序的順序與它們?cè)趹?yīng)用程序的 web.xml 中中映射映射的順序一致的順序一致高級(jí)軟件人才實(shí)作培訓(xùn)專家高級(jí)軟件人才實(shí)作培訓(xùn)專家! !北京傳智播客教育 Filter 接口linit(FilterCon
5、fig filterConfig)throws ServletException:在 web 應(yīng)用程序啟動(dòng)時(shí),web 服務(wù)器將根據(jù) web.xml 文件中的配置信息來(lái)創(chuàng)建每個(gè)注冊(cè)的 Filter 實(shí)例對(duì)象,并將其保存在服務(wù)器的內(nèi)存中。Web容器創(chuàng)建容器創(chuàng)建 Filter 對(duì)象實(shí)例后,將立即調(diào)用該對(duì)象實(shí)例后,將立即調(diào)用該 Filter 對(duì)象的對(duì)象的 init 方法方法。Init 方法在方法在 Filter 生命周期中僅執(zhí)行一次生命周期中僅執(zhí)行一次,web 容器在調(diào)用容器在調(diào)用 init 方法時(shí),會(huì)傳遞一個(gè)包含方法時(shí),會(huì)傳遞一個(gè)包含 Filter 的配置和的配置和運(yùn)行環(huán)境的運(yùn)行環(huán)境的 Filter
6、Config 對(duì)象對(duì)象(FilterConfig的用法和ServletConfig類似)。利用FilterConfig對(duì)象可以得到ServletContext對(duì)象,以及部署描述符中配置的過(guò)濾器的初始化參數(shù)。在這個(gè)方法中,可以拋出ServletException異常,通知容器該過(guò)濾器不能正常工作。ldestroy():在Web容器卸載 Filter 對(duì)象之前被調(diào)用。該方法在Filter的生命周期中僅執(zhí)行一次。在這個(gè)方法中,可以釋放過(guò)濾器使用的資源。l與開發(fā)Servlet不同的是,F(xiàn)ilter接口并沒(méi)有相應(yīng)的實(shí)現(xiàn)類可供繼承,要開發(fā)過(guò)濾器,只能直接實(shí)現(xiàn)Filter接口。高級(jí)軟件人才實(shí)作培訓(xùn)專家高級(jí)軟
7、件人才實(shí)作培訓(xùn)專家! !北京傳智播客教育 Filter 接口ldoFilter(ServletRequest request,ServletResponse response, FilterChain chain)throws java.io.IOException,ServletException: doFilter()方法類似于Servlet接口的service()方法。當(dāng)客戶端請(qǐng)求目當(dāng)客戶端請(qǐng)求目標(biāo)資源的時(shí)候,容器就會(huì)調(diào)用與這個(gè)目標(biāo)資源相關(guān)聯(lián)的過(guò)濾器的標(biāo)資源的時(shí)候,容器就會(huì)調(diào)用與這個(gè)目標(biāo)資源相關(guān)聯(lián)的過(guò)濾器的doFilter()方法方法。其中參數(shù) request, response 為 w
8、eb 容器或 Filter 鏈的上一個(gè) Filter 傳遞過(guò)來(lái)的請(qǐng)求和相應(yīng)對(duì)象;參數(shù)參數(shù) chain 為代表為代表當(dāng)前當(dāng)前 Filter 鏈的對(duì)象,在特定的操作完成后鏈的對(duì)象,在特定的操作完成后,可以可以在當(dāng)前在當(dāng)前 Filter 對(duì)對(duì)象的象的 doFilter 方法內(nèi)部需要調(diào)用方法內(nèi)部需要調(diào)用 FilterChain 對(duì)象的對(duì)象的 chain.doFilter(request,response)方法才能把請(qǐng)求交付給方法才能把請(qǐng)求交付給 Filter 鏈中的下一個(gè)鏈中的下一個(gè) Filter 或者目標(biāo)或者目標(biāo) Servlet 程序去處理,程序去處理,也可以直接向客戶端返回響應(yīng)信息,或者利用Req
9、uestDispatcher的forward()和include()方法,以及HttpServletResponse的sendRedirect()方法將請(qǐng)求轉(zhuǎn)向到其他資源。這個(gè)方法的請(qǐng)求和響應(yīng)參數(shù)的類型是ServletRequest和ServletResponse,也就是說(shuō),過(guò)濾器的使用并不依賴于具體的協(xié)議。高級(jí)軟件人才實(shí)作培訓(xùn)專家高級(jí)軟件人才實(shí)作培訓(xùn)專家! !北京傳智播客教育 FilterChain接口:lFilterChain接口:代表當(dāng)前代表當(dāng)前 Filter 鏈的對(duì)象鏈的對(duì)象。由容器實(shí)現(xiàn),容器將其實(shí)例作為參數(shù)傳入過(guò)濾器對(duì)象的doFilter()方法中。過(guò)濾器對(duì)象使用過(guò)濾器對(duì)象使用Fil
10、terChain對(duì)象對(duì)象調(diào)用過(guò)濾器鏈中的下一個(gè)過(guò)濾器調(diào)用過(guò)濾器鏈中的下一個(gè)過(guò)濾器,如果該過(guò)濾器是鏈中最后一個(gè)過(guò)濾器,那么將調(diào)用目標(biāo)資源。ldoFilter(ServletRequest request,ServletResponse response)throws java.io.IOException:調(diào)用該方法將使過(guò)濾器鏈中的下一個(gè)過(guò)濾器被調(diào)用。如果是最后一個(gè)過(guò)濾器,會(huì)調(diào)用目標(biāo)資源。高級(jí)軟件人才實(shí)作培訓(xùn)專家高級(jí)軟件人才實(shí)作培訓(xùn)專家! !北京傳智播客教育 FilterConfig接口ljavax.servlet.FilterConfig接口:該接口類似于ServletConfig接口,由容器
11、實(shí)現(xiàn)。Servlet規(guī)范將代表規(guī)范將代表 ServletContext 對(duì)象和對(duì)象和 Filter 的配置參數(shù)信息都封裝在的配置參數(shù)信息都封裝在該對(duì)象中。該對(duì)象中。Servlet 容器將其作為參數(shù)傳入過(guò)濾器對(duì)象的init()方法中。lString getFilterName():得到描述符中指定的過(guò)濾器的名字。lString getInitParameter(String name): 返回在部署描述中指定的名字為name的初始化參數(shù)的值。如果不存在返回null.l Enumeration getInitParameterNames():返回過(guò)濾器的所有初始化參數(shù)的名字的枚舉集合。lpubli
12、c ServletContext getServletContext():返回Servlet上下文對(duì)象的引用。高級(jí)軟件人才實(shí)作培訓(xùn)專家高級(jí)軟件人才實(shí)作培訓(xùn)專家! !北京傳智播客教育 過(guò)濾器的部署l在實(shí)現(xiàn)一個(gè)過(guò)濾器后,需要在 web.xml 中進(jìn)行注冊(cè)和設(shè)置它所能攔截的資源。這可以通過(guò)和元素來(lái)完成的。高級(jí)軟件人才實(shí)作培訓(xùn)專家高級(jí)軟件人才實(shí)作培訓(xùn)專家! !北京傳智播客教育 元素(注冊(cè)Filter)l元素用于在Web應(yīng)用程序中注冊(cè)一個(gè)過(guò)濾器。l在元素內(nèi)用于為過(guò)濾器指定一個(gè)名字,該元素的內(nèi)容不能為空。元素用于指定過(guò)濾器的完整的限定類名。元素用于為過(guò)濾器指定初始化參數(shù),它的子元素指定參數(shù)的名字,指定參數(shù)
13、的值。在過(guò)濾器中,可以使用FilterConfig接口對(duì)象來(lái)訪問(wèn)初始化參數(shù)。高級(jí)軟件人才實(shí)作培訓(xùn)專家高級(jí)軟件人才實(shí)作培訓(xùn)專家! !北京傳智播客教育 元素(注冊(cè)Filter) testFitler org.test.TestFiter word_file /WEB-INF/word.txt lServlet容器對(duì)部署描述符中聲明的每一個(gè)過(guò)濾器,只創(chuàng)建一個(gè)實(shí)例。與Servlet類似,容器將在同一個(gè)過(guò)濾器實(shí)例上運(yùn)行多個(gè)線程來(lái)同時(shí)為多個(gè)請(qǐng)求服務(wù),因此,開發(fā)過(guò)濾器時(shí),也要注意線程安全的問(wèn)題。高級(jí)軟件人才實(shí)作培訓(xùn)專家高級(jí)軟件人才實(shí)作培訓(xùn)專家! !北京傳智播客教育 映射 Filterl元素用于設(shè)置一個(gè) Fi
14、lter 所負(fù)責(zé)攔截的資源。一個(gè)Filter攔截的資源可通過(guò)兩種方式來(lái)指定:Servlet 名稱和資源訪問(wèn)的請(qǐng)求路徑( url樣式)子元素用于設(shè)置filter的注冊(cè)名稱。該值必須是在元素中聲明過(guò)的過(guò)濾器的名字設(shè)置 filter 所攔截的請(qǐng)求路徑(過(guò)濾器關(guān)聯(lián)的URL樣式)指定過(guò)濾器所攔截的Servlet名稱。指定過(guò)濾器所攔截的資源被指定過(guò)濾器所攔截的資源被 Servlet 容器容器調(diào)用的方式調(diào)用的方式,可以是REQUEST,INCLUDE,FORWARD和ERROR之一,默認(rèn)REQUEST. 可以設(shè)置多個(gè)可以設(shè)置多個(gè) 子元素用來(lái)指定子元素用來(lái)指定 Filter 對(duì)資源的多種調(diào)對(duì)資源的多種調(diào)用方式
15、進(jìn)行攔截用方式進(jìn)行攔截高級(jí)軟件人才實(shí)作培訓(xùn)專家高級(jí)軟件人才實(shí)作培訓(xùn)專家! !北京傳智播客教育 映射 Filterl 子元素可以設(shè)置的值及其意義:REQUEST:當(dāng)用戶直接訪問(wèn)頁(yè)面時(shí),Web容器將會(huì)調(diào)用過(guò)濾器。如果目標(biāo)資源是通過(guò)RequestDispatcher的include()或forward()方法訪問(wèn)時(shí),那么該過(guò)濾器就不會(huì)被調(diào)用。INCLUDE:如果目標(biāo)資源是通過(guò)RequestDispatcher的include()方法訪問(wèn)時(shí),那么該過(guò)濾器將被調(diào)用。除此之外,該過(guò)濾器不會(huì)被調(diào)用。FORWARD:如果目標(biāo)資源是通過(guò)RequestDispatcher的forward()方法訪問(wèn)時(shí),那么該過(guò)濾
16、器將被調(diào)用,除此之外,該過(guò)濾器不會(huì)被調(diào)用。ERROR:如果目標(biāo)資源是通過(guò)聲明式異常處理機(jī)制調(diào)用時(shí),那么該過(guò)濾器將被調(diào)用。除此之外,過(guò)濾器不會(huì)被調(diào)用。高級(jí)軟件人才實(shí)作培訓(xùn)專家高級(jí)軟件人才實(shí)作培訓(xùn)專家! !北京傳智播客教育 映射 Filter testFilter /index.jsp REQUEST FORWARD testFilter /test.jsp高級(jí)軟件人才實(shí)作培訓(xùn)專家高級(jí)軟件人才實(shí)作培訓(xùn)專家! !北京傳智播客教育 映射 Filterl在同一個(gè) web.xml 文件中可以為同一個(gè) Filter 設(shè)置多個(gè)映射。若一個(gè) Filter 鏈中多次出現(xiàn)了同一個(gè) Filter 程序,這個(gè) Filt
17、er 程序的攔截處理過(guò)程將被多次執(zhí)行高級(jí)軟件人才實(shí)作培訓(xùn)專家高級(jí)軟件人才實(shí)作培訓(xùn)專家! !北京傳智播客教育 典型應(yīng)用1:l使瀏覽器不緩存頁(yè)面的過(guò)濾器:有 3 個(gè) HTTP 響應(yīng)頭字段都可以禁止瀏覽器緩存當(dāng)前頁(yè)面,它們?cè)?Servlet 中的示例代碼如下:response.setDateHeader(Expires,-1);response.setDateHeader(Expires,-1);response.setHeader(Cache-Control,no-cacheresponse.setHeader(Cache-Control,no-cache););response.setHeade
18、r(Pragma,noresponse.setHeader(Pragma,no-cache);-cache);并不是所有的瀏覽器都能完全支持上面的三個(gè)響應(yīng)頭,因此最好是同時(shí)使用上面的三個(gè)響應(yīng)頭高級(jí)軟件人才實(shí)作培訓(xùn)專家高級(jí)軟件人才實(shí)作培訓(xùn)專家! !北京傳智播客教育 典型應(yīng)用2:l字符編碼的過(guò)濾器通過(guò)配置參數(shù)encoding指明使用何種字符編碼,以處理Html Form請(qǐng)求參數(shù)的中文問(wèn)題高級(jí)軟件人才實(shí)作培訓(xùn)專家高級(jí)軟件人才實(shí)作培訓(xùn)專家! !北京傳智播客教育 典型應(yīng)用3:l檢測(cè)用戶是否登陸的過(guò)濾器:情景:系統(tǒng)中的某些頁(yè)面只有在正常登陸后才可以使用,用戶請(qǐng)求這些頁(yè)面時(shí)要檢查 session 中有無(wú)該用
19、戶信息,但在所有必要的頁(yè)面加上session的判斷相當(dāng)麻煩的事情解決方案:編寫一個(gè)用于檢測(cè)用戶是否登陸的過(guò)濾器,如果用戶未登錄,則重定向到指的登錄頁(yè)面要求:需檢查的在 Session 中保存的關(guān)鍵字; 如果用戶未登錄,需重定向到指定的頁(yè)面(URL不包括 ContextPath); 不做檢查的URL列表(以分號(hào)分開,并且 URL 中不包括 ContextPath)都要采取可配置的方式高級(jí)軟件人才實(shí)作培訓(xùn)專家高級(jí)軟件人才實(shí)作培訓(xùn)專家! !北京傳智播客教育 典型應(yīng)用4:l利用Filter限制用戶瀏覽權(quán)限 高級(jí)軟件人才實(shí)作培訓(xùn)專家高級(jí)軟件人才實(shí)作培訓(xùn)專家! !北京傳智播客教育 裝飾 HttpServl
20、etRequest 對(duì)象 l需求:在 HttpServletRequest 對(duì)象到達(dá) Servlet 之前把用戶輸入的多余空格都去掉l情景:因?yàn)?HttpServletRequest 對(duì)象里的請(qǐng)求參數(shù)都實(shí)際包含在 java.util.Map 對(duì)象里,而Map是不允許修改的,所以包含在 HttpServletRequest 對(duì)象里的請(qǐng)求參數(shù)不能被修改l解決方案:采取 Decorator(裝飾器)模式高級(jí)軟件人才實(shí)作培訓(xùn)專家高級(jí)軟件人才實(shí)作培訓(xùn)專家! !北京傳智播客教育 Decorator 模式l因?yàn)槔^承的關(guān)系,當(dāng)需要改變某個(gè)對(duì)象的行為時(shí),只須擴(kuò)展這個(gè)對(duì)象所屬的類并重寫其有關(guān)的方法就可以達(dá)到目的。
21、但是,當(dāng)想要改變其行為的對(duì)象是由應(yīng)用當(dāng)想要改變其行為的對(duì)象是由應(yīng)用程序里的另一個(gè)子系統(tǒng)程序里的另一個(gè)子系統(tǒng)(例如:一個(gè)對(duì)象工廠或是一個(gè)例如:一個(gè)對(duì)象工廠或是一個(gè)Servlet 容器容器)負(fù)責(zé)構(gòu)造,繼承機(jī)制將無(wú)能為力負(fù)責(zé)構(gòu)造,繼承機(jī)制將無(wú)能為力高級(jí)軟件人才實(shí)作培訓(xùn)專家高級(jí)軟件人才實(shí)作培訓(xùn)專家! !北京傳智播客教育 Decorator 模式-情景l(fā)已知:Messager 類的定義(可以從它派生處一個(gè)之類);Messager 對(duì)象總是來(lái)自一個(gè)對(duì)象工廠(MessagerFactory),該工廠可以對(duì)它創(chuàng)建的每一個(gè) Messager 對(duì)象進(jìn)行初始化-通過(guò)調(diào)用 getMessage() 方法而獲得的 me
22、ssage 屬性也不例外(即不能對(duì) Messager 對(duì)象進(jìn)行初始化)l假設(shè):需要使用 Messager 類的 getMessage() 方法。有一個(gè)Util的使用工具類,該類中有如下方法: public static void broadcast(Message messager) System.out.println(messager.getMessage(); 高級(jí)軟件人才實(shí)作培訓(xùn)專家高級(jí)軟件人才實(shí)作培訓(xùn)專家! !北京傳智播客教育 Decorator 模式-需求,方案l需求:讓 broadcast 方法打印的字母都是大寫字母l方案:從 Messager 類派生一個(gè)子類,把子類對(duì)象傳遞給
23、broadcast 方法。因?yàn)橹挥袑?duì)象工廠知道如何初始化 Messager 對(duì)象,所以該方案無(wú)意義lDecorator 模式:從 Messager 類派生一個(gè)子類 MessagerDecorator,把子類對(duì)象傳遞給 broadcast 方法在 MessagerDecorator 類里實(shí)現(xiàn)構(gòu)造器:接受一個(gè) Messager 對(duì)象作為輸入?yún)?shù),而這個(gè) Messager 就是想要裝飾的對(duì)象:public MessagerDecorator(Messager messager)重寫 getMessage 方法,讓重寫的方法用大寫字母來(lái)返回 message 屬性高級(jí)軟件人才實(shí)作培訓(xùn)專家高級(jí)軟件人才實(shí)作培訓(xùn)專家! !北京傳智播客教育 HttpS
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 兒童專注力提升營(yíng)養(yǎng)益智計(jì)劃
- 茶葉加工廠實(shí)習(xí)總結(jié)范文
- 深化設(shè)計(jì)供應(yīng)鏈協(xié)調(diào)職責(zé)
- 保險(xiǎn)行業(yè)域名購(gòu)買合同范文
- 部編版新人教版一年級(jí)語(yǔ)文上冊(cè)課程計(jì)劃
- 八年級(jí)上冊(cè)地理教學(xué)課件制作計(jì)劃
- 冷藏運(yùn)輸公司簡(jiǎn)介范文
- 印刷材料運(yùn)輸、包裝及進(jìn)場(chǎng)質(zhì)量保證措施
- 2025學(xué)校紅十字會(huì)健康體檢組織計(jì)劃
- EPC工程總承包現(xiàn)場(chǎng)管理職責(zé)
- 四川省成都市蓉城聯(lián)盟2024-2025學(xué)年高一下學(xué)期6月期末考試物理試題(含答案)
- DLT 5035-2016 發(fā)電廠供暖通風(fēng)與空氣調(diào)節(jié)設(shè)計(jì)規(guī)范
- 2024年廣東省中考生物+地理試卷(含答案)
- 肺栓塞病人護(hù)理查房PPT課件
- 高中心理健康第三篇人際交往:我的人際關(guān)系圈教學(xué)設(shè)計(jì)教案
- 室外供熱管網(wǎng)設(shè)計(jì)計(jì)算書案例
- 旋轉(zhuǎn)型灌裝機(jī)設(shè)計(jì)說(shuō)明書
- 二年級(jí)北師大版語(yǔ)文下冊(cè)形近字專項(xiàng)復(fù)習(xí)含答案
- GB4053.4-1983固定式工業(yè)鋼平臺(tái)
- 2×1000MW高效清潔燃煤發(fā)電項(xiàng)目建議書寫作模板-
- 熱型連鑄銅合金工藝
評(píng)論
0/150
提交評(píng)論