網(wǎng)絡(luò)通信與xml轉(zhuǎn)換知識(shí)點(diǎn)_第1頁
網(wǎng)絡(luò)通信與xml轉(zhuǎn)換知識(shí)點(diǎn)_第2頁
網(wǎng)絡(luò)通信與xml轉(zhuǎn)換知識(shí)點(diǎn)_第3頁
網(wǎng)絡(luò)通信與xml轉(zhuǎn)換知識(shí)點(diǎn)_第4頁
網(wǎng)絡(luò)通信與xml轉(zhuǎn)換知識(shí)點(diǎn)_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、一,網(wǎng)絡(luò)工具類webutilsHTTP 協(xié)議可能是現(xiàn)在 Internet 上使用得最多、最重要的協(xié)議了,越來越多的 Java 應(yīng)用程序需要直接通過 HTTP 協(xié)議來訪問網(wǎng)絡(luò)資源。雖然在 JDK 的 java net包中已經(jīng)提供了訪問 HTTP 協(xié)議的基本功能,但是對(duì)于大部分應(yīng)用程序來說,JDK 庫本身提供的功能還不夠豐富和靈活。HttpClient 是 Apache Jakarta Common 下的子項(xiàng)目,用來提供高效的、最新的、功能豐富的支持 HTTP 協(xié)議的客戶端編程工具包,并且它支持 HTTP 協(xié)議最新的版本和建議。HttpClient 已經(jīng)應(yīng)用在很多的項(xiàng)目中HttpURLConnec

2、tion是java的標(biāo)準(zhǔn)類,HttpURLConnection繼承自URLConnection,可用于向指定網(wǎng)站發(fā)送GET請(qǐng)求、POST請(qǐng)求。它在URLConnection的基礎(chǔ)上提供了如下便捷的方法: int getResponseCode():獲取服務(wù)器的響應(yīng)代碼。 String getResponseMessage():獲取服務(wù)器的響應(yīng)消息。 String getResponseMethod():獲取發(fā)送請(qǐng)求的方法。 void setRequestMethod(String method):設(shè)置發(fā)送請(qǐng)求的方法。在一般情況下,如果只是需要Web站點(diǎn)的某個(gè)簡(jiǎn)單頁面提交請(qǐng)求并獲取服務(wù)器響應(yīng),H

3、ttpURLConnection完全可以勝任。但在絕大部分情況下,Web站點(diǎn)的網(wǎng)頁可能沒這么簡(jiǎn)單,這些頁面并不是通過一個(gè)簡(jiǎn)單的URL就可訪問的,可能需要用戶登錄而且具有相應(yīng)的權(quán)限才可訪問該頁面。在這種情況下,就需要涉及Session、Cookie的處理了,如果打算使用HttpURLConnection來處理這些細(xì)節(jié),當(dāng)然也是可能實(shí)現(xiàn)的,只是處理起來難度就大了。為了更好地處理向Web站點(diǎn)請(qǐng)求,包括處理Session、Cookie等細(xì)節(jié)問題,Apache開源組織提供了一個(gè)HttpClient項(xiàng)目,看它的名稱就知道,它是一個(gè)簡(jiǎn)單的HTTP客戶端(并不是瀏覽器),可以用于發(fā)送HTTP請(qǐng)求,接收HTTP

4、響應(yīng)。但不會(huì)緩存服務(wù)器的響應(yīng),不能執(zhí)行HTML頁面中嵌入的Javascript代碼;也不會(huì)對(duì)頁面內(nèi)容進(jìn)行任何解析、處理。簡(jiǎn)單來說,HttpClient就是一個(gè)增強(qiáng)版的HttpURLConnection,HttpURLConnection可以做的事情HttpClient全部可以做;HttpURLConnection沒有提供的有些功能,HttpClient也提供了,但它只是關(guān)注于如何發(fā)送請(qǐng)求、接收響應(yīng),以及管理HTTP連接。使用HttpClient發(fā)送請(qǐng)求、接收響應(yīng)很簡(jiǎn)單,只要如下幾步即可。1. 創(chuàng)建HttpClient對(duì)象。2. 如果需要發(fā)送GET請(qǐng)求,創(chuàng)建HttpGet對(duì)象;如果需要發(fā)送POS

5、T請(qǐng)求,創(chuàng)建HttpPost對(duì)象。3. 如果需要發(fā)送請(qǐng)求參數(shù),可調(diào)用HttpGet、HttpPost共同的setParams(HetpParams params)方法來添加請(qǐng)求參數(shù);對(duì)于HttpPost對(duì)象而言,也可調(diào)用setEntity(HttpEntity entity)方法來設(shè)置請(qǐng)求參數(shù)。4. 調(diào)用HttpClient對(duì)象的execute(HttpUriRequest request)發(fā)送請(qǐng)求,執(zhí)行該方法返回一個(gè)HttpResponse。5. 調(diào)用HttpResponse的getAllHeaders()、getHeaders(String name)等方法可獲取服務(wù)器的響應(yīng)頭;調(diào)用Htt

6、pResponse的getEntity()方法可獲取HttpEntity對(duì)象,該對(duì)象包裝了服務(wù)器的響應(yīng)內(nèi)容。程序可通過該對(duì)象獲取服務(wù)器的響應(yīng)內(nèi)容。另外,Android已經(jīng)成功地集成了HttpClient,這意味著開發(fā)人員可以直接在Android應(yīng)用中使用Httpclient來訪問提交請(qǐng)求、接收響應(yīng)。比如一個(gè)Android應(yīng)用需要向指定頁面發(fā)送請(qǐng)求,但該頁面并不是一個(gè)簡(jiǎn)單的頁面,只有當(dāng)用戶已經(jīng)登錄,而且登錄用戶的用戶名有效時(shí)才可訪問該頁面。如果使用HttpURLConnection來訪問這個(gè)被保護(hù)的頁面,那么需要處理的細(xì)節(jié)就太復(fù)雜了。其實(shí)訪問Web應(yīng)用中被保護(hù)的頁面,使用瀏覽器則十分簡(jiǎn)單,用戶通

7、過系統(tǒng)提供的登錄頁面登錄系統(tǒng),瀏覽器會(huì)負(fù)責(zé)維護(hù)與服務(wù)器之間的Sesion,如果用戶登錄的用戶名、密碼符合要求,就可以訪問被保護(hù)資源了。在Android應(yīng)用程序中,則可使用HttpClient來登錄系統(tǒng),只要應(yīng)用程序使用同一個(gè)HttpClient發(fā)送請(qǐng)求,HttpClient會(huì)自動(dòng)維護(hù)與服務(wù)器之間的Session狀態(tài),也就是說程序第一次使用HttpClient登錄系統(tǒng)后,接下來使用HttpClient即可訪問被保護(hù)頁而了。擴(kuò)展知識(shí):了解HttpCore1.HTTPClient工具包項(xiàng)目1/* * 向遠(yuǎn)程的url服務(wù)器進(jìn)行post一個(gè)數(shù)據(jù)包 * * param url * 需要進(jìn)行post的服務(wù)器

8、 * param paras * 數(shù)據(jù)包中的參數(shù) * return * throws Exception */public static String postData(String url, String data,String uploadEncoding, String responseEncoding) throws Exception RequestConfig config = RequestConfig.custom().build();HttpClient client = HttpClients.custom().setDefaultRequestConfig(config)

9、.build();HttpClientContext context = HttpClientContext.create();HttpPost post = new HttpPost(url);if (StringUtils.isNotBlank(data) post.setEntity(new StringEntity(data, uploadEncoding);CloseableHttpResponse response = (CloseableHttpResponse) client.execute(post, context);return EntityUtils.toString(

10、response.getEntity(), responseEncoding);2.URLConnectionJava自帶public static String getFromSpecialUrl(String str,String param) throws E("request core zy +");URL url = null;URLConnection conn = null;BufferedReader bufferedReader = null;InputStream inputStream = null;StringBuff

11、er responseXml = null;PrintWriter output = null;String result;try url = new URL(str);("url "+url);conn = (URLConnection) url.openConnection();conn.setDoInput(true);conn.setDoOutput(true);conn.setConnectTimeout(1000);output = new PrintWriter(conn.getOutputStream();output.print(param

12、.toString();output.close();responseXml = new StringBuffer();inputStream = conn.getInputStream();bufferedReader = new BufferedReader(new InputStreamReader(inputStream, "GBK");String s;while (s = bufferedReader.readLine() != null) responseXml.append(s);bufferedReader.close(); catch (IOExcept

13、ion e) e.printStackTrace();System.out.println("系統(tǒng)處理異常!");result = responseXml.toString();System.out.println("接收到的報(bào)文:" + result);return result;3.HTTPClient和URLConnection的區(qū)別對(duì)比項(xiàng)目URLConnectionHTTPClient提交方式(Methods)HEAD, GET, POST, PUT, DELETE, TRACE, OPTIONSHEAD, GET, POST, PUT, DEL

14、ETE, TRACE, OPTIONS, WEBDav, IPP, 甚至各種自定義提交方式響應(yīng)(Response Codes)只能獲取http狀態(tài)碼小于400的狀態(tài)碼,響應(yīng)頭信息(headers),響應(yīng)內(nèi)容.對(duì)于響應(yīng)狀態(tài)碼為4xx或者5xx獲取response的任何信息都只會(huì)拋出IOException任何時(shí)候都可以獲取響應(yīng)的任何信息:響應(yīng)狀態(tài)碼,響應(yīng)頭信息,響應(yīng)內(nèi)容信息等等。代理和SOCKS支持,SOCKS僅支持4支持,SOCKS支持4和5認(rèn)證(Authorization)支持Basic、早期的Digest JDK1.2+(不支持現(xiàn)在的Digest authentication),甚至不能處理

15、apache返回的Digest信息支持Basic、Digest Authentication、自定義的其他認(rèn)證方案Cookies不支持支持請(qǐng)求輸出流(True request output streams)請(qǐng)求發(fā)送之前,所有的數(shù)據(jù)都被緩存起來通過socket直接輸出HttpOutputStream響應(yīng)輸入流(True response input streams)JDK1.2-支持,1.3+不支持chunked encoding(不支持大多數(shù)推送服務(wù)器的響應(yīng))支持長(zhǎng)連接(Persistent Connections)JDK1.2- HTTP/1.0 Keep-Alive,JDK1.3+ 

16、60;HTTP/1.1 Persistent支持HTTP/1.0 Keep-Alive 和 HTTP/1.1 PersistentPipelining of Requests不支持支持設(shè)置超時(shí)不支持支持處理HTTP之外的協(xié)議支持如:ftp, gopher, mailto,文件系統(tǒng)不支持開源否是處理HTTP之外的協(xié)議支持如:ftp, gopher, mailto,文件系統(tǒng)不支持二,XML工具包xStreamXmlUtilsxStream可以輕易的將Java對(duì)象和xml文檔相互轉(zhuǎn)換,而且可以修改某個(gè)特定的屬性和節(jié)點(diǎn)名稱,而且也支持json的轉(zhuǎn)換;它們都完美支持JSON,但是對(duì)xml的支持還不是很好

17、。一定程度上限制了對(duì)Java對(duì)象的描述,不能讓xml完全體現(xiàn)到對(duì)Java對(duì)象的描述。這里將會(huì)介紹xStream對(duì)JSON、XML的完美支持。xStream不僅對(duì)XML的轉(zhuǎn)換非常友好,而且提供annotation注解,可以在JavaBean中完成對(duì)xml節(jié)點(diǎn)、屬性的描述。以及對(duì)JSON也支持,只需要提供相關(guān)的JSONDriver就可以完成轉(zhuǎn)換。1、 下載jar包、及官方資源xStream的jar下載地址:2、 測(cè)試用例代碼public class XStreamTest private XStream xstream = null; private ObjectOutputStream out

18、= null; private ObjectInputStream in = null; private Student bean = null; Before public void init() xstream = new XStream(); /xstream = new XStream(new DomDriver(); / 需要xpp3 jar bean = new Student(); bean.setAddress("china"); bean.setEmail("jack"); bean.setId(1); bean.setName(&qu

19、ot;jack"); Birthday day = new Birthday(); day.setBirthday("2010-11-22"); bean.setBirthday(day); After public void destory() xstream = null; bean = null; if (out != null) out.flush(); out.close(); if (in != null) in.close(); System.gc(); 通過XStream對(duì)象的toXML方法就可以完成Java對(duì)象到XML的轉(zhuǎn)換,toXML方法還有2

20、個(gè)相同簽名的方法,需要傳遞一個(gè)流。然后通過流來完成xml信息的輸出。3、 需要的JavaBeanpackage com.hoo.entity;public class Student private int id; private String name; private String email; private String address; private Birthday birthday; /getter、setter public String toString() return + "#" + this.id + "#"

21、 + this.address + "#" + this.birthday + "#" + this.email; 1、Java轉(zhuǎn)換成XML1.1 JavaBean轉(zhuǎn)換XMTestpublic void writeBean2XML() System.out.println("-Bean->XML-"); System.out.println(xstream.toXML(bean); System.out.println("重命名后的XML"); /類重命名 /xstream.alias("accou

22、nt", Student.class); /xstream.alias("生日", Birthday.class); /xstream.aliasField("生日", Student.class, "birthday"); /xstream.aliasField("生日", Birthday.class, "birthday"); /System.out.println(xstream.toXML(bean); /屬性重命名 xstream.aliasField("郵件&q

23、uot;, Student.class, "email"); /包重命名 xstream.aliasPackage("hoo", "com.hoo.entity"); System.out.println(xstream.toXML(bean); 看結(jié)果中的第一份xml內(nèi)容,是沒有經(jīng)過然后修改或重命名的文檔,按照原樣輸出。文檔中的第二份文檔的package經(jīng)過重命名,email屬性也經(jīng)過重命名以及類名也可以進(jìn)行重命名的。運(yùn)行后結(jié)果如下:-Bean->XML-<com.hoo.entity.Student> <i

24、d>1</id> <name>jack</name> <email>jack</email> <address>china</address> <birthday> <birthday>2010-11-22</birthday> </birthday></com.hoo.entity.Student>重命名后的XML<hoo.Student> <id>1</id> <name>jack</na

25、me> <郵件>jack</郵件> <address>china</address> <birthday> <birthday>2010-11-22</birthday> </birthday></hoo.Student>1.2 將List集合轉(zhuǎn)換成xml文檔Testpublic void writeList2XML() try /修改元素名稱 xstream.alias("beans", ListBean.class); xstream.alias("

26、;student", Student.class); System.out.println("-List->XML-"); ListBean listBean = new ListBean(); listBean.setName("this is a List Collection"); List<Object> list = new ArrayList<Object>(); list.add(bean); list.add(bean);/引用bean /list.add(listBean);/引用listBean

27、,父元素 bean = new Student(); bean.setAddress("china"); bean.setEmail("tom"); bean.setId(2); bean.setName("tom"); Birthday day = new Birthday("2010-11-22"); bean.setBirthday(day); list.add(bean); listBean.setList(list); /將ListBean中的集合設(shè)置空元素,即不顯示集合元素標(biāo)簽 /xstream.add

28、ImplicitCollection(ListBean.class, "list"); /設(shè)置reference模型 /xstream.setMode(XStream.NO_REFERENCES);/不引用 xstream.setMode(XStream.ID_REFERENCES);/id引用 /xstream.setMode(XStream.XPATH_ABSOLUTE_REFERENCES);/絕對(duì)路徑引用 /將name設(shè)置為父類(Student)的元素的屬性 xstream.useAttributeFor(Student.class, "name"

29、;); xstream.useAttributeFor(Birthday.class, "birthday"); /修改屬性的name xstream.aliasAttribute("姓名", "name"); xstream.aliasField("生日", Birthday.class, "birthday"); System.out.println(xstream.toXML(listBean); catch (Exception e) e.printStackTrace(); 上面的代碼

30、運(yùn)行后,結(jié)果如下:-List->XML-<beans id="1"> <name>this is a List Collection</name> <list id="2"> <student id="3" 姓名="jack"> <id>1</id> <email>jack</email> <address>china</address> <birthday id=&quo

31、t;4" 生日="2010-11-22"/> </student> <student reference="3"/> <student id="5" 姓名="tom"> <id>2</id> <email>tom</email> <address>china</address> <birthday id="6" 生日="2010-11-22"/&g

32、t; </student> </list></beans>如果不加xstream.addImplicitCollection(ListBean.class, "list");這個(gè)設(shè)置的話,會(huì)出現(xiàn)一個(gè)List節(jié)點(diǎn)包裹著Student節(jié)點(diǎn)元素。添加addImplicitCollection可以忽略這個(gè)list節(jié)點(diǎn)元素。那么上面的list節(jié)點(diǎn)就不存在,只會(huì)在beans元素中出現(xiàn)name、student這2個(gè)xml元素標(biāo)簽;setMode是設(shè)置相同的對(duì)象的引用方式,如果設(shè)置XStream.NO_REFERENCES就是不引用,會(huì)輸出2分相同的St

33、udent元素。如果是XStream.ID_REFERENCES會(huì)引用相同的那個(gè)對(duì)象的id屬性,如果是XStream.XPATH_ABSOLUTE_REFERENCES引用,那么它將顯示xpath路徑。上面采用的id引用,<student reference="3"/>這個(gè)引用了id=3的那個(gè)student標(biāo)簽元素;useAttributeFor是設(shè)置某個(gè)節(jié)點(diǎn)顯示到父節(jié)點(diǎn)的屬性中,也就是將指定class中的指定屬性,在這個(gè)class元素節(jié)點(diǎn)的屬性中顯示。如:<student><name>hoojo</name></stu

34、dent>設(shè)置好后就是這樣的結(jié)果:<student name=”hoojo”></student>aliasAttribute是修改屬性名稱。1.3、 在JavaBean中添加Annotation注解進(jìn)行重命名設(shè)置先看看JavaBean的代碼package com.hoo.entity; import java.util.Arrays;import java.util.Calendar;import java.util.GregorianCalendar;import java.util.List;import com.thoughtworks.xstr

35、eam.annotations.XStreamAlias;import com.thoughtworks.xstream.annotations.XStreamAsAttribute;import com.thoughtworks.xstream.annotations.XStreamConverter;import com.thoughtworks.xstream.annotations.XStreamImplicit;import com.thoughtworks.xstream.annotations.XStreamOmitField; XStreamAlias("c

36、lass")public class Classes /* * 設(shè)置屬性顯示 */ XStreamAsAttribute XStreamAlias("名稱") private String name; /* * 忽略 */ XStreamOmitField private int number; XStreamImplicit(itemFieldName = "Students") private List<Student> students; SuppressWarnings("unused") XStream

37、Converter(SingleValueCalendarConverter.class) private Calendar created = new GregorianCalendar();  public Classes() public Classes(String name, Student. stu) = name; this.students = Arrays.asList(stu); /getter、setterSingleValueCalendarConverter.java這個(gè)是一個(gè)類型轉(zhuǎn)換器package com.hoo.entity;

38、60;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;import com.thoughtworks.xstream.converters.Converter;import com.thoughtworks.xstream.converters.MarshallingContext;import com.thoughtworks.xstream.converters.UnmarshallingContext;import com.thoughtworks.xstream.io.

39、HierarchicalStreamReader;import com.thoughtworks.xstream.io.HierarchicalStreamWriter; public class SingleValueCalendarConverter implements Converter public void marshal(Object source, HierarchicalStreamWriter writer, MarshallingContext context) Calendar calendar = (Calendar) source; writer.setV

40、alue(String.valueOf(calendar.getTime().getTime();   public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) GregorianCalendar calendar = new GregorianCalendar(); calendar.setTime(new Date(Long.parseLong(reader.getValue(); return calendar;   SuppressWarnings(&

41、quot;unchecked") public boolean canConvert(Class type) return type.equals(GregorianCalendar.class); 再看看測(cè)試用例代碼Testpublic void writeList2XML4Annotation() try System.out.println("-annotation Bean -> XML-"); Student stu = new Student(); stu.setName("jack"); Classes c = new Cl

42、asses("一班", bean, stu); c.setNumber(2); /對(duì)指定的類使用Annotation /cessAnnotations(Classes.class); /啟用Annotation /xstream.autodetectAnnotations(true); xstream.alias("student", Student.class); System.out.println(xstream.toXML(c); catch (Exception e) e.printStackTrace(); 當(dāng)啟用ann

43、otation或是對(duì)某個(gè)特定的類啟用annotation時(shí),上面的classes這個(gè)類才有效果。如果不啟用annotation,運(yùn)行后結(jié)果如下:-annotation Bean -> XML-<com.hoo.entity.Classes> <name>一班</name> <number>2</number> <students class="java.util.Arrays$ArrayList"> <a class="student-array"> <stu

44、dent> <id>1</id> <name>jack</name> <email>jack</email> <address>china</address> <birthday> <birthday>2010-11-22</birthday> </birthday> </student> <student> <id>0</id> <name>jack</name> <

45、/student> </a> </students> <created> <time>1303292056718</time> <timezone>Asia/Shanghai</timezone> </created></com.hoo.entity.Classes>當(dāng)啟用annotation后cessAnnotations(Classes.class),結(jié)果如下:-annotation Bean -> XML-<class 名稱="一班

46、"> <Students> <id>1</id> <name>jack</name> <email>jack</email> <address>china</address> <birthday> <birthday>2010-11-22</birthday> </birthday> </Students> <Students> <id>0</id> <name>j

47、ack</name> </Students> <created>1303292242937</created></class>1.4、 Map集合轉(zhuǎn)換xml文檔Testpublic void writeMap2XML() System.out.println("-Map -> XML-"); Map<String, Student> map = new HashMap<String, Student>(); map.put("No.1", bean);/put be

48、an = new Student(); bean.setAddress("china"); bean.setEmail("tom"); bean.setId(2); bean.setName("tom"); Birthday day = new Birthday("2010-11-22"); bean.setBirthday(day); map.put("No.2", bean);/put bean = new Student(); bean.setName("jack");

49、 map.put("No.3", bean);/put xstream.alias("student", Student.class); xstream.alias("key", String.class); xstream.useAttributeFor(Student.class, "id"); xstream.useAttributeFor("birthday", String.class); System.out.println(xstream.toXML(map); 運(yùn)行后結(jié)果如下:-

50、Map -> XML-<map> <entry> <key>No.3</key> <student id="0"> <name>jack</name> </student> </entry> <entry> <key>No.1</key> <student id="1"> <name>jack</name> <email>jack</email>

51、<address>china</address> <birthday birthday="2010-11-22"/> </student> </entry> <entry> <key>No.2</key> <student id="2"> <name>tom</name> <email>tom</email> <address>china</address> <birth

52、day birthday="2010-11-22"/> </student> </entry></map>1.5、 用OutStream輸出流寫XMLTestpublic void writeXML4OutStream() out = xstream.createObjectOutputStream(System.out); Student stu = new Student(); stu.setName("jack"); Classes c = new Classes("一班", bean,

53、 stu); c.setNumber(2); System.out.println("-ObjectOutputStream # JavaObject-> XML-"); out.writeObject(stu); out.writeObject(new Birthday("2010-05-33"); out.write(22);/byte out.writeBoolean(true); out.writeFloat(22.f); out.writeUTF("hello");使用輸出流后,可以通過流對(duì)象完成xml的構(gòu)建,即使沒有

54、JavaBean對(duì)象,你可以用流來構(gòu)建一個(gè)復(fù)雜的xml文檔,運(yùn)行后結(jié)果如下:-ObjectOutputStream # JavaObject-> XML-<object-stream> <com.hoo.entity.Student> <id>0</id> <name>jack</name> </com.hoo.entity.Student> <com.hoo.entity.Birthday> <birthday>2010-05-33</birthday> </c

55、om.hoo.entity.Birthday> <byte>22</byte> <boolean>true</boolean> <float>22.0</float> <string>hello</string></object-stream>2、XML內(nèi)容轉(zhuǎn)換Java對(duì)象2.1、 用InputStream將XML文檔轉(zhuǎn)換成java對(duì)象Testpublic void readXML4InputStream() try String s = "<object-stream><com.hoo.entity.Student><id>0</id><name>jack</nam

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論