SSH框架項(xiàng)目教程課件第4章第一講_第1頁(yè)
SSH框架項(xiàng)目教程課件第4章第一講_第2頁(yè)
SSH框架項(xiàng)目教程課件第4章第一講_第3頁(yè)
SSH框架項(xiàng)目教程課件第4章第一講_第4頁(yè)
SSH框架項(xiàng)目教程課件第4章第一講_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

重慶正大軟件學(xué)院軟件系《MVC框架程序設(shè)計(jì)》電子教案重慶正大軟件學(xué)院軟件系《MVC框架程序設(shè)計(jì)》課程組重慶正大軟件職業(yè)技術(shù)學(xué)院教案(項(xiàng)目類)授課對(duì)象系別軟件系本次課學(xué)時(shí)4學(xué)時(shí)年級(jí)班次大二章節(jié)題目第4章搭建spring框架目的要求(含技能要求)理解Spring框架概念、作用本節(jié)重點(diǎn)理解Spring框架概念、作用本節(jié)難點(diǎn)理解Spring框架概念、作用教學(xué)方法項(xiàng)目教學(xué)法教學(xué)用具機(jī)房、屏幕廣播問題引入通過改造第3章第1節(jié)中的項(xiàng)目,從而引出本次課程。難點(diǎn)與重點(diǎn)講解方法引導(dǎo)、分析、講解、實(shí)作演示本次課小結(jié)課程小結(jié)教后禮記討論、思考題、作業(yè)(含實(shí)訓(xùn)作業(yè))完成本次課的課堂任務(wù)填寫實(shí)驗(yàn)報(bào)告任務(wù)介紹(5分鐘)改造3.1節(jié)的任務(wù),在注冊(cè)入庫(kù)功能的業(yè)務(wù)控制層(action)與業(yè)務(wù)處理層(service)之間引入spring框架。任務(wù)解析(50-60分鐘)搭建spring框架編寫接口新增數(shù)據(jù)訪問層(dao)的實(shí)現(xiàn)類RegisterDaoImpl新增業(yè)務(wù)層(service)的實(shí)現(xiàn)類RegisterServiceImpl改寫控制層(action)的RegisterAction類在spring框架配置文件中增加實(shí)現(xiàn)類的配置詳細(xì)步驟搭建spring框架首先,引入所需的spring框架的jar文件。參照任務(wù)解析中相關(guān)內(nèi)容里spring包的引入。(只需要引入一次)其次,在web.xml文件中加入sping配置(只需一次),關(guān)鍵代碼下:<!--指定spring的配置文件,默認(rèn)從src根目錄尋找配置文件,我們可以通過spring提供的classpath:指定spring的配置文件名--><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:beans.xml</param-value></context-param><!--使用偵聽器對(duì)Spring容器進(jìn)行實(shí)例化--><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>再次,加入Spring初始配置文件(只需一次),關(guān)鍵代碼請(qǐng)參考任務(wù)解析中的相關(guān)內(nèi)容。編寫接口。創(chuàng)建兩個(gè)接口,一個(gè)是action層到service層之間的接口RegisterService,一個(gè)是service到dao層的接口RegisterDao。接口RegisterService參考代碼如下:publicinterfaceRegisterService{ publicvoidregister(Useruser); }接口RegisterDao的參考代碼如下:publicinterfaceRegisterDao{ publicbooleanexecute(Useruser);}新增數(shù)據(jù)訪問層(dao)的RegisterDaoImpl類,參考代碼如下:publicclassRegisterDaoImplimplementsRegisterDao{ publicbooleanexecute(Useruser){ //進(jìn)行入庫(kù)操作 booleanret=true; try{ SessionFactorysessionFactory=newConfiguration().configure().buildSessionFactory(); Sessionsession=sessionFactory.openSession(); session.beginTransaction(); session.persist(user); session.getTransaction().commit(); session.close(); }catch(HibernateExceptione){ e.printStackTrace(); ret=false; } returnret; }}新建業(yè)務(wù)層(service)的RegisterServiceImpl類,關(guān)鍵代碼如下:publicclassRegisterServiceImplimplementsRegisterService{ publicbooleanexecute(Useruser){ //加載spring ApplicationContextact=newClassPathXmlApplicationContext("beans.xml"); //然后調(diào)用dao層的數(shù)據(jù)處理類執(zhí)行數(shù)據(jù)處理操作 RegisterDaoregisterdao=(RegisterDao)act.getBean("registerdao"); returnregisterdao.execute(user); }}改寫控制層(action)的業(yè)務(wù)控制類RegisterAction的regist方法,關(guān)鍵代碼如下:publicStringregist(){ //業(yè)務(wù)控制器 //加載spring ApplicationContextact=newClassPathXmlApplicationContext("beans.xml"); //調(diào)用業(yè)務(wù)處理類完成業(yè)務(wù)處理,并得到業(yè)務(wù)處理的結(jié)果,在調(diào)用的時(shí)候需要傳數(shù)據(jù) RegisterServiceregister=(RegisterService)act.getBean("register"); //數(shù)據(jù)準(zhǔn)備:數(shù)據(jù)復(fù)制給實(shí)體類的對(duì)象user Useruser=newUser(); user.setName(name); user.setUserName(username); user.setPassword(pass); user.setSex(sex); user.setProvince(province); user.setAge(age); user.setBirth(birth); user.setMobile(mobile); user.setEmail(email); Stringtmp=""; if(love!=null){ for(Stringlo:love){ tmp+=lo+""; } } user.setHobbies(tmp); //調(diào)用業(yè)務(wù)處理類相關(guān)方法執(zhí)行后得到結(jié)果 booleanret=register.execute(user); //根據(jù)結(jié)果返回 if(ret){ return"success"; } else{ return"error"; }}在spring框架配置文件中增加實(shí)現(xiàn)類的配置關(guān)鍵代碼如下:<beanid="register"class="com.zdsoft.service.impl.RegisterServiceImpl"/><beanid="registerdao"class="com.zdsoft.dao.impl.RegisterDaoImpl"/>注:本任務(wù)的實(shí)現(xiàn)類存放在com.zdsoft.service.impl包中,接口存放在com.zdsoft.service包中根據(jù)任務(wù)提出問題(45-55分鐘)什么是srping框架?為什么要使用spring框架?如何使用spring框架?問題解析(45-55分鐘)關(guān)于springSpring是一個(gè)開源的控制反轉(zhuǎn)(InversionofControl,IoC)和面向切面編程(AOP)的輕量級(jí)容器框架,其主要目的是簡(jiǎn)化軟件開發(fā)。Spring框架包含許多特性,并被很好地組織在六個(gè)模塊中(如圖4.1-1a)。圖4.1-1aSpring六個(gè)模塊Core封裝包是框架的最基礎(chǔ)部分,提供IoC和依賴注入特性。這里的基礎(chǔ)概念是BeanFactory,它提供對(duì)Factory模式的經(jīng)典實(shí)現(xiàn)來(lái)消除對(duì)程序性單例模式的需要,并真正地允許你從程序邏輯中分離出依賴關(guān)系和配置。\o"3.8.

TheApplicationContext"Context(上下文)封裝包構(gòu)筑于\o"3.1.

簡(jiǎn)介"Core封裝包的堅(jiān)固基礎(chǔ)上:它提供了用一種框架風(fēng)格的方式來(lái)訪問對(duì)象,有些像JNDI注冊(cè)表。Context封裝包繼承了beans包的功能,還增加了國(guó)際化(I18N)(用于規(guī)范resourcebundle),事件傳播,資源裝載,以及透明創(chuàng)建上下文,例如通過servlet容器。\o"10.1.

簡(jiǎn)介"DAO提供了JDBC的抽象層,它可消除冗長(zhǎng)的JDBC編碼和解析數(shù)據(jù)庫(kù)廠商特有的錯(cuò)誤代碼。并且,\o"11.1.

簡(jiǎn)介"JDBC封裝包還提供了一種比編程性更好的聲明性事務(wù)管理方法,不僅僅是實(shí)現(xiàn)了特定接口,而且對(duì)所有的POJOs(plainoldJavaobjects)都適用。\o"12.1.

簡(jiǎn)介"ORM封裝包提供了常用的“對(duì)象/關(guān)系”映射APIs的集成層。其中包括\o"12.6.

JPA"JPA、\o"12.3.

JDO"JDO、\o"12.2.

Hibernate"Hibernate和\o"12.5.

iBATISSQLMaps"iBatis。利用ORM封裝包,可以混合使用所有Spring提供的特性進(jìn)行“對(duì)象/關(guān)系”映射,如前邊提到的簡(jiǎn)單聲明性事務(wù)管理。Spring的\o"6.1.

簡(jiǎn)介"AOP封裝包提供了符合AOPAlliance規(guī)范的面向方面的編程(aspect-orientedprogramming)實(shí)現(xiàn),讓你可以定義,例如方法攔截器(method-interceptors)和切點(diǎn)(pointcuts),從邏輯上講,從而減弱代碼的功能耦合,清晰的被分離開。而且,利用source-level的元數(shù)據(jù)功能,還可以將各種行為信息合并到你的代碼中,這有點(diǎn)象.Net的attribute的概念。Spring中的Web包提供了基礎(chǔ)的針對(duì)Web開發(fā)的集成特性,例如多方文件上傳,利用Servletlisteners進(jìn)行IoC容器初始化和針對(duì)Web的applicationcontext。當(dāng)與WebWork或Struts一起使用Spring時(shí),這個(gè)包使Spring可與其他框架結(jié)合。Spring中的\o"13.1.

概述"MVC封裝包提供了Web應(yīng)用的Model-View-Controller(MVC)實(shí)現(xiàn)。Spring的MVC框架并不是僅僅提供一種傳統(tǒng)的實(shí)現(xiàn),它提供了一種清晰的分離模型,在領(lǐng)域模型代碼和webform之間。并且,還可以借助Spring框架的其他特性。術(shù)語(yǔ)理解——容器Spring是一個(gè)容器,因?yàn)樗⑶夜芾響?yīng)用對(duì)象的生命周期和配置。你可以通過配置來(lái)設(shè)定你的Bean是單一實(shí)例,還是每次請(qǐng)求產(chǎn)生一個(gè)實(shí)例,并且設(shè)定它們之間的關(guān)聯(lián)關(guān)系。Spring是小容器,有別于傳統(tǒng)的重量級(jí)EJB容器,EJB容器通常很大,很笨重。術(shù)語(yǔ)理解——框架搭積木方式組合:Spring實(shí)現(xiàn)了使用簡(jiǎn)單的組件配置組合成一個(gè)復(fù)雜的應(yīng)用。積木是xml文件:在Spring中,應(yīng)用中的對(duì)象是通過XML文件配置組合起來(lái)的,并且Spring提供了很多基礎(chǔ)功能(事務(wù)管理、持久層集成等),這使開發(fā)人員能專注于應(yīng)用邏輯。術(shù)語(yǔ)理解——控制反轉(zhuǎn)InversionofControl,IoC我們剖析一個(gè)現(xiàn)實(shí)例子來(lái)說明該術(shù)語(yǔ)的含義?!纠?.1-1a】使用vcd機(jī)看一部有兩張碟的影片,看完一張碟后vcd機(jī)停下來(lái)了,要看下一張,該如何操作?操作步驟如下:觀眾打開vcd的光碟盒;取出第一張碟;換第二張碟進(jìn)去;繼續(xù)播放vcd機(jī)。分析例子:放映過程中的控制權(quán)變化:vcd擁有控制權(quán):vcd放映第一張碟。vcd失去控制權(quán):vcd放映完第一張碟,停止。觀眾獲得控制權(quán):換碟。觀眾失去控制權(quán):換碟完畢,讓vcd播放。vcd再次擁有控制權(quán):放映第二張碟。假定:放映過程中vcd機(jī)的控制權(quán)為內(nèi)部控制權(quán)(主控制權(quán));觀眾的控制權(quán)為外部控制權(quán)(輔控制權(quán))。結(jié)論:例子中的控制權(quán)從vcd機(jī)(內(nèi)部控制權(quán))到觀眾(外部控制權(quán))的轉(zhuǎn)移用專業(yè)術(shù)語(yǔ)描述就是控制反轉(zhuǎn)。術(shù)語(yǔ)理解——依賴注入DependencyInjection,DI剖析例子4.1-1a,研究它的操作步驟,分析其放映過程中影碟機(jī)播放內(nèi)容的變化:播放內(nèi)容第一張碟:vcd放映第一張碟;播放內(nèi)容第一張碟:vcd放映完第一張碟,停止;觀眾獲得控制權(quán):換碟;觀眾失去控制權(quán):換碟完畢,讓vcd播放;播放內(nèi)容第二張碟:放映第二張碟。依賴:放映過程中vcd機(jī)只能放映vcd兼容光碟,其他類型是不行的(比如U盤,磁盤、硬盤是不能播放的)。結(jié)論:例子中vcd機(jī)播放的內(nèi)容由觀眾(非vcd自己)動(dòng)態(tài)放到vcd機(jī)中,并且改變的內(nèi)容是適合vcd播放的,這樣的行為用專業(yè)術(shù)語(yǔ)描述就是依賴注入。術(shù)語(yǔ)理解——面向切面編程Aspect-OrientedProgramming,AOPAOP是OOP(面向?qū)ο缶幊蹋┑难a(bǔ)充,OOP關(guān)鍵的東西是對(duì)象,對(duì)象封裝了自己的屬性和操作,AOP關(guān)鍵的東西是切面,解決的是OOP對(duì)象間相互作用(相互關(guān)聯(lián))的問題。如果各個(gè)對(duì)象都要用到的關(guān)聯(lián)(比如:事務(wù)、日志、權(quán)限等),都可以用AOP來(lái)實(shí)現(xiàn),這里的關(guān)聯(lián)就是切面,AOP正是針對(duì)這個(gè)切面來(lái)的。下面剖析一個(gè)例子來(lái)說明AOP的含義。【例子4.1-1b】張三使用李四的vcd機(jī)看一部有兩張碟的影片,影片放映過程有4步:步驟1:張三將第一張碟放到李四的vcd機(jī)中;步驟2:李四的vcd機(jī)播放第一張碟;步驟3:張三換碟(取出第一張,放入第二張);步驟4:李四的vcd機(jī)播放第二張碟。其中涉及到2個(gè)對(duì)象:張三、李四的vcd機(jī);涉及到3次對(duì)象之間的聯(lián)系(交互):聯(lián)系1(步驟1與步驟2之間):“張三”將第一張碟放入“李四的vcd機(jī)”。聯(lián)系2(步驟2與步驟3之間):“張三”取出“李四的vcd機(jī)”中的第一張碟。聯(lián)系3(步驟3與步驟4之間):“張三”將第二張碟放入“李四的vcd機(jī)”。分析3個(gè)聯(lián)系:每個(gè)聯(lián)系是緊耦合聯(lián)系,所涉及的操作對(duì)象(張三與李四的vcd機(jī))是固定的(寫死了的)?,F(xiàn)在假定,播放的vcd機(jī)不是“李四”的而是“王五”的,那么所有的聯(lián)系都要改變?yōu)椋郝?lián)系1(步驟1與步驟2之間):“張三”將第一張碟放入“王五的vcd機(jī)”。聯(lián)系2(步驟2與步驟3之間):“張三”取出“王五的vcd機(jī)”中的第一張碟。聯(lián)系3(步驟3與步驟4之間):“張三”將第二張碟放入“王五的vcd機(jī)”。相應(yīng)地,張三播放影片的操作步驟就會(huì)隨之發(fā)生多處改變。那么,有沒有辦法不變呢?現(xiàn)在我們?cè)谟捌庞持性黾右粋€(gè)額外的操作對(duì)象——服務(wù)員,專門負(fù)責(zé)提供vcd機(jī)。在放映過程中,張三需要操作的vcd機(jī)統(tǒng)一由服務(wù)員提供,此時(shí)3個(gè)聯(lián)系改變?yōu)椋郝?lián)系1(步驟1與步驟2之間):“張三”將碟放入“服務(wù)員選的vcd機(jī)”。聯(lián)系2(步驟2與步驟3之間):“張三”從“服務(wù)員選的vcd機(jī)”中取出碟。聯(lián)系3(步驟3與步驟4之間):“張三”將碟放入“服務(wù)員選的vcd機(jī)”中。結(jié)論:從改變后的聯(lián)系來(lái)看,無(wú)論用誰(shuí)的vcd機(jī)播放,張三的操作步驟都無(wú)需改變,要改變的只是服務(wù)員的操作。在這里,我們從對(duì)象之間的聯(lián)系入手,增加一個(gè)額外的服務(wù)員的選機(jī)操作,將緊耦合聯(lián)系(“張三”與“李四的vcd機(jī)”之間的聯(lián)系)變成了松耦合聯(lián)系(“張三”與“vcd機(jī)”之間的聯(lián)系),解決了問題。其服務(wù)員的選機(jī)操作用軟件專業(yè)術(shù)語(yǔ)來(lái)說就是AOP(面向切面編程),切面就是對(duì)象之間的聯(lián)系(交互),AOP就是關(guān)注對(duì)象之間聯(lián)系的編程技術(shù)。Spring是AOP的提供商,對(duì)面向切面編程提供了強(qiáng)大的支持,通過將業(yè)務(wù)邏輯從應(yīng)用服務(wù)(如監(jiān)控和事務(wù)管理)中分離出來(lái),實(shí)現(xiàn)了內(nèi)聚開發(fā),應(yīng)用對(duì)象只做它們?cè)撟龅摹獦I(yè)務(wù)邏輯,它們不負(fù)責(zé)或關(guān)心其系統(tǒng)問題(如日志和事務(wù)支持)。為何要使用Spring首先,降低組件之間的耦合度,實(shí)現(xiàn)軟件各層之間的解耦,在控制層和業(yè)務(wù)層以及業(yè)務(wù)層和數(shù)據(jù)層通過接口調(diào)用的方式,實(shí)例通過配置文件xml指定依賴注入,如圖4.1-1b所示。圖4.1-1b降低組件之間的耦合度其次,可以使用容器提供的眾多服務(wù),如:事務(wù)管理服務(wù)、消息服務(wù)等等。當(dāng)我們使用容器管理事務(wù)時(shí),開發(fā)人員無(wú)需手工控制事務(wù),也不需處理復(fù)雜的事務(wù)傳播。如圖4.1-1c所示。圖4.1-1c容器提供的眾多服務(wù)再次,spring的容器提供單例模式支持,開發(fā)人員不再需要自己編寫實(shí)現(xiàn)代碼。容器提供了AOP技術(shù),利用它很容易實(shí)現(xiàn)如權(quán)限攔截、運(yùn)行期監(jiān)控等功能。容器提供的眾多輔作類,使用這些類能夠加快應(yīng)用的開發(fā),如:JdbcTemplate、HibernateTemplate等。Spring對(duì)于主流的應(yīng)用框架提供了集成支持,如:集成Hibernate、JPA.Struts等,這樣更便于應(yīng)用的開發(fā)。如何使用spring框架首先,加入spring框架所需jar包。將Spring安裝包(spring-framework-2.5.6-with-dependencies.zip)中的以下文件解壓出來(lái)加入到工程中:dist\spring.jarlib\c3p0\c3p0-.jarlib\aspectjweaver.jaraspectjrt.jarlib\cglib\cglib-nodep-2.1_3.jarlib\j2ee\common-annotations.jarlib\log4\log4j-1.2.15.jarlib\jakarta-commons\commons-logging.jarcommons-logging.jarcommon-annotations.jarlog4j-1.2.15.jar注意:后面三個(gè)包有可能與其他框架重復(fù):請(qǐng)根據(jù)版本號(hào)使用最新的,去掉舊的。為了今后與struts框架進(jìn)行整合,還需加入struts框架中的一個(gè)jar包:struts2-spring-plugin-2.1.8.jar其次,在web.xml文件中加入sping配置:<!--指定spring的配置文件,默認(rèn)從src根目錄尋找配置文件,我們可以通過spring提供的classpath:指定spring的配置文件名--><context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:sping配置文件名地址</param-value></context-param><!--使用偵聽器對(duì)Spring容器進(jìn)行實(shí)例化--><listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>再次,加入Spring的初始配置文件,放在src目錄下,文件名與web.xml文件中配置的一致,擴(kuò)展名為xml,關(guān)鍵代碼如下:<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="/schema/beans" xmlns:xsi="/2001/XMLSchema-instance"xmlns:context="/schema/context" xmlns:p="/schema/p"xmlns:aop="/schema/aop" xmlns:tx="/schema/tx" xsi:schemaLocation="/schema/beans /schema/beans/spring-beans-2.5.xsd /schema/context /schema/context/spring-context-2.5.xsd /schema/aop /schema/aop/spring-aop-2.5.xsd /schema/tx /schema/tx/spring-tx-2.5.xsd"></beans>到這里,spring框架的開發(fā)環(huán)境就搭建起來(lái)了,下面以例子4.1-1講解如何使用?!纠?.1-1】一個(gè)“用戶問好”的程序問題?,F(xiàn)在有三個(gè)類:類1:TestHelloWorld,關(guān)鍵代碼:publicclassTestHelloWorld{ publicstaticvoidmain(String[]args){ //創(chuàng)建對(duì)象,在沒有spring框架的情況下,要從HelloWorldImpl換到HelloWorld2Impl這個(gè)類的對(duì)象創(chuàng)建,必須修改java代碼 HelloWorldImplservice=newHelloWorldImpl();// HelloWorld2Implservice=newHelloWorld2Impl(); //執(zhí)行對(duì)象的相關(guān)方法 service.execute("張三"); }}類2:HelloWorldImpl,關(guān)鍵代碼:publicclassHelloWorldImpl{ publicvoidexecute(Stringinfo){ System.out.println(info+",您好!"); }}類3:HelloWorld2Impl,關(guān)鍵代碼:publicclassHelloWorld2Impl{ publicvoidexecute(Stringinfo){ System.out.println(info+",您不太好!"); }}代碼說明:類2和類3分別有一個(gè)execute方法,方法里打印用戶你好或者用戶不好;類1里邊有main方法,方法里創(chuàng)建類2或類3的對(duì)象,調(diào)用對(duì)象的execute方法輸出用戶你好或用戶不好。問題:要想改變類1里邊main方法執(zhí)行的結(jié)果(用戶你好或者用戶不好),就需要修改代碼,有沒有辦法不修改java代碼實(shí)現(xiàn)執(zhí)行結(jié)果的改變?答案就是使用spring框架改造“用戶問好”的程序。首先,找到類2與類3的共同點(diǎn)(型號(hào)一樣的地方),創(chuàng)建接口HelloWorld,把類2與類3的共同之處放到接口中。接口HelloWorld關(guān)鍵代碼如下:publicinterfaceHelloWorld{ publicvoidexecute(Stringinfo);}其次,分別修改類2、類3,使他們都繼承接口HelloWorld,同時(shí)實(shí)現(xiàn)接口中的虛方法,關(guān)鍵代碼如下:類2的修改:publicclassHelloWorldImplimplementsHelloWorld{ publicvoidexecute(Stringinfo){ System.out.println(info+",您好!"); }}類3的修改:publicclassHelloWorld2ImplimplementsHelloWorld{ publicvoidexecute(Stringinfo){ System.out.println(info+",您不太好!"); }}再次,改造類1(TestHelloWorld)的mian方法,這里邊有三個(gè)小步驟。小步驟1:加載spring框架:語(yǔ)法格式為:ApplicationContextact=newClassPathXmlApplicationContext(“sping的配置文件");小步驟2:獲得符合接口類型的實(shí)現(xiàn)類對(duì)象,語(yǔ)法為:接口類型接口類型的對(duì)象變量=(接口類型)act.getBean(“spring中bean標(biāo)簽里邊的id");小步驟3:使用接口類型的方法完成業(yè)務(wù)邏輯,語(yǔ)法為:接口類型的對(duì)象變量.接口方法()根據(jù)這三個(gè)步驟,類1修改后的關(guān)鍵代碼如下: publicstaticvoidmain(String[]args){ //加載spring ApplicationCo

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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)論