久久久久综合给合狠狠狠,人人干人人模,大陆一级黄色毛片免费在线观看,亚洲人人视频,欧美在线观看一区二区,国产成人啪精品午夜在线观看,午夜免费体验

薈聚奇文、博采眾長、見賢思齊
當前位置:公文素材庫 > 計劃總結(jié) > 工作總結(jié) > 用JAVA開發(fā)WEB Service(學習總結(jié))

用JAVA開發(fā)WEB Service(學習總結(jié))

網(wǎng)站:公文素材庫 | 時間:2019-05-28 03:19:14 | 移動端:用JAVA開發(fā)WEB Service(學習總結(jié))

用JAVA開發(fā)WEB Service(學習總結(jié))

用JAVA開發(fā)WEBService

一學習前的準備

開發(fā)環(huán)境JBOSS4.05+axis1.4+JDK1.5

axis1.4下載地址:,選擇axis-bin-1_4.zip所需要的JAR包:

二部署axis

以我們CreateGWS405產(chǎn)品為例,在產(chǎn)品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包拷貝到產(chǎn)品server\\default\\lib下。至此部署完畢。

三開發(fā)webService服務(wù)端

用編輯器編寫一個簡單的服務(wù)類,代碼如下:importjava.util.*;importjava.text.*;

publicclassSayHello{}

將該類復制到myService.war中與“WEB-INF”同級目錄,然后更改其名字為”SayHello.jws”。

啟動CreateGWS405,在瀏覽器地址輸入:88/myService/SayHello.jws?wsdl打開頁面后你會看到

ClicktoseetheWSDL四開發(fā)webService客戶端。(DLL方式)

這里為了方便測試,我們就以CreateGWS405產(chǎn)品為客戶端,在create.war下新建一個JSP頁面,代碼如下:

Stringurlname=":88/myService/SayHello.jws?wsdl";Services=newService();

Callcall=(Call)s.createCall();//要調(diào)用的方法名稱

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;

至此一個簡單的客戶端就編寫好了。上面服務(wù)端的方法參數(shù)是String,返回值也是String,而實際業(yè)務(wù)中可能還需要以int,boolean等類型做參數(shù),而且參數(shù)不止一個。返回值有時是int有時又是集合ArrayList那該怎么做呢,請看下面這個服務(wù)端代碼

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;}

這個服務(wù)端有4個方法,分別返回不同類型的值?蛻舳司鸵某

publicintgetInt(Stringarg){

System.out.println("callwebservicegetInt.....");returnarg.length();}

Stringurlname=

":8080/aixs_proxy_demo/SayHello.jws?wsdl";

Services=newService();try{

Callcall=(Call)s.createCall();//要調(diào)用的方法名稱

call.setOperationName("say");

call.setTargetEndpointAddress(urlname);

//方法傳入一個String型參數(shù),返回值也是String

Stringval=(String)call.invoke(newObject[]{"haha"});System.out.println(val);

Callcall4=(Call)s.createCall();//要調(diào)用的方法名稱

call4.setTargetEndpointAddress(urlname);call4.setOperationName("getList");Stringst1="abc";

//傳入?yún)?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);

//傳入?yún)?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);

//傳入?yún)?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;

importjavax.xml.namespace.QName;

importjavax.xml.rpc.ParameterMode;importorg.apache.axis.client.Call;importorg.apache.axis.client.Service;importorg.apache.axis.encoding.XMLType;

學習中需要注意的地方:

1、在客戶端調(diào)用其他程序的類時需要先把外部類引入到myService.war\\WEB-INF\\下新建

classes文件夾,包路徑與原類相同,如果是jar文件,則需要復制到myService.war\\WEB-INF\\lib下。這樣.jws格式文件才能正確編譯為.class文件。

2、調(diào)用其他服務(wù)器上的webservice時需要注意一定要將包導入完全,如果包缺少會影響使

用。

五開發(fā)webService客戶端。DynamicProxy方式(代理方式)

還是以上面那個服務(wù)端為例,用代理的方式來調(diào)用webService我們只需要對客戶端的代碼進行修改就可

以了,代碼如下

StringwsdlUrl=

":8080/aixs_proxy_demo/SayHello.jws?wsdl";

serviceFactory=ServiceFactory.newInstance();

//創(chuàng)建遠程服務(wù)Serviceservice=(Service)serviceFactory.createService(newURL(wsdlUrl),newQName(

nameSpaceUri,serviceName));

//向上轉(zhuǎn)型為接口MyServiceInterfaceproxy=(MyServiceInterface)service.getPort(

newQName(nameSpaceUri,portName),

MyServiceInterface.class);

//調(diào)用相應方法System.out.println("proxy.say----"

}

+proxy.say("lilei"));

+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=

//服務(wù)名

StringserviceName="SayHelloService";//服務(wù)

StringportName="SayHello";ServiceFactoryserviceFactory;try{

":8080/aixs_proxy_demo/SayHello.jws";

//創(chuàng)建代理對像

}catch(MalformedURLExceptione){

e.printStackTrace();e.printStackTrace();}catch(ServiceExceptione){

需要導入:

importjava.net.MalformedURLException;importjava.net.URL;importjavax.xml.namespace.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)經(jīng)典》總結(jié)-第三部分Web高級開發(fā)(圖文并貌)

第三部分Web高級開發(fā)

第九章Servlet程序開發(fā)

通過本章的的學習,使我了解了servlet與jsp之間的關(guān)系和servlet的生命周期及對應的操作方法及內(nèi)置對象在servlet中的使用。了解了requestdispatcher接口的作用,并可以使用mvc進行程序的開發(fā),掌握過濾器的基本原理及應用和監(jiān)聽器的基本原理及應用。

Servlet(服務(wù)器端小程序):多線程、可移植。最大好處:它可以處理客戶端傳來的HTTP請求,并返回一個響應。(沒有Main主程序)

接口類繼承關(guān)系?

Servlet處理的基本流程:

Servlet分類?

1、請區(qū)分容器和服務(wù)器?

2、關(guān)閉容器||一個Servlet長時間不使用和動態(tài)加載怎樣實現(xiàn)?(servlet銷毀)3、回顧config對象、模板設(shè)計模式(servlet程序本身應用);

4、Servlet生命周期控制的3個方法:init(),service()(doGet()、doPost())和destory();這些方法在哪個類里?

protectedvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,java.io.IOException覆寫里要擴大訪問權(quán)限,

要想實現(xiàn)一個Servlet則一定要繼承HttpServlet類,并覆寫相應方法,編譯完成后馬上配置web.xml文件。

為什么要在WEB-IN/web.xml中進行Servlet程序的映射配置?

答:zz.servlet.HelloServlet又是“包.類”,反射有木有!

訪問Servlet程序時,是以*.class形式存在。

過濾器就是個收各種門票的!應用:編碼過濾器進化

第十章表達式語言

通過本章的的學習,使我了解了表達式語言的作用及與4種屬性范圍的關(guān)系,可以使用表達式完成數(shù)據(jù)的輸出,掌握了表達式語言中各種運算符的使用。

博客筆記:

第十一章Tomcat數(shù)據(jù)源

通過本章的的學習,使我了解了數(shù)據(jù)源的作用及操作原理,掌握了tomcat中數(shù)據(jù)源的配置和數(shù)據(jù)源的查找及使用。

第十二章JSP標簽

通過本章的的學習,使我了解了標簽庫的主要作用及標簽的操作原理,掌握了標簽的基本開發(fā)模式,并且可以通過tagsupport類完成迭代傳輸?shù)墓δ埽斫饬藰撕灥氖褂眉芭ctagsupport類的區(qū)別,tagextrainfo類和variableinfo的使用。要想完成一個標簽的開發(fā),需要有以下四部分:

TagSupport類的四個方法和常量;

Tag接口和IteratorTag接口的執(zhí)行區(qū)別:

第十三章JSP標準標簽庫

通過本章的的學習,使我了解了JSTL的主要作用及配置和JSTL中core標簽的使用,了解了format和SQL標簽的使用。

第十四章Ajax開發(fā)技術(shù)

通過本章的的學習,使我了解了AJAX技術(shù)的主要作用,和XMLHttprequest對象的作用,并可以使用XMLHttprequest對象進行操作。

第一個Ajax程序

背景知識:Ajax指的是異步JavaScript及XML(AsynchronousJavaScriptAndXML)。AJAX不是一種新的編程語言,而是一種用于創(chuàng)建更好更快以及交互性更強的

Web應用程序的技術(shù)。通過AJAX,您的JavaScript可使用JavaScript的XMLHttpRequest對象來直接與服務(wù)器進行通信。通過這個對象,您的JavaScript可在不重載頁面的情況與Web服務(wù)器交換數(shù)據(jù)。AJAX

在瀏覽器與Web服務(wù)器之間使用異步數(shù)據(jù)傳輸(HTTP請求),這樣就可使網(wǎng)頁從服務(wù)器請求少量的信息,而不是整個頁面。AJAX可使因特網(wǎng)應用程序更小、更快,更友好。AJAX

是一種獨立于Web服務(wù)器軟件的瀏覽器技術(shù)。AJAX基于下列Web標準:JavaScriptXMLHTMLCSS在AJAX中使用的Web標準已被良好定義,并被所有的主流瀏覽器支持。AJAX應用程序獨立于瀏覽器和平臺。Web應用程序較桌面應用程序有諸多優(yōu)勢;它們能夠涉及廣大的用戶,它們更易安裝及維護,也更易開發(fā)。不過,因特網(wǎng)應用程序并不像傳統(tǒng)的桌面應用程序那樣完善且友好。通過AJAX,因特網(wǎng)應用程序可以變得更完善,更友好。

返回數(shù)據(jù)的頁面D:\\ProgramFiles\\webdemo\\14_Ajax\\content.htmHelloWorld!使用異步處理:D:\\ProgramFiles\\webdemo\\14_Ajax\\Ajax_recieve_content.htm接收content內(nèi)容varxmlHttp;functioncreateXMLHttp(){象}if(window.XMLHttpRequest){//創(chuàng)建XMLHttpRequest核心對xmlHttp=newXMLHttpRequest()//使用FireFox內(nèi)核}else{xmlHttp=newActiveXObject("Microsoft.XMLHTTP");//使用IE內(nèi)核的瀏覽器}functionshowMsg(){//顯示信息createXMLHttp();//xmlHttp.open("POST","content.htm");//設(shè)置一個請求//設(shè)置完請求后調(diào)用回調(diào)函數(shù)xmlHttp.onreadystatechange=showMsgCallback;xmlHttp.send(null);//發(fā)送請求,不設(shè)置參數(shù)}functionshowMsgCallback(){//回調(diào)函數(shù)if(xmlHttp.readyState==4){//數(shù)據(jù)返回完畢if(xmlHttp.status==200){//HTTP操作正常vartext=xmlHttp.responseText;//接收返回內(nèi)容//設(shè)置要使用的CSS樣式表//doucument.getElementById("msg").className="樣式表名稱";document.getElementById("msg").innerHTML=text;}}}

顯示效果:

手敲千行不如單步一行!

調(diào)試手段:HTML代碼怎么調(diào)試?類比servlet代碼調(diào)試System.out.printf("*********");

allert(“**************”);看程序進行到哪一步!

問題:Ajax的xmlhttpRequests對象、方法、屬性有專門的文檔么?與jqueryajax比較。

參考文檔:

場景描述:

登錄程序大家都不陌生,但如果要注冊,則必須保證用戶的ID不能重復,這種檢測用戶ID的操作可以通過Ajax完成。

異步驗證

異步驗證varxmlHttp;varflag;functioncreateXMLHttp(){象}if(window.XMLHttpRequest){//創(chuàng)建XMLHttpRequest核心對xmlHttp=newXMLHttpRequest()//使用FireFox內(nèi)核}else{xmlHttp=newActiveXObject("Microsoft.XMLHTTP");//使用IE內(nèi)核的瀏覽器}functioncheckUserid(userid){//顯示信息createXMLHttp();////設(shè)置請求,通過地址重寫方式將userid傳遞到JSP中xmlHttp.open("POST","CheckServlet?userid="+userid);//設(shè)置完請求后調(diào)用處理回調(diào)函數(shù)xmlHttp.onreadystatechange=checkUseridCallback;}xmlHttp.send(null);//發(fā)送請求,不設(shè)置參數(shù)//document.getElementById("msg").innerHTML="正在驗證";//alert("*******");functioncheckUseridCallback(){//回調(diào)函數(shù)if(xmlHttp.readyState==4){//數(shù)據(jù)返回完畢if(xmlHttp.status==200){//HTTP操作正常alert("*****8");vartext=xmlHttp.responseText;//接收返回內(nèi)容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";publicstaticfinalStringDBUSER="root";publicstaticfinalStringDBPASSWORD="mysql";publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,java.io.IOException{this.doPost(request,response);}publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,java.io.IOException{request.setCharacterEncoding("GBK");response.setContentType("text/html");//設(shè)置回應的MIMEConnectionconn=null;PreparedStatementpstmt=null;ResultSetrs=null;PrintWriterout=response.getWriter();//接收驗證的useridStringuserid=request.getParameter("userid");try{Class.forName(DBDRIVER);//加載驅(qū)動conn=DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);//連接數(shù)據(jù)庫Stringsql="SELECTCOUNT(userid)FROMuserWHEREuserid=?";pstmt=conn.prepareStatement(sql);}

}pstmt.setString(1,userid);rs=pstmt.executeQuery();System.out.printf("*********");if(rs.next()){if(rs.getInt(1)>0){//判斷ID是否已存在out.print("true");//已存在}else{out.print("false");}}out.close();}catch(Exceptione){e.printStackTrace();}finally{try{conn.close();}catch(Exceptione){e.printStackTrace();}}

友情提示:本文中關(guān)于《用JAVA開發(fā)WEB Service(學習總結(jié))》給出的范例僅供您參考拓展思維使用,用JAVA開發(fā)WEB Service(學習總結(jié)):該篇文章建議您自主創(chuàng)作。

來源:網(wǎng)絡(luò)整理 免責聲明:本文僅限學習分享,如產(chǎn)生版權(quán)問題,請聯(lián)系我們及時刪除。


用JAVA開發(fā)WEB Service(學習總結(jié))》由互聯(lián)網(wǎng)用戶整理提供,轉(zhuǎn)載分享請保留原作者信息,謝謝!
鏈接地址:http://www.weilaioem.com/gongwen/522667.html
相關(guān)文章