版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、為Struts 2.0做好準備Struts作為MVC 2的Web框架,自推出以來不斷受到開發(fā)者的追捧,得到用廣泛的應用。作為最成功的Web框架,Struts自然擁有眾多的優(yōu)點:· MVC 2模型的使用 · 功能齊全的標志庫(Tag Library) · 開放源代碼 但是,所謂“金無赤金,人無完人”,Struts自身也有不少的缺點:· 需要編寫的代碼過多,容易引起“類爆炸” · 單元測試困難 這些缺點隨著Web的發(fā)展越來越明顯。這就促生了Struts 2.0,它的誕生能很好的解決上述問題。 好啦,廢話就不多說了,現(xiàn)在就讓我們感受一下的Struts
2、 2.0的魅力吧。1. 搭建開發(fā)和運行環(huán)境 1. 到Apache下載Struts 2.0包 2. 打開Eclipse 3.2新建Web工程 點擊菜單FileNewProject,出現(xiàn)如圖1所示對話框圖1 新建工程對話框選擇WebDynamic Web Project,點擊“Next”,出現(xiàn)圖2對話框 圖2 新建動態(tài)Web工程對話框在“Project Name”中鍵入Struts2_HelloWorld,點擊“New”,出現(xiàn)以下對話框 圖3 新建服務器運行時對話框選擇“ApacheApache Tomat v5.5”,點擊“Next”,出現(xiàn)以下對話框 圖4新建服務器運行時對話框點擊“Finish
3、”,關閉對話框。 3. 將Struts 2.0 lib下的jar文件加到工程的構建路徑(build path) 圖5 Struts 2.0的lib目錄按ctr+a全選,復制,再轉到Eclipse窗口,在“Project Explorer”子窗口中選中Struts2_HelloWorldWebContentWEB-INFlib,然后粘貼。經過Eclipse自動刷新“Project Explorer”子窗口,剛才所粘貼的jar文件應該會出現(xiàn)在Struts2_HelloWorldJava Resources: srcLibrariesWeb App Libraries下,如圖6所示: 圖6 Proj
4、ect Explorer子窗口4. 打開web.xml文件,將其修改為以下代碼: <?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE web-app PUBLIC "-/Sun Microsystems, Inc./DTD Web Application 2.3/EN" "5. 新建struts.xml文件 右鍵點擊,Struts2_HelloW
5、orldJava Resources: src,出現(xiàn)如圖7所示菜單圖7 新建Other菜單點擊“Other”,出現(xiàn)新建對話框,如圖8所示 圖8 新建對話框點擊“Next”,出現(xiàn)新建文件對話框,如圖9所示 圖9 新建文件對話框在“File name”中鍵入sturts.xml,點擊“Finish”,然后將struts.xml的內容修改為:<!DOCTYPE struts PUBLIC "-/Apache Software Foundation/DT
6、D Struts Configuration 2.0/EN" "/dtds/struts-2.0.dtd"><struts> <include file="struts-default.xml"/></struts>6. 新建index.html文件 右鍵點擊Struts2_Hel
7、loWorldWebContent,出現(xiàn)如圖10所示的菜單圖10 新建Other菜單點擊“Other”,出現(xiàn)新建對話框,如圖11所示 圖11 新建對話框選擇WebHTML,點擊“Next”出現(xiàn)如圖12所示的對話框 圖12 新建HTML頁面對話框在“File Name”中鍵入index.html,點擊“Next”,出現(xiàn)如圖13所示的對話框 圖13 模板選擇對話框點擊“Finish”,將index.html的內容修改為以下內容:<!DOCTYPE HTML PUBLIC "-/W3C/DTD HTML 4.01 Trans
8、itional/EN"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Hello World</title></head><body><h3>Hello World!</h3></body></html>7. 將應用程序打包到tomca
9、t上 右鍵點擊Struts_HelloWorld,出現(xiàn)如圖14所示的菜單圖14 工程菜單點擊“ExportWAR file”,出現(xiàn)如圖15所示的對話框 圖15 輸出對話框選擇“WebWAR file”,點擊“Next”,出現(xiàn)如圖16所示的對話框 圖16 輸出路徑對話框輸入war文件的路徑(如%tomcat%webappsStruts2_HelloWorld.war),點擊“Finish”關閉對話框。 8. 啟動tomcat,運行應用程序 打開你的Internet Explorer,鍵入http:/localhost:8080/Struts2_HelloWorld/,窗口輸出如圖17所示圖17
10、Hello World窗口2. 第一個Struts 2.0應用程序Hello World 1. 新建類包(package) 右鍵點擊Struts2_HelloWorldJava Resources: src,出現(xiàn)如圖18所示菜單圖18 新建菜單"點擊“NewPackage”,出現(xiàn)如圖19所示對話框圖19新建Java類包對話框在“Name”鍵入tutorial,點擊“Finish”關閉對話框。 2. 新建HelloWorld.java文件 右鍵點擊Struts2_HelloWorldJava Resources: srctutorial,出現(xiàn)如圖20所示菜單圖20 新建菜單點擊“New
11、Class”,出現(xiàn)如圖21所示對話框 圖21 新建Java類對話框在“Name”中鍵入HelloWorld,在“Superclass”中鍵入,點擊“Finish”關閉對話框。將HelloWorld.java的內容修改為:package tutorial;import com.opensymphony.xwork2.ActionSupport;public class HelloWorld extends ActionSupport private String
12、0;name; public String getName() return name; public void setName(String name)
13、0; = name; public String execute() name = "Hello, " + name + "!&quo
14、t; return SUCCESS; 3. 在struts.xml中添加action映射(mapping)<!DOCTYPE struts PUBLIC "-/Apache Software Foundation/DTD Struts Configuration
15、60;2.0/EN" "/dtds/struts-2.0.dtd"><struts> <include file="struts-default.xml"/> <package name="tutorial" extends=&qu
16、ot;struts-default"> <action name="HelloWorld" class="tutorial.HelloWorld"> <result>HelloWorld.jsp</result>
17、160; </action> </package></struts>4. 新建SayHello.jsp 參考“新建index.html文件”步驟,彈出如圖22所示對話框圖22 新建對話框點擊“Next”, 進入下一步,如圖23所示 圖23 新建JSP對話框在“File name”鍵入SayHello.jsp,點擊“Next”進入下一步,如圖24所示 圖24 模板選擇對話框點擊“Finish”關閉對話框,并將SayHello.jsp的內容修改為:<% p
18、age contentType="text/html; charset=UTF-8" %><% taglib prefix="s" uri="/struts-tags" %><!DOCTYPE HTML PUBLIC "-/W3C/DTD HTML 4.01 Transitional/EN"><html>
19、60;<head> <title>Say Hello</title> </head> <body> <h3>Say "Hello" to: </h3> &
20、#160; <s:form action="HelloWorld"> Name: <s:textfield name="name" /> <s:su
21、bmit /> </s:form> </body></html>5. 新建HelloWorld.jsp(請參考上一步),HelloWorld.jsp的內容為:<% page contentType="text/html; charset=UTF-8" %><% taglib prefix="s&qu
22、ot; uri="/struts-tags" %><!DOCTYPE HTML PUBLIC "-/W3C/DTD HTML 4.01 Transitional/EN"><html> <head> <title>Hello</title>
23、 </head> <body> <h3><s:property value="name" /></h3> </body></html>6. 重新打包發(fā)布應用程序 先停止tomcat, 再將tomcat里webapps下的Struts2_HelloWorld.war和Struts2
24、_HelloWorld文件夾刪除,參照“將應用程序打包到tomcat上”重新發(fā)布應用程序。 7. 啟動tomcat,運行測試 打開Internet Explorer,鍵入http:/localhost:8080/Struts2_HelloWorld/SayHello.jsp,窗口輸出如圖25所示圖25 SayHello.jsp在“Name”鍵入字符串(如World),點擊Submit,轉到HelloWorld.jsp頁面,如圖26所示 圖26 HelloWorld.jsp3. 單元測試Hello World 在文章開始的時候提及,單元測試困難是Struts一大缺點?,F(xiàn)在讓我們在體驗一下,在St
25、ruts 2.0中是如何進行測試的。1. 新建JUnit單元測試 右鍵點擊Struts2_HelloWorldJava Resources: srctutorial,彈出如圖27所示對話框圖27 新建菜單點擊“NextOther” 圖28 新建對話框選擇“JavaJUnitJUnit Test Case”,點擊“Next” 圖29 新建JUnit 測試用例對話框選擇“New JUnit 4 test”,在“Name”中鍵入HelloWorldTest,在“Class under test”鍵入tutorial.HelloWorld,點擊“Next” 圖30 選擇方法對話框選中HelloWorl
26、dexecute方法,點擊Finish。如果生成的HelloWorldTest.java文件的圖標(Icon)出現(xiàn)紅色交叉標志,請進行以下步驟添加JUnit 4的jar包。 右鍵點擊Struts2_HelloWorld,出現(xiàn)如圖所示菜單。 圖31 新建菜單點擊“Build PathAdd Libararis”,彈出圖32對話框 圖32 添加庫對話框選中“JUnit”,點擊“Next” 圖33 選擇版本對話框選擇“JUnit 4”,點擊“Finish”關閉對話框,并將HelloWorldTest.java的內容修改為:package tutorial;import stati
27、c org.junit.Assert.assertTrue;import org.junit.Test;import com.opensymphony.xwork2.ActionSupport;public class HelloWorldTest Test public void testExecute() Hell
28、oWorld hello = new HelloWorld(); hello.setName("World"); String result = hello.execute();
29、 assertTrue("Expected a success result!", ActionSupport.SUCCESS.equals(result); final String msg = "Hello, World!"
30、60; assertTrue("Expected the default message!", msg.equals(hello.getName(); 2. 運行單元測試 右鍵點擊Struts2_HelloWorldJava Resources: srctutorialHelloWorldTest.java,彈出如圖34所示菜單圖34 運行為菜單點擊“Run AsJUnit Test”,出現(xiàn)JUnit子窗口如
31、圖35所示 圖35 JUnit子窗口圖35的綠色矩形表示,所有單元測試通過。 4. 總結 上面的例子簡單地演示了,Web 應用程序的基本操作,也即是,頁面輸入->Action處理->再輸出到另外頁面。Struts 2.0的簡單易用、方便測試相信也會給大家留下不錯的印象吧。我相信,Struts 2.0作為一個全新的Web架構,將會再次掀起Web開發(fā)的熱潮。 不過,Struts 2.0還在測試中,正式版的發(fā)布還需些時日,所以文檔方面可能有所欠缺。請大家繼續(xù)留意我的博客,我會盡我所能為大家寫更多關于Struts 2.0的文章。常用的Struts 2.0的標志(Tag)介紹在上一篇文章為S
32、truts 2.0做好準備中,我過于詳細地介紹了Struts 2.0開發(fā)環(huán)境和運行環(huán)境的配置,所以,本文很少涉及的以上兩方面的細節(jié)。如果,您看完為Struts 2.0做好準備后,還有什么不明白,或者沒法運行文中例子,請聯(lián)系我。我的E-MAIL:。在介紹常用標志前,我想先從總體上,對Struts 1.x與Struts 2.0的標志庫(Tag Library)作比較。 Struts 1.xStruts 2.0分類將標志庫按功能分成HTML、Tiles、Logic和Bean等幾部分嚴格上來說,沒有分類,所有標志都在URI為“/struts-tags”命名空間下,不過,我們可以從功能上將其
33、分為兩大類:非UI標志和UI標志表達式語言(expression languages)不支持嵌入語言(EL)OGNL、JSTL、Groovy和Velcity以上表格,純屬個人總結,如有所不足或錯誤,請不吝指正好了,我要開始介紹“常用”(這里所謂的“常用”,是指在已往工作中使用Struts里經常用到的)的標志了。要在JSP中使用Struts 2.0標志,先要指明標志的引入。通過在JSP的代碼的頂部加入以下代碼可以做到這點。<%taglib prefix="s" uri="/struts-tags" %>1. 非UI標志 o if、elseif和
34、else 描述:執(zhí)行基本的條件流轉。 參數(shù): 名稱必需默認類型描述備注test是Boolean決定標志里內容是否顯示的表達式else標志沒有這個參數(shù)id否Object/String用來標識元素的id。在UI和表單中為HTML的id屬性 例子: <% page contentType="text/html; charset=UTF-8" %><% taglib prefix="s" uri="/struts-tags" %><!
35、DOCTYPE HTML PUBLIC "-/W3C/DTD HTML 4.01 Transitional/EN"><html> <head> <title>Condition Flow</title> </head>
36、160;<body> <h3>Condition Flow</h3> <!-
37、0;這里有點小技巧: 本來可以用#0來獲得,請求中name的值。但是,在我實現(xiàn)include例子時, 無論我用param標志給name賦任何值,#parameters里面不會含有任何值,所以#也為空值。
38、60; 其原因為: 當使用include標志時,被包含的頁面(included)里#parameters拿到的是包含頁面里的請求參數(shù)。 &
39、#160; 因此,這里必須手工調用request.getParameter("name")。 -> <s:set name="name" value="
40、<%= "'" + request.getParameter("name") + "'" %>" /> <s:if test="#name = 'Max'">
41、 Max's file here </s:if> <s:elseif test="#name = 'Scott'">
42、 Scott's file here </s:elseif> <s:else> Other's file here
43、60; </s:else> </body></html>例1 condition.jspo iterator 描述:用于遍歷集合()或枚舉值()。 參數(shù): 名稱必需默認類型描述status否String如果設置此參數(shù),一個IteratorStatus的實例將會壓入每個遍歷的堆棧value否Object/String要遍歷的可枚舉的(iteratable)數(shù)據(jù)源,或者將放入新列表(List)的對象i
44、d否Object/String用來標識元素的id。在UI和表單中為HTML的id屬性 例子: <% page contentType="text/html; charset=UTF-8" %><% page import="java.util.List" %><% page import="java.util.ArrayList" %><% taglib prefix=&qu
45、ot;s" uri="/struts-tags" %><!DOCTYPE HTML PUBLIC "-/W3C/DTD HTML 4.01 Transitional/EN"><% List list = new ArrayList(); list.add("Max");
46、 list.add("Scott"); list.add("Jeffry"); list.add("Joe"); list.add("Kelvin"); request.setAttribute("names", list);%><html>
47、 <head> <title>Iterator</title> </head> <body> <h3>Names: </h3>
48、60; <!- 1、此處的空property元素用于獲得當前iterator的值 2、status被設成stuts,在iterator的里面就可以通過#stuts取得IteratorStatus的對象。IteratorStatus類包含當前序號信息,如是否第一個或最后一個,是
49、否為奇數(shù)序號。這些信息在我們做格式化的時候,顯得非常有用。 -> <ol> <s:iterator value="#s" status="stuts">
50、160; <s:if test="#stuts.odd = true">
51、 <li>White <s:property /></li> </s:if>
52、160; <s:else> <li style="background-color:gray"><s:property /></li>
53、; </s:else> </s:iterator> </ol> </body></html>例2 iterator.jspo i18n 描述:加載資源包
54、到值堆棧。它可以允許text標志訪問任何資源包的信息,而不只當前action相關聯(lián)的資源包。 參數(shù): 名稱必需默認類型描述value是Object/String資源包的類路徑(如)id否Object/String用來標識元素的id。在UI和表單中為HTML的id屬性 例子: HelloWorld=Hello Wrold!例3 classes ApplicationMperties<% page contentType="text/html; charset=UTF-8" %><%
55、60;taglib prefix="s" uri="/struts-tags" %><!DOCTYPE HTML PUBLIC "-/W3C/DTD HTML 4.01 Transitional/EN"><html> <head> <title>Inter
56、nationization</title> </head> <body> <h3> <s:i18n name="ApplicationMessages">
57、160; <s:text name="HelloWorld" /> </s:i18n> </h3>
58、 </body></html>例3 i18n.jspo include 描述:包含一個servlet的輸出(servlet或jsp的頁面)。 參數(shù): 名稱必需默認類型描述value是String要包含的jsp或servletid否Object/String用來標識元素的id。在UI和表單中為HTML的id屬性 例子: <% page contentType="text/html; charset=UTF-8" %><% taglib prefix="s&
59、quot; uri="/struts-tags" %><!DOCTYPE HTML PUBLIC "-/W3C/DTD HTML 4.01 Transitional/EN"><html> <head> <title>Iterator</title> &
60、#160; </head> <body> <h3>Interator Page</h3> <s:include value="/condition.jsp"> &
61、#160; <s:param name="name">Max</s:param> </s:include> <h3>i18n</h3> <s:include value=&quo
62、t;/i18n.jsp" /> </body></html>例4 include.jspo param 描述:為其他標簽提供參數(shù),比如include標簽和bean標簽. 參數(shù)的name屬性是可選的,如果提供,會調用Component的方法addParameter(String, Object), 如果不提供,則外層嵌套標簽必須實現(xiàn)UnnamedParametric接口(如TextTag)。 value的提供有兩種方式,通過value屬性或者標簽中間的text,不同之處我們看一下例子:<para
63、m name="color">blue</param><!- (A) -><param name="color" value="blue"/><!- (B) ->(A)參數(shù)值會以String的格式放入statck. (B)該值會以的格式放入statck. 參數(shù): 名稱必需默認類型描述name否String參數(shù)名value否Stringvalue表達式id否Object/String用來標識元素的id。在UI和表單中為HTML的id屬性 例子:請參考例4。 o set 描述:set標
64、簽賦予變量一個特定范圍內的值。當希望給一個變量賦一個復雜的表達式,每次訪問該變量而不是復雜的表達式時用到。其在兩種情況下非常有用: 復雜的表達式很耗時 (性能提升) 或者很難理解 (代碼可讀性提高)。 參數(shù): 名稱必需默認類型描述name是String變量名字scope否String變量作用域,可以為application, session, request, page, 或action.value否Object/String將會賦給變量的值id否Object/String用來標識元素的id。在UI和表單中為HTML的id屬性 例子:請參考例1。 o text 描述:支持國際化信息的標簽。國際
65、化信息必須放在一個和當前action同名的resource bundle中,如果沒有找到相應message,tag body將被當作默認message,如果沒有tag body,message的name會被作為默認message。 參數(shù): 名稱必需默認類型描述name是String資源屬性的名字id否Object/String用來標識元素的id。在UI和表單中為HTML的id屬性 例子:請參考例3。 o url 描述:該標簽用于創(chuàng)建url,可以通過"param"標簽提供request參數(shù)。 當includeParams的值時'all'或者'get
66、39;, param標簽中定義的參數(shù)將有優(yōu)先權,也就是說其會覆蓋其他同名參數(shù)的值。 參數(shù): 略例子: <% page contentType="text/html; charset=UTF-8" %><% taglib prefix="s" uri="/struts-tags" %><!DOCTYPE HTML PUBLIC "-/W3C/DTD HTML 4.01&
67、#160;Transitional/EN"><html> <head> <title>URL</title> </head> <body> <h3>URL</h3>
68、; <a href='<s:url value="/i18n.jsp" />'>i18n</a><br /> <s:url id
69、="url" value="/condition.jsp"> <s:param name="name">Max</s:param> </s:url>
70、; <s:a href="%url">ifelseifelse</s:a> </body></html>例5 url.jspo property 描述:得到'value'的屬性,如果value沒提供,默認為堆棧頂端的元素。 參數(shù): 名稱必需默認類型描述default否String如果屬性是null則顯示的default值escape否trueBooelean是否e
71、scape HTMLvalue否棧頂Object要顯示的值id否Object/String用來標識元素的id。在UI和表單中為HTML的id屬性 例子:請參考例2。 2. UI標志 UI標志又可以分為表單UI和非表單UI兩部分。表單UI部分基本與Struts 1.x相同,都是對HTML表單元素的包裝。不過,Struts 2.0加了幾個我們經常在項目中用到的控件如:datepicker、doubleselect、timepicker、optiontransferselect等。因為這些標志很多都經常用到,而且參數(shù)也很多,要在一篇文章詳細說明并非易事。 需要深入了解這些標志的朋友,可以到以下查看以
72、下網(wǎng)址: WebWork2文檔中文化計劃(中文) Tag Developers Guide(英文)本文有相當?shù)膬热菀瞾碜赃@兩處。 在此,我雖然不能夠詳細講述這些標志,但是可以與大家分享一個來Struts 2.0 Show Case一個例子。 /*/* * $Id: UITagExample.java 420385 2006-07-10 00:57:05Z mrdon $ * * Copyright 2006 The Apache Software
73、 Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You
74、160;may obtain a copy of the License at * * * * Unless required by applicable law or agreed to in writing, software * distributed under
75、0;the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the spec
76、ific language governing permissions and * limitations under the License. */package org.apache.struts2.showcase;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;import com.opensymphony.xwo
77、rk2.Validateable;importl.OgnlValueStack;import java.util.ArrayList;import java.util.Collections;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Map;import java.io.File;/* */* */public class UITagExample
78、;extends ActionSupport implements Validateable private static final long serialVersionUID = -94044809860988047L; String name;&
79、#160; Date birthday; String bio; String favoriteColor; List friends; boolean legalAge; String state; String re
80、gion; File picture; String pictureContentType; String pictureFileName; String favouriteLanguage; String favouriteVehicalType = "MotorcycleKey&quo
81、t; String favouriteVehicalSpecific = "YamahaKey" List leftSideCartoonCharacters; List rightSideCartoonCharacters; List f
82、avouriteLanguages = new ArrayList(); List vehicalTypeList = new ArrayList(); Map vehicalSpecificMap = new HashMap(); String thoughts;
83、160; public UITagExample() favouriteLanguages.add(new Language("EnglishKey", "English Language"); favouriteLanguages.add(new L
84、anguage("FrenchKey", "French Language"); favouriteLanguages.add(new Language("SpanishKey", "Spanish Language");
85、; VehicalType car = new VehicalType("CarKey", "Car"); VehicalType motorcycle = new VehicalType("MotorcycleKey", "Motorcycle");
86、160; vehicalTypeList.add(car); vehicalTypeList.add(motorcycle); List cars = new ArrayList();
87、; cars.add(new VehicalSpecific("MercedesKey", "Mercedes"); cars.add(new VehicalSpecific("HondaKey", "Honda"); cars.add(new&
88、#160;VehicalSpecific("FordKey", "Ford"); List motorcycles = new ArrayList(); motorcycles.add(new VehicalSpec
89、ific("SuzukiKey", "Suzuki"); motorcycles.add(new VehicalSpecific("YamahaKey", "Yamaha"); vehicalSpecifi
90、cMap.put(car, cars); vehicalSpecificMap.put(motorcycle, motorcycles); public List getLeftSideCartoonCharacters()
91、160; return leftSideCartoonCharacters; public void setLeftSideCartoonCharacters(List leftSideCartoonCharacters) this.leftSideCartoonCharact
92、ers = leftSideCartoonCharacters; public List getRightSideCartoonCharacters() return rightSideCartoonCharacters;
93、0; public void setRightSideCartoonCharacters(List rightSideCartoonCharacters) this.rightSideCartoonCharacters = rightSideCartoonCharacters;
94、 public String getFavouriteVehicalType() return favouriteVehicalType; public void setFavouriteVehicalType(Stri
95、ng favouriteVehicalType) this.favouriteVehicalType = favouriteVehicalType; public String getFavouriteVehicalSpecific()
96、60; return favouriteVehicalSpecific; public void setFavouriteVehicalSpecific(String favouriteVehicalSpecific) this.favouriteVehicalSpecific
97、 = favouriteVehicalSpecific; public List getVehicalTypeList() return vehicalTypeList;
98、 public List getVehicalSpecificList() OgnlValueStack stack = ServletActionContext.getValueStack(ServletActionContext.getRequest(); Object vehicalType = sta
99、ck.findValue("top"); if (vehicalType != null && vehicalType instanceof VehicalType) List l = (List) veh
100、icalSpecificMap.get(vehicalType); return l; return Collections.EMPTY_LIST;
101、160; public List getFavouriteLanguages() return favouriteLanguages; public String execute() throws Exception return SUCCESS; /*/* Getters and Setters */ public Stri
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 濕法煉鋅工藝流程題目及答案
- 有關中藥學的題目及答案
- 養(yǎng)老院老人生活娛樂活動組織人員職業(yè)發(fā)展規(guī)劃制度
- 養(yǎng)老院工作人員保密制度
- 養(yǎng)老院財務審批制度
- 辦公室內部溝通與協(xié)作制度
- 鈦卷帶開平線處罰制度
- 酒店財務報銷制度
- 奧數(shù)3年級題目及答案
- 2026年及未來5年市場數(shù)據(jù)中國門窗行業(yè)發(fā)展前景預測及投資方向研究報告
- 九年級下冊語文必背古詩文(字帖描紅)
- 北京市行業(yè)用水定額匯編(2024年版)
- 婚內財產協(xié)議書標準版
- 基于大數(shù)據(jù)的金融風險評估模型構建
- 供應鏈與生產制造L1-L4級高階流程規(guī)劃框架 相關兩份資料
- 光伏電站施工管理要點培訓
- GB/T 43691.1-2024燃料電池模塊第1部分:安全
- 國際貿易合同履行中的運輸保險索賠程序與操作指南
- 龍澤滴灌帶生產項目可行性研究報告
- 運動系統(tǒng)疾病
- 2017全國高考真題完型填空匯編含答案
評論
0/150
提交評論