axis2之webservice新手超詳細(xì)教程_第1頁(yè)
axis2之webservice新手超詳細(xì)教程_第2頁(yè)
axis2之webservice新手超詳細(xì)教程_第3頁(yè)
axis2之webservice新手超詳細(xì)教程_第4頁(yè)
axis2之webservice新手超詳細(xì)教程_第5頁(yè)
已閱讀5頁(yè),還剩91頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、Axis2之webservice新手超詳細(xì)教程-尚明Axis2是一套嶄新的WebService引擎,該版本是對(duì)Axis1.x重新設(shè)計(jì)的產(chǎn)物。Axis2不僅支持SOAP1.1和SOAP1.2,還集成了非常流行的REST WebService,同時(shí)還支持Spring、JSON等技術(shù),本教程是主要闡述如何構(gòu)建一個(gè)基本的Axis2 webservice應(yīng)用,里面的許多環(huán)節(jié)高手可直接略過(guò),本教程完全針對(duì)新手。一、 環(huán)境安裝l 安裝myeclipse下載地址: /file/-6b56-40a4-a93b-8f424ee4f33al 安裝mysql下載地址:http:/

2、/file/de64cf2f-4217-4e11-bb98-8e6c5dd24155l 安裝mysql-workbench(mysql可視化工具)下載地址:/file/becf913f-56a6-4d68-b248-b73535l 安裝tomcat下載地址: /file/ec6a2250-99ff-464e-a978-be184c96e4e7l 下載Axis2服務(wù)包下載地址: /file/bb3db6e3-2f7d-4343-b472-c1fa714dba

3、95l 下載Axis2開(kāi)發(fā)插件包下載地址: /file/aa39505f-079b-43be-9479-15a2d3e98cbbl 安裝jdk下載地址: /file/7ba342f9-277f-4b9c-b5e7-b0c5b7dfc151二、 環(huán)境配置1) Java環(huán)境配置a) 設(shè)置JAVA_HOME圖1.圖2 設(shè)置JAVA_HOME= D:Program FilesJavajdk1.6.0_10* D:Program FilesJavajdk1.6.0_10為筆者本機(jī)的JDK安裝目錄,請(qǐng)開(kāi)發(fā)者根據(jù)實(shí)際安裝路徑來(lái)填寫(xiě),

4、注意環(huán)境變量最后面不能加分號(hào),D:Program FilesJavajdk1.6.0_10;這么寫(xiě)是錯(cuò)誤的。b) 設(shè)置CLASSPATH圖1設(shè)置CLASSPATH= .;%JAVA_HOME%lib;%JAVA_HOME%libtools.jar* 要加.表示當(dāng)前路徑c) 設(shè)置path設(shè)置path=%JAVA_HOME%bin;%JAVA_HOME%jrebin2) tomcat環(huán)境配置a) 設(shè)置CATALINA_HOMECATALINA_HOME=F:apache-tomcat-6.0.30* F:apache-tomcat-6.0.30為筆者本機(jī)的JDK安裝目錄,請(qǐng)開(kāi)發(fā)者根據(jù)實(shí)際安裝路徑來(lái)

5、填寫(xiě)。b) 測(cè)試Axis2服務(wù)包將axis2服務(wù)包(axis2.war)放入F:apache-tomcat-6.0.30webapps下點(diǎn)擊F:apache-tomcat-6.0.30bin下的startup.bat文件在瀏覽器中輸入 http:/localhost:8080/axis2/若出現(xiàn)圖中所示頁(yè)面,那么說(shuō)明axis2的服務(wù)包已經(jīng)發(fā)布成功了;在F:apache-tomcat-6.0.30webapps目錄下會(huì)自動(dòng)生成一個(gè)axis2文件夾,這個(gè)留待后面的說(shuō)明中一并敘述,下面繼續(xù)配置。3) myeclipse環(huán)境配置a) 配置axis2插件包將axis2插件包下的Axis2_Codegen

6、_Wizard_1.3.0和Axis2_Service_Archiver_1.3.0文件夾拷貝至Myeclipse8.5dropins 目錄下點(diǎn)擊FileNewOther若出現(xiàn)圖中2個(gè)高亮顯示的插件名,那么說(shuō)明Axis2開(kāi)發(fā)插件已經(jīng)安裝成功。b) myeclipse下的tomcat配置點(diǎn)擊WindowPreferences 點(diǎn)擊MyEclipseServersTomcat, 選擇Configure Tomcat 6.x 按照?qǐng)D中所示配置tomcatc) myeclipse下的jre配置點(diǎn)擊JavaInstalledJREs,點(diǎn)擊Search按鈕,選擇D:Program FilesJavajdk

7、1.6.0_10路徑(開(kāi)發(fā)者根據(jù)實(shí)際路徑自己調(diào)整)如圖中所示進(jìn)行配置,點(diǎn)擊OK4) Mysql數(shù)據(jù)配置a) 數(shù)據(jù)庫(kù)安裝配置實(shí)例配置時(shí),筆者選擇的是服務(wù)器。服務(wù)器字符集選擇的是utf-8數(shù)據(jù)庫(kù)連接設(shè)置為:用戶名:root密碼:b) 測(cè)試數(shù)據(jù)庫(kù)建立筆者采用的是可視化工具建庫(kù)(mysql-workbench-gpl-5.2.37-win32)打開(kāi)mysql-workbench點(diǎn)擊圖中標(biāo)注的按鈕,新建一個(gè)庫(kù)新建庫(kù)名為webservice新建student表,建表語(yǔ)句如下DROP TABLE IF EXISTS student;CREATE TABLE student ( id int(11) NOT

8、NULL AUTO_INCREMENT, number int(11) DEFAULT NULL, name varchar(45) DEFAULT NULL, tel varchar(45) DEFAULT NULL, address varchar(45) DEFAULT NULL, PRIMARY KEY (id) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;LOCK TABLES student WRITE;INSERT INTO student VALUES (1,1,小明,119,南京),(2,2,小郭,110,西藏),(

9、3,NULL,坤哥,117,朝鮮);UNLOCK TABLES;雙擊左側(cè)webservice庫(kù)名,將其設(shè)為默認(rèn)庫(kù),默認(rèn)庫(kù)的名字會(huì)加粗顯示,如果不設(shè)置默認(rèn)庫(kù),會(huì)影響下面的數(shù)據(jù)導(dǎo)入。將建表語(yǔ)句復(fù)制進(jìn)來(lái),執(zhí)行;數(shù)據(jù)導(dǎo)入成功。三、 正式開(kāi)發(fā)1) 服務(wù)端開(kāi)發(fā)a) 工程建立打開(kāi)myeclipse點(diǎn)擊NewWeb Project新建一個(gè)Web工程新建工程名為myservice,一直默認(rèn)執(zhí)行。右鍵點(diǎn)擊工程,右鍵菜單里選擇Properties,將工程編碼設(shè)置為UTF-8b) 編寫(xiě)mysql數(shù)據(jù)庫(kù)訪問(wèn)功能模塊將mysql的連接驅(qū)動(dòng)包(mysql-connector-java-5.1.7-bin.jar)拷貝至We

10、bRootWEB-INFlib下在src目錄下新建一個(gè)database包,分別錄入以下4個(gè)類,因?yàn)闋可娴絡(luò)dbc封裝類的開(kāi)發(fā),這里就不詳細(xì)闡述,僅貼出源代碼。(一) ConnectionFactory.java (連接工廠類)package database;import java.sql.Connection;import java.sql.DriverManager;import java.util.ResourceBundle;/* 類名:ConnectionFactory * 作用:產(chǎn)生數(shù)據(jù)庫(kù)連接對(duì)象 * 屬性: * 方法:Connection getConnection() * 作用

11、:返回?cái)?shù)據(jù)庫(kù)連接對(duì)象 * 參數(shù):無(wú) * 返回:數(shù)據(jù)庫(kù)連接對(duì)象 * 其它:返回的aConnection不會(huì)自動(dòng)提交JDBC事務(wù) * 創(chuàng)建人:陶尚明 * */public abstract class ConnectionFactory /* 數(shù)據(jù)庫(kù)系統(tǒng)的屬性文件名: */ private static final String propertiesFileName = using_which_dbms; /* 獲取Connection對(duì)象 * * return Connection對(duì)象 * throws Exception SqlException異常 */ static synchronize

12、d public Connection getConnection() throws Exception String dbSystem=null; Connection aConnection; ResourceBundle db = ResourceBundle.getBundle(dbsystem); /讀取配置文件 dbSystem=db.getString(propertiesFileName); ResourceBundle rb = ResourceBundle.getBundle(dbSystem); /讀取配置文件 Class.forName(rb.getString(dat

13、abase.driver).newInstance(); aConnection = DriverManager.getConnection(rb.getString(database.url),rb.getString(database.username),rb.getString(database.password); /創(chuàng)建aConnection對(duì)象 aConnection.setAutoCommit(false); /設(shè)置不自動(dòng)提交事務(wù) return aConnection; /返回aConnection對(duì)象 /* 當(dāng)前使用的數(shù)據(jù)庫(kù)系統(tǒng)名稱 * * param echoable 如果啟

14、用回顯將在控制臺(tái)輸出描述當(dāng)前數(shù)據(jù)庫(kù)系統(tǒng)的信息 * return dbSystem 數(shù)據(jù)庫(kù)系統(tǒng)名稱 */ public static String getCurrentDBMS(boolean echoable) String dbSystem=null; ResourceBundle rb = ResourceBundle.getBundle(dbsystem); /讀取配置文件 dbSystem=rb.getString(propertiesFileName); if (echoable)System.out.println(the database system what you usin

15、g are +dbSystem); return dbSystem; (二) IOperationCore.java(數(shù)據(jù)庫(kù)操作接口)/* * 數(shù)據(jù)庫(kù)常用操作封裝 */package database;import java.sql.ResultSet;import java.sql.SQLException;import java.util.Collection;/* 類名:IOperationCore * * 作用: 該接口封裝了數(shù)據(jù)庫(kù)操作的大部分方法 * * 創(chuàng)建人:陶尚明 */public interface IOperationCore /* sql更新語(yǔ)句 * * param qu

16、eryString 查詢語(yǔ)句 * return 返回一個(gè)ResultSet結(jié)果集 * * exception SQLException */ ResultSet executeQuery(String queryString) throws SQLException; /* * sql更新語(yǔ)句 * * param updateString 數(shù)據(jù)庫(kù)更新語(yǔ)句 * return 更新數(shù)據(jù)庫(kù)影響行數(shù) * * exception SQLException */ int executeUpdate(String updateString) throws SQLException; /* * 讀取行個(gè)數(shù) *

17、 * param queryString 查詢語(yǔ)句 * return Transact-SQL 查詢后的虛擬表的行數(shù) * * exception SQLException */ int getRowCount(String queryString) throws SQLException; /* * 讀取列數(shù)個(gè)數(shù) * * param queryString 查詢語(yǔ)句 * return Transact-SQL 查詢后的虛擬表的列數(shù) * * exception SQLException */ int getColumnCount(String queryString) throws SQLExc

18、eption; /* * 讀取列名 * * param columIndex 列索引 * param queryString 提供ResultSet二維表的查詢字符串 * return ResultSet表中的指定的列名 * * exception SQLException */ String getColumnName(int columIndex, String queryString) throws SQLException; /* * 讀取queryString查詢結(jié)果集ResultSet表中的所有列名 * * param queryString 用于返回ResultSet結(jié)果集的語(yǔ)句

19、 * return 表中的所有列名 * throws SQLException */ Collection getColumnNames(String queryString) throws SQLException; /* * 讀取queryString查詢結(jié)果集ResultSet表中的所有字段類型名稱 * * param queryString 用于返回查詢結(jié)果集的語(yǔ)句 * return 表中的所有字段類型名稱 * throws SQLException */ Collection getColumnTypeNames(String queryString) throws SQLExcep

20、tion; /* * 獲取ResultSet二維表中指定位置的值,目前只支持mysql * * param rowIndex 行索引 * param columnIndex 列索引 * param queryString 產(chǎn)生一個(gè)ResultSet結(jié)果集的查詢語(yǔ)句 * return 指定位置的數(shù)據(jù)記錄 * * exception SQLException */ Object getValueAt(int rowIndex, int columnIndex, String queryString) throws SQLException; /* * 釋放系統(tǒng)連接資源 * 一旦關(guān)閉,數(shù)據(jù)庫(kù)的操作將

21、全部無(wú)效 * exception SQLException 如果關(guān)閉失敗將拋出SQLException*/ void dispose() throws SQLException;(三) OperationCoreImpl.java(數(shù)據(jù)庫(kù)操作接口實(shí)現(xiàn))package database;import java.sql.Connection;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.SQLException;import java.sql.Statement;import java.uti

22、l.ArrayList;import java.util.Collection;/* 類名:OperationCoreImplements * * 作用: 該類實(shí)現(xiàn)IOperationCore接口的所有方法 * * 創(chuàng)建人:陶尚明 * */public class OperationCoreImpl implements IOperationCore protected Connection aConnection = null; protected Statement aStatement = null; protected ResultSet aResultSet = null; prot

23、ected ResultSetMetaData rsmd = null; protected static OperationCoreImpl m_instance = null; /* Singleton 即單例(態(tài))模式,用來(lái)生成對(duì)象唯一實(shí)例的方法 * * return OperationCoreImplements的一個(gè)實(shí)例 * throws Exception */ public static OperationCoreImpl createFactory() throws Exception if(m_instance=null) m_instance=new OperationCo

24、reImpl(); return m_instance; /* exception Exception */ private OperationCoreImpl() throws Exception init(); /* * 負(fù)責(zé)初始化Connection連接 * throws Exception */ private void init() throws Exception aConnection=ConnectionFactory.getConnection(); /* * 釋放系統(tǒng)連接資源 *一旦關(guān)閉,數(shù)據(jù)庫(kù)的操作將全部無(wú)效*/ public void dispose() try if(

25、aResultSet!=null) aResultSet.close(); catch (SQLException e) e.printStackTrace(); try if(aStatement!=null) aStatement.close(); catch (SQLException e) e.printStackTrace(); try if(aConnection!=null) aConnection.close(); catch (SQLException e) e.printStackTrace(); /* sql更新語(yǔ)句 * * param queryString 查詢語(yǔ)句

26、* return 返回一個(gè)ResultSet結(jié)果集 * * exception SQLException */ public ResultSet executeQuery(String queryString) try aStatement = aConnection.createStatement(); aResultSet = aStatement.executeQuery(queryString); catch (SQLException e) aResultSet=null; e.printStackTrace(); return aResultSet; /* * sql更新語(yǔ)句 *

27、* param updateString 數(shù)據(jù)庫(kù)更新語(yǔ)句 * return 更新數(shù)據(jù)庫(kù)影響行數(shù) * * exception SQLException */ public int executeUpdate(String updateString) int effectedRows=0; try aConnection.setAutoCommit(false); aStatement = aConnection.createStatement(); effectedRows = aStatement.executeUpdate(updateString); aCmit(

28、); catch(SQLException ex) System.out.println(數(shù)據(jù)庫(kù)寫(xiě)操作失敗!); if(aConnection!=null) try aConnection.rollback(); System.out.println(JDBC事務(wù)回滾成功); catch (SQLException e) System.out.println(JDBC事務(wù)回滾失敗); e.printStackTrace(); return effectedRows; /* * 讀取queryString查詢結(jié)果集ResultSet表中的所有列名 * * param queryString 用于

29、返回ResultSet結(jié)果集的語(yǔ)句 * return 表中的所有列名 * throws SQLException */ public Collection getColumnNames(String queryString) ArrayList ColumnNames=new ArrayList(); try aResultSet=executeQuery(queryString); ResultSetMetaData rsmd=aResultSet.getMetaData(); int j=rsmd.getColumnCount(); for(int k=0;kj;k+) ColumnNam

30、es.add(rsmd.getColumnName(k+1); catch (SQLException e) ColumnNames=null; e.printStackTrace(); return ColumnNames; /* * 讀取queryString查詢結(jié)果集ResultSet表中的所有字段類型名稱 * * param queryString 用于返回查詢結(jié)果集的語(yǔ)句 * return 表中的所有字段類型名稱 * throws SQLException */ public Collection getColumnTypeNames(String queryString) Arra

31、yList ColumnNames=new ArrayList(); try aResultSet=executeQuery(queryString); ResultSetMetaData rsmd=aResultSet.getMetaData(); int j=rsmd.getColumnCount(); for(int k=0;kj;k+) ColumnNames.add(rsmd.getColumnTypeName(k+1); catch (SQLException e) ColumnNames=null; e.printStackTrace(); return ColumnNames;

32、 /* * 讀取列名 * * param columIndex 列索引 * param queryString 提供ResultSet二維表的查詢字符串 * return ResultSet表中的指定的列名 * * exception SQLException */ public String getColumnName(int columIndex, String queryString) String columnName=null; try aResultSet=executeQuery(queryString); rsmd=aResultSet.getMetaData(); colum

33、nName=rsmd.getColumnName(columIndex + 1); catch (SQLException e) e.printStackTrace(); return columnName; /* * 讀取列數(shù)個(gè)數(shù) * * param queryString 查詢語(yǔ)句 * return Transact-SQL 查詢后的虛擬表的列數(shù) * * exception SQLException */ public int getColumnCount(String queryString) int columnCount=0; try aResultSet=executeQuery(

34、queryString); ResultSetMetaData rsmd=aResultSet.getMetaData(); columnCount = rsmd.getColumnCount(); catch (SQLException e) e.printStackTrace(); return columnCount; /* * 讀取行個(gè)數(shù) * * param queryString 查詢語(yǔ)句 * return Transact-SQL 查詢后的虛擬表的行數(shù) * * exception SQLException */ public int getRowCount(String query

35、String) int rowCount=0; try aResultSet=executeQuery(queryString); while(aResultSet.next() rowCount=aResultSet.getInt(1); catch (SQLException e) e.printStackTrace(); return rowCount; /* * 獲取ResultSet二維表中指定位置的值,目前只支持mysql * * param rowIndex 行索引 * param columnIndex 列索引 * param queryString 產(chǎn)生一個(gè)ResultSet

36、結(jié)果集的查詢語(yǔ)句 * return 指定位置的數(shù)據(jù)記錄 * * exception SQLException */ public Object getValueAt(int rowIndex, int columnIndex, String queryString) Object values=null; try aResultSet=executeQuery(queryString); /指針下移一行 aResultSet.absolute(rowIndex + 1); values=aResultSet.getObject(columnIndex + 1); catch (SQLExcep

37、tion e) e.printStackTrace(); return values; (四) DBOperationAdapter.java (對(duì)用戶透明的數(shù)據(jù)庫(kù)操作類)package database;import java.sql.ResultSet;import java.sql.SQLException;import java.util.Collection;/* 類名:DBOperationAdapter * 作用: 該類中的所有方法對(duì)用戶透明,提供數(shù)據(jù)庫(kù)操作的常用方法 * * 說(shuō)明:該類使用了Adapter 模式與 Singleton 模式, * 類自身為Adpater,Oper

38、ationCoreImplements為Adapte類; * 實(shí)例化類自生對(duì)象的時(shí)候用到了Singleton模式, * 即DBOperationAdapter.getInstance() * 創(chuàng)建人:陶尚明 */public class DBOperationAdapter extends ConnectionFactory private static IOperationCore objIOperationCore = null; private static DBOperationAdapter m_instance = null; private DBOperationAdapter(

39、) try objIOperationCore=OperationCoreImpl.createFactory(); catch (Exception e) e.printStackTrace(); public static DBOperationAdapter getInstance() if(m_instance=null) m_instance=new DBOperationAdapter(); return m_instance; /* sql更新語(yǔ)句 * * param queryString 查詢語(yǔ)句 * return 返回一個(gè)ResultSet結(jié)果集 * * exception

40、 SQLException */ public ResultSet executeQuery(String queryString) throws SQLException return objIOperationCore.executeQuery(queryString); /* sql更新語(yǔ)句 * * param updateString 數(shù)據(jù)庫(kù)更新語(yǔ)句 * return 更新數(shù)據(jù)庫(kù)影響行數(shù) * * exception SQLException */ public int executeUpdate(String updateString) throws SQLException retu

41、rn objIOperationCore.executeUpdate(updateString); /* sql刪除語(yǔ)句:updateString * * param deleteString 數(shù)據(jù)庫(kù)插入語(yǔ)句 * return 刪除數(shù)據(jù)影響行數(shù) * * exception SQLException */ public int executeDelete(String deleteString) throws SQLException return objIOperationCore.executeUpdate(deleteString); /* sql插入語(yǔ)句:insertString * *

42、 param insertString 數(shù)據(jù)庫(kù)插入語(yǔ)句 * return 插入數(shù)據(jù)影響行數(shù) * * exception SQLException */ public int executeInsert(String insertString) throws SQLException return objIOperationCore.executeUpdate(insertString); /* * 讀取行個(gè)數(shù) * * param queryString 查詢語(yǔ)句 * return Transact-SQL 查詢后的虛擬表的行數(shù) * * exception SQLException */ pub

43、lic int getRowCount(String queryString) throws SQLException return objIOperationCore.getRowCount(queryString); /* 讀取列數(shù)個(gè)數(shù) * * param queryString 查詢語(yǔ)句 * return Transact-SQL 查詢后的虛擬表的列數(shù) * * exception SQLException */ public int getColumnCount(String queryString) throws SQLException return objIOperationCor

44、e.getColumnCount(queryString); /* * 讀取列名 * * param columIndex 列索引 * param queryString 提供ResultSet二維表的查詢字符串 * return ResultSet表中的指定的列名 * * exception SQLException */ public String getColumnName(int columIndex, String queryString) throws SQLException return objIOperationCore.getColumnName(columIndex, q

45、ueryString); /* * 讀取queryString查詢結(jié)果集ResultSet表中的所有字段類型名稱 * * param queryString 用于返回查詢結(jié)果集的語(yǔ)句 * return 表中的所有字段類型名稱 * throws SQLException */ public Collection getColumnTypeNames(String queryString) throws SQLException return objIOperationCore.getColumnTypeNames(queryString); /* * 讀取queryString查詢結(jié)果集Resu

46、ltSet表中的所有列名 * * param queryString 用于返回ResultSet結(jié)果集的語(yǔ)句 * return 表中的所有列名 * throws SQLException */ public Collection getColumnNames(String queryString) throws SQLException return objIOperationCore.getColumnNames(queryString); /* * 獲取ResultSet二維表中指定位置的值,目前只支持mysql * * param rowIndex 行索引 * param columnI

47、ndex 列索引 * param queryString 產(chǎn)生一個(gè)ResultSet結(jié)果集的查詢語(yǔ)句 * return 指定位置的數(shù)據(jù)記錄 * * exception SQLException */ public Object getValueAt(int rowIndex, int columnIndex, String queryString) throws SQLException return objIOperationCore.getValueAt(rowIndex, columnIndex,queryString); /* * 釋放系統(tǒng)連接資源 * 一旦關(guān)閉,數(shù)據(jù)庫(kù)的操作將全部無(wú)效 * exception SQ

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論