版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、目 錄一 使用Axis和XFire發(fā)布Web Service21.1 準(zhǔn)備工作21.1.1 新建工程21.1.2 axis依賴文件31.1.3 XFire依賴文件31.2 Axis發(fā)布Web Service41.2.1 傳遞簡單數(shù)據(jù)類型的Web Service41.2.2 帶自定義對象傳遞的Web Service81.3 XFire發(fā)布Web Services101.3.1 傳遞簡單數(shù)據(jù)類型的Web Service101.3.2傳遞復(fù)雜數(shù)據(jù)類型的Web Service12附錄: 1Server的結(jié)構(gòu)16二 調(diào)用Web Services172.1 準(zhǔn)備工作172.1.1 新建工程172.1.2
2、啟動Tomcat上發(fā)布的1Server服務(wù)172.2 Axis發(fā)布的Web Service調(diào)用方式182.2.1 Dynamic Invocation Interface (DII)方式182.2.2 Dynamic Proxy方式192.2.3 Stubs方式202.3調(diào)用XFire發(fā)布的Web Service222.3.1服務(wù)以jar包形式發(fā)布的時候 直接調(diào)用232.3.2 使用Axis的Client包232.3.3 使用Xfire的Client包24附錄2:2Client目錄結(jié)構(gòu)31一 使用Axis和XFire發(fā)布Web Service1.1 準(zhǔn)備工作Axis主頁: http:/ws.a
3、/ 目前最新1.4Axis下載:/dist/ws/XFire主頁:/XFire下載:/Download去以上站點下載axis最新包 和XFire最新包,包內(nèi)有axis和XFire依賴的其他jar包。1.1.1 新建工程1.1.2 axis依賴文件1.1.3 XFire依賴文件1.2 Axis發(fā)布Web Service1.2.1 傳遞簡單數(shù)據(jù)類型的Web Service1. 把Axis依賴的jar包放入lib文件夾下.2. 在web.x
4、ml中加入如下:<!- * axis ws start * -><listener><listener-class>org.apache.axis.transport.http.AxisHTTPSessionListener</listener-class></listener><servlet><servlet-name>AxisServlet</servlet-name><servlet-class>org.apache.axis.transport.http.AxisServlet
5、</servlet-class></servlet><servlet><servlet-name>AdminServlet</servlet-name><servlet-class>org.apache.axis.transport.http.AdminServlet</servlet-class><load-on-startup>100</load-on-startup></servlet><servlet><servlet-name>SOAPMon
6、itorService</servlet-name><servlet-class>org.apache.axis.monitor.SOAPMonitorService</servlet-class><init-param><param-name>SOAPMonitorPort</param-name><param-value>5001</param-value></init-param><load-on-startup>100</load-on-startup>&
7、lt;/servlet><servlet-mapping><servlet-name>AxisServlet</servlet-name><url-pattern>/servlet/AxisServlet</url-pattern></servlet-mapping><servlet-mapping><servlet-name>AxisServlet</servlet-name><url-pattern>*.jws</url-pattern></ser
8、vlet-mapping><servlet-mapping><servlet-name>AxisServlet</servlet-name><url-pattern>/services/*</url-pattern></servlet-mapping><servlet-mapping><servlet-name>SOAPMonitorService</servlet-name><url-pattern>/SOAPMonitor</url-pattern>&l
9、t;/servlet-mapping><!- uncomment this if you want the admin servlet -><!-<servlet-mapping><servlet-name>AdminServlet</servlet-name><url-pattern>/servlet/AdminServlet</url-pattern></servlet-mapping>-><session-config><!- Default to 5 minute s
10、ession timeouts -><session-timeout>5</session-timeout></session-config><!- currently the W3C havent settled on a media type for WSDL;/TR/2003/WD-wsdl12-20030303/#ietf-draftfor now we go with the basic 'it's XML' response -><mime-mapping>&l
11、t;extension>wsdl</extension><mime-type>text/xml</mime-type></mime-mapping><mime-mapping><extension>xsd</extension><mime-type>text/xml</mime-type></mime-mapping><!- * axis ws end * ->3. 發(fā)布到Tomcat5.0+ 啟動Tomcat服務(wù)啟動的時候若出現(xiàn)下面錯誤。這個是因為配置文件
12、沒有,沒有關(guān)系。訪問http:/localhost:8080/1Server/servlet/AxisServlet 查看Axis是否配置成功。出現(xiàn)該圖表示配置成功。4. 新建HelloAxis.java文件package .freshpower.services;public class HelloAxis public String sayHello(String name)System.out.println("-axis1 被調(diào)用-");return "Hello! "+name;5. 在工程下新建deploy.wsdd文件內(nèi)容如下:<de
13、ployment xmlns="/axis/wsdd/" xmlns:java="/axis/wsdd/providers/java"> <service name="HelloAxis" provider="java:RPC"> <parameter name="className" value=".freshpower.services.HelloAxis"/>
14、<parameter name="allowedMethods" value="*"/> </service></deployment>在同目錄下新建deploy.bat批處理文件,內(nèi)容如下:echo.echo 生成的server-config.wsdd在Tomcat發(fā)布的應(yīng)用下 echo.set Axis_Lib=D:projects1ServerwebappWEB-INFlibset Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%set Axis_Servlet=http:/loc
15、alhost:8080/1Server/servlet/AxisServlet%Java_Cmd% org.apache.axis.client.AdminClient -l%Axis_Servlet% deploy.wsddpause運行deploy.bat文件6. 在執(zhí)行完后去%TOMCAT_HOME%webapps1ServerWEB-INF 文件夾下找到server-config.wsdd文件,把該文件復(fù)制到1ServerwebappWEB-INF下。我們打開該文件可以看到下面段落:這就是我們剛才發(fā)布的web service的描述段落。7. 刷新http:/localhost:8080
16、/1Server/servlet/AxisServlet 查看Web Service列表。點擊(wsdl)可以查看該Web Service對應(yīng)的wsdl文件。1.2.2 帶自定義對象傳遞的Web Service1. 新建User.java文件package .freshpower.bean;public class User public User()public User(String name,String age) = name;this.age = age;public String name;public String age;public String getNa
17、me() return name;public void setName(String name) = name;public String getAge() return age;public void setAge(String age) this.age = age;2. 新建HelloAxisObj.javapackage .freshpower.services;import java.util.ArrayList;import java.util.List;import .freshpower.bean.User;public class HelloAxisOb
18、j public User getUser(User user)System.out.println("-axis2 被調(diào)用-");user.setName("ujjboy");user.setAge("22");return user;public List<String> getList()System.out.println("-axis2 被調(diào)用-");List<String> list = new ArrayList<String>();list.add("a
19、aaaaaa");list.add("bbbbbbb");list.add("ccccccc");return list;3. 我們可以直接修改server-config.wsdd文件來發(fā)布Web Service。直接插入下面段落來發(fā)布。<service name="HelloAxisObj" provider="java:RPC"> <parameter name="allowedMethods" value="*"/> <param
20、eter name="className" value=".freshpower.services.HelloAxisObj"/> </service> <beanMapping qname="scNS:List" xmlns:scNS="urn:BeanService" languageSpecificType="java:java.util.List" /> <beanMapping qname="scNS:User" xmlns:sc
21、NS="urn:BeanService" languageSpecificType="java:.freshpower.bean.User" />4. 重啟Tomcat服務(wù)器。5. 刷新http:/localhost:8080/1Server/servlet/AxisServlet 查看Web Service列表。點擊(wsdl)可以查看該Web Service對應(yīng)的wsdl文件。1.3 XFire發(fā)布Web Services1.3.1 傳遞簡單數(shù)據(jù)類型的Web Service1. 把XFire依賴的jar包放入lib文件夾下。2. 在web.xm
22、l中加入如下代碼:<!- * xfire start * -><servlet><servlet-name>XFireServlet</servlet-name><servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class><load-on-startup>0</load-on-startup></servlet><servlet-mapping><ser
23、vlet-name>XFireServlet</servlet-name><url-pattern>/servlet/XFireServlet/*</url-pattern></servlet-mapping><servlet-mapping><servlet-name>XFireServlet</servlet-name><url-pattern>/service/*</url-pattern></servlet-mapping><!- * Xfire end
24、* ->3. 編寫程序代碼首先編寫一個功能的接口類。package .freshpower.services;public interface HelloXfire public String sayHello(String name);再編寫一個功能的接口實現(xiàn)類。package .freshpower.services;public class HelloXfireImpl implements HelloXfirepublic String sayHello(String name) System.out.println("-xfire1 被調(diào)用-");retur
25、n "Hello! "+name;4. 在src下或者直接在webappWEB-INF下創(chuàng)建一個文件夾META-INF,在META-INF下邊在創(chuàng)建一個目錄xfire,在xfire目錄里邊創(chuàng)建一個services.xml文件,內(nèi)容如下:<?xml version="1.0" encoding="UTF-8"?><beans><service xmlns="/config/1.0"><name>HelloXfire<
26、/name><namespace></namespace><serviceClass>.freshpower.services.HelloXfire</serviceClass><implementationClass>.freshpower.services.HelloXfireImpl</implementationClass></service></beans>5. 重啟Tomcat服務(wù) 出現(xiàn)如下圖加載信息代表發(fā)布正確完成。6. 訪問http:/localhost:8080/1Serve
27、r/service/ 查看Web Service列表和wsdl文件。點擊wsdl就可以查看它的wsdl描述文件。1.3.2 傳遞復(fù)雜數(shù)據(jù)類型的Web Service1. 了解XFire的綁定機制Aegis首先說明,Aegis為XFire默認(rèn)的綁定方式,那么何時需要綁定?Aegis支持的類型1).基本類型:int,double,float,long,byte,short,String,decimal2).數(shù)組(Array)3).集合類型(Collection)4).日期類型:java.util.Date, java.util.Calendar, java.sql.Timestamp, java.
28、sql.Date, java.sql.Time5).XML:org.w3c.dom.Docmument, org.jdom.Element, XMLStreamReader, XML文本6).包含以上類型的自定義類型Aegis需要綁定的類型1).集合類型(Collection)2).包含集合類型的自定義類型當(dāng)使用JDK1.4時,或者是使用了JDK1.5及以上版本但是沒有使用泛型的時候、當(dāng)遇到需要映射POJO或配置WebService接口方法返回類型(如集合類型)時,需要進行綁定,此時aegis的綁定為建立.aegis.xml的文件。2. 編寫接口類HelloXfireObj.javapacka
29、ge .freshpower.services;import java.util.List;import .freshpower.bean.User;public interface HelloXfireObj public User getUser(User user);public List<String> getList();編寫接口實現(xiàn)類package .freshpower.services;import java.util.ArrayList;import java.util.List;import .freshpower.bean.User;public class
30、HelloXfireObjImpl implements HelloXfireObjpublic User getUser(User user)System.out.println("-Xfire2 被調(diào)用-");user.setName("ujjboy");user.setAge("22");return user;public List<String> getList()System.out.println("-Xfire2 被調(diào)用-");List<String> list = new
31、ArrayList<String>();list.add("aaaaaaa");list.add("bbbbbbb");list.add("ccccccc");return list;3. 綁定數(shù)據(jù)類型。新建與接口類同名的.aegis.xml文件 如下圖:文件內(nèi)容如下:<?xml version="1.0" encoding="UTF-8"?><mappings> <mapping> <method name="getUser&qu
32、ot;> <parameter index="0" componentType=".freshpower.bean.User" /> <return-type componentType=".freshpower.bean.User" /> </method> </mapping></mappings>注意 List里面帶的是簡單數(shù)據(jù)類型就不用綁定,帶的是復(fù)雜類型就用綁定類型。而且List一定要聲明所包含的對象。例如List<User>,List<in
33、t>等。4. 修改webappWEB-INFservices.xml 發(fā)布Web Service。和上例沒什么區(qū)別,在文件中增加節(jié)點:<service xmlns="/config/1.0"><name>HelloXfireObj</name><namespace></namespace><serviceClass>.freshpower.services.HelloXfireObj</serviceClass><implement
34、ationClass>.freshpower.services.HelloXfireObjImpl</implementationClass></service>5. 重啟Tomcat 6. 訪問http:/localhost:8080/1Server/service/ 查看Web Service列表和wsdl文件。附錄1: 1Server工程的結(jié)構(gòu)二 調(diào)用Web Services2.1 準(zhǔn)備工作2.1.1 新建工程新建一個2Client的Web Project 把剛才1Server的lib下的jar包復(fù)制過來.2.1.2 啟動Tomcat上發(fā)布的1Server服
35、務(wù) 1Server服務(wù)上應(yīng)該有axis和XFire發(fā)布的4個Web Service等待調(diào)用。http:/localhost:8080/1Server/services/HelloAxis?wsdl http:/localhost:8080/1Server/services/HelloAxisObj?wsdl http:/localhost:8080/1Server/service/HelloXfire?wsdl http:/localhost:8080/1Server/service/HelloXfireObj?wsdl 2.2 Axis發(fā)布的Web Service調(diào)用方式Axis支持三種方法
36、:ü Dynamic Invocation Interface (DII)方式ü Dynamic Proxy方式 ü Stubs方式 2.2.1 Dynamic Invocation Interface (DII)方式該方式可以不用生成本地客戶端,直接從wsdl文件中得到操作方法,傳遞的參數(shù)等。然后按照下面的1到6步寫代碼就可以。step1: 創(chuàng)建一個Service實例,注意是必須的!<br>step2: 創(chuàng)建Call實例,也是必須的!<br>step3: 為Call設(shè)置服務(wù)的位置 操作的方法名<br>step4: 映射要傳遞自
37、定義類型 設(shè)置返回類型等(可選)<br>step5: 為方法增加參數(shù),傳幾個參數(shù)寫幾個(可選)<br>step6: 用參數(shù)數(shù)組調(diào)用Web Service<br>package .freshpower.client;import space.QName;import javax.xml.rpc.ParameterMode;import org.apache.axis.client.Call;import org.apache.axis.client.Service;import org.apache.axis.encoding.XM
38、LType;public class TestAxis1 public static void main(String args) throws Exception /* step1: 創(chuàng)建一個Service實例,注意是必須的!*/Service service = new Service(); /*step2:創(chuàng)建Call實例,也是必須的!*/Call call = (Call) service.createCall();/*step3: 為Call設(shè)置服務(wù)的位置 操作方法名 */call.setTargetEndpointAddress(new .URL("http:/local
39、host:8080/1Server/services/HelloAxis");call.setOperationName("sayHello");/操作的方法 注意 方法名與HelloAxis.java中一樣/*step4映射要傳遞自定義類型 設(shè)置返回類型等(可選) 如果返回的是自定義類型也要映射*/call.setReturnType(XMLType.XSD_STRING); /*step5: 為方法增加參數(shù),傳幾個參數(shù)寫幾個*/call.addParameter( new QName("/",&qu
40、ot;name"),XMLType.XSD_STRING,ParameterMode.IN );/*step6: 用參數(shù)數(shù)組調(diào)用Web Service*/String name = "freshpower"String result = (String) call.invoke(new Objectname);System.out.println(result);執(zhí)行的結(jié)果是:2.2.2 Dynamic Proxy方式 該方法首先是在本地虛擬一個服務(wù)端Web Service的接口。該接口繼承java.rmi.Remote類。package .freshpower.
41、client;import java.rmi.Remote;import java.rmi.RemoteException;public interface TestAxis2Iface extends Remote public String sayHello(String name) throws RemoteException;然后我們再寫一個代理服務(wù)在本地調(diào)用這個接口類。package .freshpower.client;import .MalformedURLException;import .URL;import java.rmi.RemoteException;import j
42、space.QName;import javax.xml.rpc.Service;import javax.xml.rpc.ServiceException;import javax.xml.rpc.ServiceFactory;public class TestAxis2Proxy public static void main(String args) throws ServiceException, MalformedURLException, RemoteException String wsdlUrl = "http:/localhost:8080
43、/1Server/services/HelloAxis?wsdl"String nameSpaceUri = "http:/localhost:8080/1Server/services/HelloAxis"String serviceName = "HelloAxisService"/從wsdl文件中得到String portName = "HelloAxis"/從wsdl文件中得到ServiceFactory serviceFactory = (ServiceFactory) ServiceFactory.newInst
44、ance();Service service = serviceFactory.createService(new URL(wsdlUrl), new QName(nameSpaceUri, serviceName);TestAxis2Iface proxyClient = (TestAxis2Iface) service.getPort(new QName(nameSpaceUri, portName), TestAxis2Iface.class);System.out.println(proxyClient.sayHello("freshpower");運行結(jié)果是:2.
45、2.3 Stubs方式 Stubs方式是使用axis自帶的WSDL2JAVA根據(jù)發(fā)布的WSDL文件生成本地客戶端,然后直接在本地調(diào)用。首先學(xué)習(xí)下WSDL2JAVA工具。我們新建一個wsdl2java.bat 內(nèi)容如下:echo -echo 設(shè)置Output_Path設(shè)置為你要生成的路徑echo Package設(shè)置為生成文件的包路徑echo 最后是wsdl可以是文件路徑 可以是URLecho -pauseset Axis_Lib=D:projects2ClientwebappWEB-INFlibset Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%set Out
46、put_Path=D:projects2Clientsrcset Package=.freshpower.autoClient.HelloAxisObj%Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% -p%Package% http:/localhost:8080/1Server/services/HelloAxisObj?wsdl我們以第二個傳遞對象的WebService為例。執(zhí)行批處理生成客戶端后,我們來看下目錄結(jié)構(gòu)。生成客戶端后,我們就有了用戶自定義的User對象類,和一些web service的相關(guān)類(注意:List我
47、們還是用java.util.List,不用自動生成的)。有了本地客戶端,調(diào)用就十分簡單。我們可以利用客戶端使用前面介紹DII方式進行調(diào)用,也可以使用stubs方式調(diào)用。Stubs的調(diào)用方式十分簡單:服務(wù)名Service service = new 服務(wù)名ServiceLocator();服務(wù)名Stub client = (服務(wù)名Stub) service.get服務(wù)名();System.out.println(client.方法(參數(shù).);程序代碼如下:package .freshpower.client;import .freshpower.autoClient.HelloAxisObj.*
48、;public class TestAxisObj2 public static void main(String args) throws Exception HelloAxisObjService service = new HelloAxisObjServiceLocator();HelloAxisObjSoapBindingStub client = (HelloAxisObjSoapBindingStub) service.getHelloAxisObj();/測試結(jié)果User a = new User("11", "AAAA");System
49、.out.println(client.getUser(a).getName();List list = client.getList();System.out.println(list.toString();執(zhí)行后 我們發(fā)現(xiàn)getUser方法是正確的,而getList方法是錯誤的呢?看了錯誤原來自動生成的客戶端里面所有的getList相關(guān)方法都是使用的是.freshpower.autoClient.HelloAxisObj.List類,而我們需要的是java.util.List類。所以需要調(diào)整下自動生成的代碼和客戶端代碼。首先客戶端HelloAxisObj2.java需要調(diào)整。其次要把Hel
50、loAxisObj_PortType.java和HelloAxisObjSoapBindingStub.java中的“.freshpower.autoClient.HelloAxisObj.List”全部換成“java.util.List”,保存。重新執(zhí)行TestAxisObj2.java后沒提示錯誤。成功。2.3 調(diào)用XFire發(fā)布的Web ServiceXfire的調(diào)用也有很多,但是都大同小異:主要有:1. 服務(wù)以jar包形式發(fā)布的時候 直接調(diào)用 2. 使用AXIS的Client 包 ü Dynamic Invocation Interface (DII)ü Stubs
51、方式 (wsdl2java生成客戶端)3. 使用Xfire的Client包ü 通過WSDL文件直接調(diào)用程序 ü WsGen(Ant)生成客戶端調(diào)用程序 ü MyEclipse插件生成客戶端調(diào)用程序 2.3.1 服務(wù)以jar包形式發(fā)布的時候 直接調(diào)用 當(dāng)服務(wù)端以jar包形式發(fā)布,我們就相當(dāng)于有了客戶端的接口類和其自定義對象類。(無接口實現(xiàn)類)。為了節(jié)省時間,我們就直接在1Server下新建一個Client,相當(dāng)于擁有服務(wù)端的客戶端。代碼如下:package .freshpower.client;import .MalformedURLException;import
52、 java.rmi.RemoteException;import org.codehaus.xfire.XFireFactory;import org.codehaus.xfire.client.XFireProxyFactory;import org.codehaus.xfire.service.Service;import org.codehaus.xfire.service.binding.ObjectServiceFactory;import .freshpower.services.HelloXfire;public class TestXfire4jar public static
53、 void main(String args) throws RemoteException,MalformedURLException Service srvcModel = new ObjectServiceFactory().create(HelloXfire.class,null,"",null);XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire();String wsURL = "http:/localhost:8080/1Serve
54、r/service/HelloXfire"HelloXfire client = (HelloXfire) factory.create(srvcModel, wsURL);System.out.print(client.sayHello("freshpower");運行后得到結(jié)果:2.3.2 使用Axis的Client包只需要修改下wsdl2java.bat中的生成包地址和wsdl文件地址。(參見 wsdl2java.bat生成客戶端文件)刷新下工程目錄,我們就能發(fā)現(xiàn)剛生成的客戶端文件。有了客戶端文件,我們就可以使用DII或者Stubs方式就行調(diào)用。(參見2.2
55、.1 Dynamic Invocation Interface (DII)方式和2.2.3 Stubs方式)2.3.3 使用Xfire的Client包 通過WSDL文件直接調(diào)用程序該方式類似于axis的DII調(diào)用方式。只需要得到wsdl文件后放在src或者WEB-INFclasses下即可。也可以通過wsdl的URL地址調(diào)用。package .freshpower.client;import java.io.IOException;import .URL;import org.codehaus.xfire.client.Client;import org.springframe
56、work.core.io.ClassPathResource;import org.springframework.core.io.Resource;public class TestXfire1 public static void main(String args) throws IOException, Exception /本地的寫法/String wsdl = "HelloXfire.wsdl" / 對應(yīng)的WSDL文件/Resource resource = new ClassPathResource(wsdl);/Client client = new Clie
57、nt(resource.getInputStream(), null); /根據(jù)WSDL創(chuàng)建客戶實例/URL的寫法Client client = new Client(new URL("http:/localhost:8080/1Server/service/HelloXfire?wsdl");/ 調(diào)用特定的Web Service方法Object results = client.invoke("sayHello", new Object"freshpower");System.out.println(results0);調(diào)用結(jié)果為 WsGen(Ant)生成客戶端調(diào)用程序WsGen是Xfire提供的一個Ant Task。我們可以使用Ant輕松實現(xiàn)生成Xfire自己的客戶端。在程序下新建Ant文件夾,內(nèi)有bulid.bat和bulid.xml兩個文件,如圖:build.xml內(nèi)容如下:<
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 44864-2024信息技術(shù)生物特征識別手部血管識別終端通用規(guī)范
- 《勞動教育實踐》課后筆記
- 《工程化學(xué)》本科筆記
- 無人船生產(chǎn)企業(yè)的完整賬務(wù)處理-做賬實操
- wipo-2023年海牙年鑒摘要
- 2025新譯林版英語七年級下Unit 5 Animal friends單詞表
- 安徽皖南八校2024-2025學(xué)年高三年級上冊8月摸底考試地理試題
- 2024年雙端面磨床項目資金籌措計劃書代可行性研究報告
- 2024年農(nóng)業(yè)運輸項目資金籌措計劃書代可行性研究報告
- 小升初??家族e題-現(xiàn)代文閱讀檢測卷(二)-2022-2023學(xué)年部編版六年級語文下冊
- 芥末醬行業(yè)報告
- 玉米種子銷售計劃書
- 刑事受害人授權(quán)委托書范本
- 《電動叉車培訓(xùn)教材》課件
- 第3.2課《簡單相信傻傻堅持》(課件)-【中職專用】高二語文同步課件(高教版2023·職業(yè)模塊)
- 家紡面料未來發(fā)展趨勢報告
- 專業(yè)知識的敏捷和迭代
- 學(xué)校食堂消防安全知識培訓(xùn)
- 企業(yè)職工代表大會條例
- 總監(jiān)理工程師個人工作總結(jié)
- 馬鈴薯購銷合同范本
評論
0/150
提交評論