




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
用JAVA開發(fā)WEBService(學習總結)用JAVA開發(fā)WEBService(學習總結)
用JAVA開發(fā)WEBService
一學習前的預備
開發(fā)環(huán)境JBOSS4.05+axis1.4+JDK1.5
axis1.4下載地址:,選擇axis-bin-1_4.zip所需要的JAR包:
二部署axis
以我們CreateGWS405產品為例,在產品server\\default\\deploy名目下新建一個應用,比方叫myService.war。在里面新建文件夾“WEB-INF”,將axis1.4以下名目中的web.xml文件拷貝到“WEB-INF”下?!癮xis-bin-1_4\\axis-1_4\\webapps\\axis\\WEB-INF“。然后將jar包拷貝到產品server\\default\\lib下。至此部署完畢。
三開發(fā)webService效勞端
用編輯器編寫一個簡潔的效勞類,代碼如下:importjava.util.*;importjava.text.*;
publicclassSayHello{}
將該類復制到myService.war中與“WEB-INF”同級名目,然后更改其名字為”SayHello.jws”。
啟動CreateGWS405,在掃瞄器地址輸入:88/myService/SayHello.jws?wsdl翻開頁面后你會看到
ClicktoseetheWSDL四開發(fā)webService客戶端。(DLL方式)
這里為了便利測試,我們就以CreateGWS405產品為客戶端,在create.war下新建一個JSP頁面,代碼如下:
Stringurlname=“:88/myService/SayHello.jws?wsdl“;Services=newService();
Callcall=(Call)s.createCall();//要調用的方法名稱
call.setOperationName(“say“);
call.setTargetEndpointAddress(urlname);
//方法傳入一個String型參數(shù),返回值也是String
Stringval=(String)call.invoke(newObject[]{“haha“});
System.out.println(val);
需要導入:importorg.apache.axis.client.Call;
importorg.apache.axis.client.Service;
至此一個簡潔的客戶端就編寫好了。上面效勞端的方法參數(shù)是String,返回值也是String,而實際業(yè)務中可能還需要以int,boolean等類型做參數(shù),而且參數(shù)不止一個。返回值有時是int有時又是集合ArrayList那該怎么做呢,請看下面這個效勞端代碼
importjava.util.*;importjava.text.*;
publicclassSayHello{
publicString[]getStrs(Stringstr,inta){
System.out.println(“callwebservicegetStrs.....“);String[]abc=newString[a];abc[0]=str;returnabc;}
publicStringsay(Stringname){}
publicArrayListgetList(Stringstr){ArrayListstrs=newArrayList();
System.out.println(“callwebservicegetList.....“);strs.add(“A“);strs.add(“B“);strs.add(“C“);strs.add(str);returnstrs;}
System.out.println(“callwebservicesay.....“);return“Hello“+name;}
這個效勞端有4個方法,分別返回不同類型的值??蛻舳司鸵某?/p>
publicintgetInt(Stringarg){
System.out.println(“callwebservicegetInt.....“);returnarg.length();}
Stringurlname=
“:8080/aixs_proxy_demo/SayHello.jws?wsdl“;
Services=newService();try{
Callcall=(Call)s.createCall();//要調用的方法名稱
call.setOperationName(“say“);
call.setTargetEndpointAddress(urlname);
//方法傳入一個String型參數(shù),返回值也是String
Stringval=(String)call.invoke(newObject[]{“haha“});System.out.println(val);
Callcall4=(Call)s.createCall();//要調用的方法名稱
call4.setTargetEndpointAddress(urlname);call4.setOperationName(“getList“);Stringst1=“abc“;
//傳入參數(shù)類型為String
call4.addParameter(newQName(“st1“),XMLType.XSD_STRING,//返回一個ArrayList
call4.setReturnType(newQName(“ArrayList“),
ArrayListlist=(ArrayList)call4.invoke(newObject[]System.out.println(“+++++“+list.size());
Callcall2=(Call)s.createCall();Stringst2=“abc“;intcount=303;
call2.setOperationName(“getStrs“);call2.setTargetEndpointAddress(urlname);
//傳入參數(shù)類型為String和int
call2.addParameter(newQName(“st2“),XMLType.XSD_STRING,
ParameterMode.IN);
ArrayList.class);{st1});
ParameterMode.IN);
call2.addParameter(newQName(“count“),XMLType.XSD_INT,//返回一個String[]
call2.setReturnType(newQName(“String[]“),String[].class);String[]strs=(String[])call2.invoke(newObject[]{st2,
Callcall3=(Call)s.createCall();Stringst3=“abcdefg“;
call3.setOperationName(“getInt“);
call3.setTargetEndpointAddress(urlname);
//傳入參數(shù)類型為String
call3.addParameter(newQName(“st3“),XMLType.XSD_STRING,//返回一個int
call3.setReturnType(newQName(“Integer“),Integer.class);Integergetint=(Integer)call3.invoke(newObject[]{st3});System.out.println(getint);
Integer.valueOf(count)});
System.out.println(“-----“+strs.length);
ParameterMode.IN);
ParameterMode.IN);
}catch(Exceptione){}
e.printStackTrace();
需要導入:importjava.util.ArrayList;
space.QName;
importjavax.xml.rpc.ParameterMode;importorg.apache.axis.client.Call;importorg.apache.axis.client.Service;importorg.apache.axis.encoding.XMLType;
學習中需要留意的地方:
1、在客戶端調用其他程序的類時需要先把外部類引入到myService.war\\WEB-INF\\下新建
classes文件夾,包路徑與原類一樣,假如是jar文件,則需要復制到myService.war\\WEB-INF\\lib下。這樣.jws格式文件才能正確編譯為.class文件。
2、調用其他效勞器上的webservice時需要留意肯定要將包導入完全,假如包缺少會影響使
用。
五開發(fā)webService客戶端。DynamicProxy方式(代理方式)
還是以上面那個效勞端為例,用代理的方式來調用webService我們只需要對客戶端的代碼進展修改就可
以了,代碼如下
StringwsdlUrl=
“:8080/aixs_proxy_demo/SayHello.jws?wsdl“;
serviceFactory=ServiceFactory.newInstance();
//創(chuàng)立遠程效勞Serviceservice=(Service)serviceFactory.createService(newURL(wsdlUrl),newQName(
nameSpaceUri,serviceName));
//向上轉型為接口MyServiceInterfaceproxy=(MyServiceInterface)service.getPort(
newQName(nameSpaceUri,portName),
MyServiceInterface.class);
//調用相應方法System.out.println(“proxy.say----“
}+proxy.say(“l(fā)ilei“));
+proxy.getList(“AAAA“).size());+proxy.getStrs(“BBBB“,10).length);+proxy.getInt(“ABCDEFG“));
System.out.println(“proxy.getList----“System.out.println(“proxy.getStrs----“System.out.println(“proxy.getInt----“
StringnameSpaceUri=
//效勞名
StringserviceName=“SayHelloService“;//效勞
StringportName=“SayHello“;ServiceFactoryserviceFactory;try{
“:8080/aixs_proxy_demo/SayHello.jws“;
//創(chuàng)立代理對像
}catch(MalformedURLExceptione){
e.printStackTrace();e.printStackTrace();}catch(ServiceExceptione){
需要導入:
.MalformedURLException;.URL;space.QName;importjavax.xml.rpc.ServiceException;importjavax.xml.rpc.ServiceFactory;
importorg.apache.axis.client.Service;
MyServiceInterface接口類的編寫
importjava.rmi.Remote;importjava.util.*;
publicinterfaceMyServiceInterfaceextendsRemote{}
publicStringsay(Stringname);
publicArrayListgetList(Stringstr);
publicString[]getStrs(Stringstr,inta);
publicintgetInt(Stringarg);
需要留意的是:
1、接口必需繼承Remote類,才能做代理
2、接口里面的方法必需和jws文件中的方法保持全都。
擴展閱讀:《Java_Web開發(fā)實戰(zhàn)經典》總結-第三局部Web高級開發(fā)(圖文并貌)
第三局部Web高級開發(fā)
第九章Servlet程序開發(fā)
通過本章的的學習,使我了解了servlet與jsp之間的關系和servlet的生命周期及對應的操作方法及內置對象在servlet中的使用。了解了requestdispatcher接口的作用,并可以使用mvc進展程序的開發(fā),把握過濾器的根本原理及應用和監(jiān)聽器的根本原理及應用。
Servlet(效勞器端小程序):多線程、可移植。最大好處:它可以處理客戶端傳來的HTTP懇求,并返回一個響應。(沒有Main主程序)
接口類繼承關系?
Servlet處理的根本流程:
Servlet分類?
1、請區(qū)分容器和效勞器?
2、關閉容器||一個Servlet長時間不使用和動態(tài)加載怎樣實現(xiàn)?(servlet銷毀)3、回憶config對象、模板設計模式(servlet程序本身應用);
4、Servlet生命周期掌握的3個方法:init(),service()(doGet()、doPost())和destory();這些方法在哪個類里?
protectedvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,java.io.IOException覆寫里要擴大訪問權限,
要想實現(xiàn)一個Servlet則肯定要繼承HttpServlet類,并覆寫相應方法,編譯完成后立刻配置web.xml文件。
為什么要在WEB-IN/web.xml中進展Servlet程序的映射配置?
答:zz.servlet.HelloServlet又是“包.類”,反射有木有!
訪問Servlet程序時,是以*.class形式存在。
過濾器就是個收各種門票的!應用:編碼過濾器進化
第十章表達式語言
通過本章的的學習,使我了解了表達式語言的作用及與4種屬性范圍的關系,可以使用表達式完成數(shù)據(jù)的輸出,把握了表達式語言中各種運算符的使用。
博客筆記:
第十一章Tomcat數(shù)據(jù)源
通過本章的的學習,使我了解了數(shù)據(jù)源的作用及操作原理,把握了tomcat中數(shù)據(jù)源的配置和數(shù)據(jù)源的查找及使用。
第十二章JSP標簽
通過本章的的學習,使我了解了標簽庫的主要作用及標簽的操作原理,把握了標簽的根本開發(fā)模式,并且可以通過tagsupport類完成迭代傳輸?shù)墓δ?,理解了標簽的使用及與tagsupport類的區(qū)分,tagextrainfo類和variableinfo的使用。要想完成一個標簽的開發(fā),需要有以下四局部:
TagSupport類的四個方法和常量;
Tag接口和IteratorTag接口的執(zhí)行區(qū)分:
第十三章JSP標準標簽庫
通過本章的的學習,使我了解了JSTL的主要作用及配置和JSTL中core標簽的使用,了解了format和SQL標簽的使用。
第十四章Ajax開發(fā)技術
通過本章的的學習,使我了解了AJAX技術的主要作用,和XMLHttprequest對象的作用,并可以使用XMLHttprequest對象進展操作。
第一個Ajax程序
背景學問:Ajax指的是異步JavaScript及XML(AsynchronousJavaScriptAndXML)。AJAX不是一種新的編程語言,而是一種用于創(chuàng)立更好更快以及交互性更強的
Web應用程序的技術。通過AJAX,您的JavaScript可使用JavaScript的XMLHttpRequest對象來直接與效勞器進展通信。通過這個對象,您的JavaScript可在不重載頁面的狀況與Web效勞器交換數(shù)據(jù)。AJAX
在掃瞄器與Web效勞器之間使用異步數(shù)據(jù)傳輸(HTTP懇求),這樣就可使網頁從效勞器懇求少量的信息,而不是整個頁面。AJAX可使因特網應用程序更小、更快,更友好。AJAX
是一種獨立于Web效勞器軟件的掃瞄器技術。AJAX基于以下Web標準:JavaScriptXMLHTMLCSS在AJAX中使用的Web標準已被良好定義,并被全部的主流掃瞄器支持。AJAX應用程序獨立于掃瞄器和平臺。Web應用程序較桌面應用程序有諸多優(yōu)勢;它們能夠涉及廣闊的用戶,它們更易安裝及維護,也更易開發(fā)。不過,因特網應用程序并不像傳統(tǒng)的桌面應用程序那樣完善且友好。通過AJAX,因特網應用程序可以變得更完善,更友好。
返回數(shù)據(jù)的頁面D:\\ProgramFiles\\webdemo\\14_Ajax\\content.htmHelloWorld!使用異步處理:D:\\ProgramFiles\\webdemo\\14_Ajax\\Ajax_recieve_content.htm接收content內容varxmlHttp;functioncreateXMLHttp(){象}if(window.XMLHttpRequest){//創(chuàng)立XMLHttpRequest核心對xmlHttp=newXMLHttpRequest()//使用FireFox內核}else{xmlHttp=newActiveXObject(“Microsoft.XMLHTTP“);//使用IE內核的掃瞄器}functionshowMsg(){//顯示信息createXMLHttp();//xmlHttp.open(“POST“,“content.htm“);//設置一個懇求//設置完懇求后調用回調函數(shù)xmlHttp.onreadystatechange=showMsgCallback;xmlHttp.send(null);//發(fā)送懇求,不設置參數(shù)}functionshowMsgCallback(){//回調函數(shù)if(xmlHttp.readyState==4){//數(shù)據(jù)返回完畢if(xmlHttp.status==200){//HTTP操作正常vartext=xmlHttp.responseText;//接收返回內容//設置要使用的CSS樣式表//doucument.getElementById(“msg“).className=“樣式表名稱“;document.getElementById(“msg“).innerHTML=text;}}}
顯示效果:
手敲千行不如單步一行!
調試手段:HTML代碼怎么調試?類比servlet代碼調試System.out.printf(“*********“);
allert(“**************”);看程序進展到哪一步!
問題:Ajax的xmlhttpRequests對象、方法、屬性有特地的文檔么?與jqueryajax比擬。
參考文檔:
場景描述:
登錄程序大家都不生疏,但假如要注冊,則必需保證用戶的ID不能重復,這種檢測用戶ID的操作可以通過Ajax完成。
異步驗證
異步驗證varxmlHttp;varflag;functioncreateXMLHttp(){象}if(window.XMLHttpRequest){//創(chuàng)立XMLHttpRequest核心對xmlHttp=newXMLHttpRequest()//使用FireFox內核}else{xmlHttp=newActiveXObject(“Microsoft.XMLHTTP“);//使用IE內核的掃瞄器}functioncheckUserid(userid){//顯示信息createXMLHttp();////設置懇求,通過地址重寫方式將userid傳遞到JSP中xmlHttp.open(“POST“,“CheckServlet?userid=“+userid);//設置完懇求后調用處理回調函數(shù)xmlHttp.onreadystatechange=checkUseridCallback;}xmlHttp.send(null);//發(fā)送懇求,不設置參數(shù)//document.getElementById(“msg“).innerHTML=“正在驗證“;//alert(“*******“);functioncheckUseridCallback(){//回調函數(shù)if(xmlHttp.readyState==4){//數(shù)據(jù)返回完畢if(xmlHttp.status==200){//HTTP操作正常alert(“*****8“);vartext=xmlHttp.responseText;//接收返回內容if(text==“true“){}}flag=false;//無法提交表單document.getElementById(“msg“).innerHTML=“用戶名ID重復,無法使用“;注冊“;}}else{flag=true;//可以提交表單document.getElementById(“msg“).innerHTML=“恭喜!此用戶ID可以}functioncheckForm(){//對表單推斷能否進展提交操作returnflag;}用戶ID:姓名:密碼:checkzz.ajax.CheckServletcheck/14_Ajax/CheckServletpackagezz.ajax;importjava.io.*;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.PreparedStatement;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;publicclassCheckServletextendsHttpServlet{publicstaticfinalStringDBDRIVER=“org.gjt.mm.mysql.Driver“;publicstaticfinalStringDBURL=“jdbc:mysql://localhost:3306/zz“;publicstaticfinalS
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年校園足球場地租賃及校園體育賽事門票代理銷售合同
- 2025-2030中國葉綠素鐵鈉鹽行業(yè)產量預測及投資機遇可行性報告
- 2025年綠色建材采購與施工質量監(jiān)管一體化服務合同
- 2025-2030中國變頻驅動器(VFD)電纜行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略研究報告
- 2025年生態(tài)農業(yè)園區(qū)建筑安裝工程環(huán)保施工與維護合同
- 2025年高校產學研合作項目延期研發(fā)經費借款合同正本
- 2025年度戶外運動公園場地租賃與設施維護服務合同
- 2025年創(chuàng)新環(huán)保小家電產品全國推廣及線上線下銷售合同
- 2025醫(yī)療設備性能評估與改進升級合同
- 2025年智能園區(qū)清潔管理及環(huán)保設施維護承包合同
- 電子信息科學與技術單選題100道及答案解析
- (一模)2025年廣東省高三高考模擬測試 (一) 政治試卷(含官方答案)
- 鋼板樁施工過程中應急安全措施
- 研學基地的運營模式與管理
- 政府采購招標代理服務風險控制措施
- 2024年足球品牌50強報告(英文版)-Brand Finance
- 二零二五版學校校園害蟲防治滅四害合作協(xié)議3篇
- 《融水香杉育苗技術規(guī)程》
- 信息安全意識培訓課件
- 美的MBS精益管理體系
- 部編高教版2023·職業(yè)模塊 中職語文 品質
評論
0/150
提交評論