




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
第3章SpringBoot的Web應用支持《SpringBoot企業(yè)級開發(fā)教程(第2版)》學習目標/Target了解使用SpringBean注冊JavaWeb三大組件,能夠簡述使用SpringBean注冊JavaWeb三大組件的步驟了解使用RegistrationBean注冊JavaWeb三大組件,能夠簡述使用RegistrationBean注冊JavaWeb三大組件的步驟了解使用注解掃描注冊JavaWeb三大組件,能夠簡述使用注解掃描注冊JavaWeb三大組件的步驟了解SpringMVC自動配置的特性,能夠說出SpringMVC自動配置的特性學習目標/Target掌握自定義SpringMVC配置,能夠自定義配置SpringMVC中的靜態(tài)資源映射、視圖控制器、攔截器掌握文件上傳,能夠在SpringBoot項目中實現(xiàn)文件上傳熟悉SpringBoot異常處理自動配置原理,能夠說出SpringBoot異常處理自動配置原理掌握SpringBoot自定義異常處理,能夠在SpringBoot項目中自定義異常處理章節(jié)概述/Summary通常在Web開發(fā)中,會涉及到靜態(tài)資源的訪問支持、視圖解析器的配置、轉(zhuǎn)換器和格式化器的定制、文件上傳等功能,甚至還需要考慮與Web服務器關聯(lián)的JavaWeb三大組件的定制。SpringBoot框架支持整合一些常用Web框架來實現(xiàn)Web開發(fā),并默認支持Web開發(fā)中的一些通用功能。下面將對SpringBoot的Web應用支持進行講解。目錄/Contents3.13.2注冊JavaWeb三大組件SpringBoot管理SpringMVC3.3文件上傳3.4異常處理注冊JavaWeb三大組件3.13.1
注冊JavaWeb三大組件傳統(tǒng)Web應用項目最常用的三大組件有Servlet、Filter和Listener。使用這些組件時需要在項目的web.xml文件中進行配置,或者使用相應的注解進行標注。SpringBoot項目默認沒有web.xml文件,同時默認情況下SpringBoot項目不能自動識別到這三個組件的相關注解??梢允褂肧pringBean、RegistrationBean、注解掃描的方式注冊JavaWeb三大組件。3.1.1
使用SpringBean注冊JavaWeb三大組件先定一個小目標!
先定一個小目標!了解使用SpringBean注冊JavaWeb三大組件,能夠簡述使用SpringBean注冊JavaWeb三大組件的步驟3.1.1
使用SpringBean注冊JavaWeb三大組件在SpringBoot項目中,會自動將Spring容器中的Servlet、Filter、Listener實例注冊為Web服務器中對應的組件。因此,可以將自定義的JavaWeb三大組件作為Bean添加到Spring容器中,以實現(xiàn)組件的注冊。使用SpringBean注冊Servlet時,需要自定義兩個及以上的Servlet,Servlet對應的映射地址為“Bean名稱+/”。Filter的映射地址默認為“/*”。3.1.1
使用SpringBean注冊JavaWeb三大組件下面通過案例演示使用SpringBean注冊JavaWeb三大組件。文件3-1
FirstServlet.java文件3-2
SecondServlet.java文件3-3
MyFilter.java文件3-4
MyListener.java源代碼(1)創(chuàng)建自定義原生組件。創(chuàng)建SpringBoot項目chapter03,在項目的java文件夾下創(chuàng)建類包com.itheima.chapter03.web,并在類包下創(chuàng)建自定義的Servlet、Filter、Listener,具體如文件3-1~文件3-4所示。3.1.1
使用SpringBean注冊JavaWeb三大組件文件3-5WebConfigure.java源代碼(2)創(chuàng)建組件配置類。在項目的java文件夾下創(chuàng)建類包com.itheima.chapter03.config,并在類包下創(chuàng)建組件配置類WebConfigure,在該類中創(chuàng)建4個方法,分別返回文件3-1~文件3-4中類的實例交由Spring管理,具體如文件3-5所示。3.1.1
使用SpringBean注冊JavaWeb三大組件(3)測試程序效果。運行項目的啟動類,控制臺輸出程序啟動信息。3.1.1
使用SpringBean注冊JavaWeb三大組件在瀏覽器中訪問http://localhost:8080/firstServlet/,控制臺輸出訪問的結(jié)果信息。3.1.2
使用RegistrationBean注冊JavaWeb三大組件先定一個小目標!
先定一個小目標!了解使用RegistrationBean注冊JavaWeb三大組件,能夠簡述使用RegistrationBean注冊JavaWeb三大組件的步驟3.1.2
使用RegistrationBean注冊JavaWeb三大組件使用SpringBean注冊JavaWeb三大組件時,如果容器中只有一個自定義Servlet,則無法使用Bean的名稱作為映射路徑,而Filter默認只使用“\*”的映射地址。為解決此問題SpringBoot提供了更為靈活的注冊方法,可以在配置類中使用RegistrationBean來注冊原生Web組件。RegistrationBean是個抽象類,SpringBoot提供了三個RegistrationBean的實現(xiàn)類:ServletRegistrationBean、FilterRegistrationBean、ServletListenerRegistrationBean,這三個類分別用來注冊Servlet、Filter和Listener,通過這三個類開發(fā)者可以獲得自定義映射路徑等更多的控制權(quán)。3.1.2
使用RegistrationBean注冊JavaWeb三大組件下面通過案例演示使用RegistrationBean注冊JavaWeb三大組件。文件3-6WebConfigure.java源代碼(1)修改配置類。將文件3-5中WebConfigure類原有的方法進行注釋,將自定義的Servlet、Filter和Listener包裝到對應的RegistrationBean中,并使用@Bean注解將ServletRegistrationBean、FilterRegistrationBean和ServletListenerRegistrationBean注冊到Spring容器中。修改后代碼如文件3-6所示。3.1.2
使用RegistrationBean注冊JavaWeb三大組件(2)測試程序效果。運行項目的啟動類,控制臺輸出項目啟動信息。3.1.2
使用RegistrationBean注冊JavaWeb三大組件在瀏覽器中訪問http://localhost:8080/first,此時控制臺輸出訪問結(jié)果。3.1.2
使用RegistrationBean注冊JavaWeb三大組件在瀏覽器中訪問http://localhost:8080/second,此時控制臺輸出訪問結(jié)果。3.1.3使用注解掃描注冊JavaWeb三大組件先定一個小目標!
先定一個小目標!了解使用注解掃描注冊JavaWeb三大組件,能夠簡述使用注解掃描注冊JavaWeb三大組件的步驟3.1.3使用注解掃描注冊JavaWeb三大組件SpringBoot無法自動識別到@WebServlet、@WebFilter、@WebListener標注的類,但其內(nèi)部可使用嵌入式容器,可以使用@ServletComponentScan掃描標注@WebServlet、@WebFilter和@WebListener的類,并將掃描到的類自動注冊到Spring容器。3.1.3使用注解掃描注冊JavaWeb三大組件下面通過案例演示使用注解掃描注冊JavaWeb三大組件。文件3-7
FirstServlet.java文件3-8
MyFilter.java文件3-9
MyListener.java源代碼(1)使用注解聲明組件。分別使用@WebServlet、@WebFilter、@WebListener標注FirstServlet類、MyFilter類和MyListener類,具體如文件3-7~文件3-9所示。3.1.3使用注解掃描注冊JavaWeb三大組件文件3-10Chapter03Application.java源代碼(2)添加@ServletComponentScan注解。在項目的啟動類上添加@ServletComponentScan注解。具體代碼如文件3-10所示。3.1.3使用注解掃描注冊JavaWeb三大組件(3)測試程序效果。使用掃描組件的方式注釋原生組件不需要其他配置類,因此,先注釋掉文件3-6中的配置類WebConfigure,然后運行項目的啟動類,控制臺輸出項目啟動的信息。3.1.3使用注解掃描注冊JavaWeb三大組件在瀏覽器中訪問http://localhost:8080/first,此時控制臺輸出訪問結(jié)果信息。SpringBoot管理SpringMVC3.23.2
SpringBoot管理SpringMVCSpringBoot真正的核心功能是自動配置和快速整合,通常SpringBoot應用的前端MVC框架依然使用SpringMVC。SpringBoot提供的spring-boot-starter-web啟動器嵌入了SpringMVC的依賴,并為SpringMVC提供了大量自動配置,可以適用于大多數(shù)Web開發(fā)場景。除了使用自動配置所提供的功能,開發(fā)者也可以通過自定義配置類定制SpringMVC的配置。下面分別對SpringMVC自動配置的特性和自定義SpringMVC配置進行講解。3.2.1
SpringMVC自動配置的特性先定一個小目標!
先定一個小目標!了解SpringMVC自動配置的特性,能夠說出SpringMVC自動配置的特性3.2.1
SpringMVC自動配置的特性SpringBoot為SpringMVC提供了自動配置,并在SpringMVC默認功能的基礎上添加了以下特性。(1)引入了視圖解析器
ContentNegotiatingViewResolver和BeanNameViewResolver。(2)為包括WebJars在內(nèi)的靜態(tài)資源提供支持。(3)自動注冊
Converter、GenericConverter和Formatter。(4)支持使用HttpMessageConverters消息轉(zhuǎn)換器。(5)自動注冊MessageCodesResolver。(6)支持靜態(tài)項目首頁index.html。(7)支持定制應用圖標favicon.ico。(8)自動初始化Web數(shù)據(jù)綁定器ConfigurableWebBindingInitializer。3.2.2
自定義SpringMVC配置先定一個小目標!
先定一個小目標!掌握自定義SpringMVC配置,能夠自定義配置SpringMVC中的靜態(tài)資源映射、視圖控制器、攔截器3.2.2
自定義SpringMVC配置在SpringBoot應用中使用SpringMVC時,如果希望在為SpringMVC自動配置提供相關特性的同時,再增加一些自定義的SpringMVC配置,例如添加攔截器、視圖控制器等,可以通過自定義WebMvcConfigurer類型的配置類來實現(xiàn)。下面分別對自定義SpringMVC配置中的配置靜態(tài)資源映射、配置視圖控制器、配置攔截器進行講解。3.2.2
自定義SpringMVC配置1.配置靜態(tài)資源映射通常Web應用中會需要使用靜態(tài)資源,例如,JavaScript文件、CSS文件和HTML文件等。單獨使用SpringMVC時,導入靜態(tài)資源文件后,需要配置靜態(tài)資源的映射,否則無法正常訪問。SpringBoot中提供了默認的靜態(tài)資源映射,當訪問項目中任意的靜態(tài)資源時,SpringBoot會默認從以下路徑中進行查找。(1)classpath:/META-INF/resources/(2)classpath:/resources/(3)classpath:/static/(4)classpath:/public/優(yōu)先級從(1)至(4)依次遞減,SpringBoot會先查找優(yōu)先級高的文件夾,再查找優(yōu)先級低的文件夾。3.2.2
自定義SpringMVC配置1.配置靜態(tài)資源映射在chapter03項目中的
src/main/resources/static和
src/main/resources目錄下分別創(chuàng)建main.html文件和index.html文件,并在項目啟動后分別在瀏覽器中對這兩個靜態(tài)資源進行訪問。3.2.2
自定義SpringMVC配置1.配置靜態(tài)資源映射如果想在項目中訪問非默認靜態(tài)資源文件夾下的資源,可以自定義靜態(tài)資源的映射。自定義靜態(tài)資源的映射可以通過配置類和配置文件2種方式實現(xiàn)。(1)通過配置類實現(xiàn)靜態(tài)資源映射通過配置類實現(xiàn)靜態(tài)資源映射時,配置類需要實現(xiàn)WebMvcConfigurer接口,在重寫WebMvcConfigurer接口的addResourceHandlers()方法中指定資源訪問路徑和資源之間的映射關系。3.2.2
自定義SpringMVC配置1.配置靜態(tài)資源映射(2)通過配置文件實現(xiàn)靜態(tài)資源映射SpringBoot在SpringMVC的自動配置中提供了對應的屬性可以配置靜態(tài)資源訪問路徑和資源的映射。spring:mvc:static-path-pattern:/backend/**web:resources:static-locations:file:E:\idea\SpringBoot\chapter03\src\main\resources\backend用于指定靜態(tài)資源的訪問路徑。用于指定靜態(tài)資源存放的目錄。3.2.2
自定義SpringMVC配置下面以通過配置類實現(xiàn)靜態(tài)資源映射為例,演示配置靜態(tài)資源映射。(1)創(chuàng)建靜態(tài)資源。在chapter03項目中的
src/main/resources目錄下,創(chuàng)建文件夾backend,并在文件夾中創(chuàng)建HTML文件index.html和login.htm。1.配置靜態(tài)資源映射3.2.2
自定義SpringMVC配置1.配置靜態(tài)資源映射文件3-11WebMvcConfig.java源代碼(2)配置靜態(tài)資源映射。在項目chapter03的com.itheima.chapter03.config包下創(chuàng)建配置類WebMvcConfig,該配置類實現(xiàn)WebMvcConfigurer接口,并重寫該接口的方法實現(xiàn)自定義SpringMVC的配置,具體如文件3-11所示。3.2.2
自定義SpringMVC配置1.配置靜態(tài)資源映射(3)測試程序效果。啟動項目,在瀏覽器中訪問backend文件夾下的index.html。3.2.2
自定義SpringMVC配置2.配置視圖控制器使用SpringMVC默認的配置進行開發(fā)時,如果僅操作需要實現(xiàn)無業(yè)務邏輯的頁面跳轉(zhuǎn),也需要創(chuàng)建Controller類,然后定義方法跳轉(zhuǎn)到頁面,操作比較麻煩。對此,可以在視圖控制器中添加自定義的映射,直接將請求映射為視圖。3.2.2
自定義SpringMVC配置2.配置視圖控制器下面通過案例演示在視圖控制器中配置請求和視圖的映射,具體如下。(1)配置視圖控制器映射信息。在文件3-11中重寫WebMvcConfigurer接口的addViewControllers()方法,在該方法中添加訪問路徑和視圖的映射。@OverridepublicvoidaddViewControllers(ViewControllerRegistryregistry){ registry.addViewController("/backend/toLoginPage").setViewName("/backend/login.html"); registry.addViewController("/backend").setViewName("/backend/index.html");}3.2.2
自定義SpringMVC配置2.配置視圖控制器(2)測試程序效果。啟動項目,在瀏覽器中訪問http://localhost:8080/toLoginPage。3.2.2
自定義SpringMVC配置3.配置攔截器攔截器可以根據(jù)請求的URL對請求進行攔截,主要應用于登錄校驗、權(quán)限驗證、亂碼解決、性能監(jiān)控和異常處理等方面。在SpringBoot項目中配置攔截器也非常簡單,只需要定義攔截器和注冊攔截器即可。3.2.2
自定義SpringMVC配置3.配置攔截器文件3-12LoginInterceptor.java源代碼下面通過案例演示在SpringBoot項目中配置攔截器。(1)定義攔截器。在項目chapter03下創(chuàng)建erceptor包,在該包下創(chuàng)建攔截器類,該類實現(xiàn)了HandlerInterceptor接口,并重寫了接口的preHandle()方法,具體如文件3-12所示。3.2.2
自定義SpringMVC配置3.配置攔截器(2)注冊攔截器。在文件3-11中重寫重寫WebMvcConfigurer接口的addInterceptors()方法,在該方法中添加攔截器。@OverridepublicvoidaddInterceptors(InterceptorRegistryregistry){//攔截所有請求,包括靜態(tài)資源文件registry.addInterceptor(newoginInterceptor()).addPathPatterns("/**").excludePathPatterns("/backend/login.html");}3.2.2
自定義SpringMVC配置3.配置攔截器(3)測試程序效果。啟動項目,在瀏覽器中訪問http://localhost:8080/backend/login.html。3.2.2
自定義SpringMVC配置3.配置攔截器在瀏覽器中訪問http://localhost:8080/backend/index.html。3.2.2
自定義SpringMVC配置3.配置攔截器需要說明的是,SpringBoot在整合SpringMVC過程中提供了許多默認自動化配置和特性,開發(fā)者可以通過SpringBoot提供的WebMvcConfigurer接口對MVC功能進行定制和擴展。如果開發(fā)者不想使用SpringBoot整合MVC時提供的一些默認配置,而是想要絕對的自定義管理,那么可以編寫一個@Configuration注解配置類,同時添加@EnableWebMvc注解關閉SpringBoot提供的所有關于MVC功能的默認配置。文件上傳3.33.3
文件上傳先定一個小目標!
先定一個小目標!掌握文件上傳,能夠在SpringBoot項目中實現(xiàn)文件上傳3.3
文件上傳在項目開發(fā)過程中,文件的上傳和下載是比較常見的開發(fā)需求。SpringBoot為SpringMVC的文件上傳同樣提供了自動配置,SpringBoot推薦使用基于Servlet3的文件上傳機制,這樣可直接利用Web服務器內(nèi)部的文件上傳支持,而無須引入第三方JAR包。SpringBoot的文件上傳自動配置主要由MultipartAutoConfiguration類和MultipartProperties類組成,其中MultipartProperties負責加載以“spring.servlet.multipart”開頭的配置屬性,而MultipartAutoConfiguration則根據(jù)MultipartProperties讀取的配置屬性來初始化StandardServletMultipartResolver解析器對象。3.3
文件上傳下面通過案例演示在SpringBoot項目中進行文件上傳,該案例演示的是圖片文件的上傳,圖片上傳后將圖片顯示在上傳頁面,具體如下。(1)設置上傳配置。在chapter03項目的application.yml文件對靜態(tài)資源的映射和文件上傳屬性進行配置。spring:mvc:static-path-pattern:/backend/**web:resources:static-locations:file:E:\idea\SpringBoot\chapter03\src\main\resources\backendservlet:multipart:max-file-size:10MBmax-request-size:50MB單個上傳文件的大小限制3.3
文件上傳(2)創(chuàng)建文件上傳頁面。在項目中的
src/main/resources目錄下創(chuàng)建HTML頁面用于操作文件上傳,具體如文件3-13所示。文件3-13fileupload.html源代碼3.3
文件上傳(3)創(chuàng)建文件上傳控制器類。在項目chapter03的com.itheima.chapter03.controller包下創(chuàng)建控制器類FileController,在該類中處理文件上傳的請求,將上傳的文件存放在指定路徑下,并返回上傳結(jié)果。具體如文件3-14所示。文件3-14FileController.java源代碼3.3
文件上傳(4)程序效果測試。為了方便測試,先將chapter03項目中攔截器相關配置進行注釋,啟動項目,在瀏覽器訪問fileupload.html。3.3
文件上傳在文件上傳頁面中單擊“選擇文件”按鈕,選擇一個后綴名不是jpg的文件,然后單擊“提交”按鈕。3.3
文件上傳再次單擊“選擇文件”按鈕,選擇后綴名為jpg的文件,然后單擊“提交”按鈕。異常處理3.43.4
異常處理在日常的Web開發(fā)中,項目中難免會出現(xiàn)各種異常,為了使客戶端能接收較為友好的提示,通常開發(fā)者會對異常進行統(tǒng)一處理。為了便于開發(fā)者處理異常,SpringBoot通過自動裝配提供了一套默認的異常處理機制,一旦程序中出現(xiàn)了異常,SpringBoot會根據(jù)該機制進行默認的異常處理。除了默認的異常處理,SpringBoot也支持自定義異常處理。下面對SpringBoot中的異常處理進行講解。3.4.1
SpringBoot異常處理自動配置原理先定一個小目標!
先定一個小目標!熟悉SpringBoot異常處理自動配置原理,能夠說出SpringBoot異常處理自動配置原理3.4.1
SpringBoot異常處理自動配置原理SpringBoot通過配置類ErrorMvcAutoConfiguration為異常處理提供了自動配置,該配置類向容器中注入了以下4個組件。ErrorPageCustomizer:錯誤頁面響應規(guī)則類,該組件會在在系統(tǒng)發(fā)生異常后,默認將請求轉(zhuǎn)發(fā)到“/error”。BasicErrorController:錯誤控制器,處理“/error”請求。DefaultErrorViewResolver:默認的錯誤視圖解析器,將異常信息解析到相應的錯誤視圖。DefaultErrorAttributes:錯誤屬性處理類,用于頁面上共享異常信息。3.4.1
SpringBoot異常處理自動配置原理SpringBoot項目中配置了SpringMVC的啟動器后,項目啟動時會加載異常處理的自動配置類ErrorMvcAutoConfiguration,ErrorMvcAutoConfiguration會向容器中注入了一個名為ErrorPageCustomizer的組件,該組件用于定制錯誤頁面的響應規(guī)則。ErrorPageCustomizer類中提供了registerErrorPages()方法用于注冊錯誤頁面的響應規(guī)則。當系統(tǒng)發(fā)生異常后,ErrorPageCustomizer組件會自動生效,并將請求轉(zhuǎn)發(fā)到SpringBoot的異常處理地址,默認為“/error”。1.ErrorPageCustomizer3.4.1
SpringBoot異常處理自動配置原理ErrorMvcAutoConfiguration還向容器中注入了錯誤控制器組件BasicErrorController,BasicErrorController中會對異常處理路徑進行統(tǒng)一映射處理。BasicErrorController提供了errorHtml()和error()方法。其中,errorHtml()方法用于處理請求的MediaType為text/html的請求,并使用錯誤視圖解析器生成包含錯誤頁面地址和頁面內(nèi)容的ModelAndView對象;error()方法用于處理其他的請求,并返回JSON格式的數(shù)據(jù)展示錯誤信息。2.BasicErrorController3.4.1
SpringBoot異常處理自動配置原理ErrorMvcAutoConfiguration加載的同時也會向容器中注入DefaultErrorViewResolver類。當BasicErrorController使用errorHtml()方法處理異常請求時,SpringBoot會獲取容器中所有的ErrorViewResolver(錯誤視圖解析器)對象,并分別調(diào)用resolveErrorView()方法對異常信息進行解析,其中默認錯誤信息解析器為DefaultErrorViewResolver。3.DefaultErrorViewResolver3.4.1
SpringBoot異常處理自動配置原理DefaultErrorViewResolver解析異常信息的步驟如下。①
根據(jù)錯誤狀態(tài)碼,生成對應的錯誤視圖。錯誤視圖的名稱格式為“error/status”,其中,status為錯誤狀態(tài)碼。②
嘗試使用模板引擎解析錯誤視圖。從classpath類路徑的templates/error目錄下查找status.html文件,其中status為錯誤狀態(tài)碼。若模板引擎能夠解析到對應的視圖,則將視圖和數(shù)據(jù)封裝成ModelAndView返回,并結(jié)束整個解析流程。③
如果模板引擎不能正確解析到對應的視圖,則依次從各個靜態(tài)資源文件夾的error文件夾中查找status.html文件,若在靜態(tài)文件夾中找到了該錯誤頁面,則將視圖和數(shù)據(jù)封裝成ModelAndView返回,并結(jié)束整個解析流程。④
如果上述流程都沒有查找到對應的視圖,則使用SpringBoot默認的錯誤頁面作為響應的視圖。3.DefaultErrorViewResolver3.4.1
SpringBoot異常處理自動配置原理DefaultErrorAttributes是SpringBoot的默認錯誤屬性處理類,它可以從請求中獲取異?;蝈e誤信息,并將其封裝為一個Map對象返回。在BasicErrorController處理異常時,會調(diào)用DefaultErrorAttributes的getErrorAttributes()方法獲取錯誤或異常信息,并封裝到Model中,返回到頁面或JSON數(shù)據(jù)中。該Model中主要包含以下屬性。timestamp:時間戳。status:錯誤的狀態(tài)碼。error:錯誤的原因描述。exception:導致請求處理失敗的異常類名。message:錯誤/異常消息。tra
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 介紹節(jié)日活動方案
- 從春天開始親子活動方案
- 倉庫團建活動方案
- 倉鼠獎牌活動方案
- 仙境秋游活動方案
- 代寫策劃活動方案
- 代理團長充值活動方案
- 代言人合影活動方案
- 代駕公司團建活動方案
- 以煙換糖活動方案
- 【MOOC】學術(shù)交流英語-東南大學 中國大學慕課MOOC答案
- 壓力容器安全承諾書
- 汽車廠房布置與規(guī)劃
- 河北農(nóng)業(yè)大學現(xiàn)代科技學院《試驗設計與數(shù)據(jù)處理實驗》2022-2023學年第一學期期末試卷
- 材料力學-山東科技大學中國大學mooc課后章節(jié)答案期末考試題庫2023年
- 《機器人驅(qū)動與運動控制》全套教學課件
- 實驗室共建與共享協(xié)議
- 人教版高中物理必修三期末綜合試題(原卷版和解析版)
- 展覽館室內(nèi)布展施工方案
- 數(shù)據(jù)中心IDC機房運維工程師培訓教材
- 血液透析器課件
評論
0/150
提交評論