AI賦能Java語言編程:從入門到高階 課件 第十三章 Java的網(wǎng)絡(luò)功能_第1頁
AI賦能Java語言編程:從入門到高階 課件 第十三章 Java的網(wǎng)絡(luò)功能_第2頁
AI賦能Java語言編程:從入門到高階 課件 第十三章 Java的網(wǎng)絡(luò)功能_第3頁
AI賦能Java語言編程:從入門到高階 課件 第十三章 Java的網(wǎng)絡(luò)功能_第4頁
AI賦能Java語言編程:從入門到高階 課件 第十三章 Java的網(wǎng)絡(luò)功能_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Java的網(wǎng)絡(luò)功能Java'sNetworkFunctionality第十三章目錄01020304網(wǎng)絡(luò)編程入門TCP/IP協(xié)議Socket編程Web服務(wù)01網(wǎng)絡(luò)編程入門13.1網(wǎng)路編程入門13.1.1網(wǎng)絡(luò)編程的重要性網(wǎng)絡(luò)編程是計算機科學中的一個重要領(lǐng)域,它設(shè)計到在網(wǎng)絡(luò)環(huán)境中設(shè)計和實現(xiàn)應(yīng)用程序的過程。網(wǎng)絡(luò)編程在當今的數(shù)字化時代中扮演著重要的角色,它為開發(fā)人員提供了構(gòu)建可靠、高效和安全的網(wǎng)絡(luò)應(yīng)用程序所需的工具和技術(shù)。網(wǎng)絡(luò)編程的重要性:互聯(lián)互通、分布式系統(tǒng)、云計算和虛擬化、實時通信、網(wǎng)絡(luò)安全等。13.1網(wǎng)路編程入門13.1.2基本網(wǎng)絡(luò)概念通信架構(gòu):網(wǎng)絡(luò)中設(shè)備之間進行通信的方式。它通常包括物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層和應(yīng)用層。這些層次各自負責不同的通信功能,使設(shè)備能夠可靠地進行數(shù)據(jù)交換。常見的通信架構(gòu)有兩種:客戶端服務(wù)器(CS)架構(gòu)和瀏覽器服務(wù)器(BS)架構(gòu)。IP地址:IP(InternetProtocol)全稱“互聯(lián)網(wǎng)協(xié)議地址”,是網(wǎng)絡(luò)中設(shè)備之間的通信協(xié)議。每個設(shè)備在網(wǎng)絡(luò)中都有一個唯一的IP地址,用于標識該設(shè)備。IP協(xié)議負責將數(shù)據(jù)從源設(shè)備發(fā)送到目標設(shè)備,并確保數(shù)據(jù)的完整性和可靠性。IP域名:是互聯(lián)網(wǎng)上的一個重要概念,它由一串用點分隔的名字組成,代表一臺計算機或計算機組的名稱。IP域名主要用于在數(shù)據(jù)傳輸時標識計算機的電子方位,以便人們能夠更方便地訪問互聯(lián)網(wǎng)。端口是設(shè)備上用于通信的一個虛擬通道,它負責管理和傳輸進出設(shè)備的數(shù)據(jù)。每個應(yīng)用程序在設(shè)備上都會分配到一個或多個端口,這樣,它們便能夠與外部的其他設(shè)備進行有效通信。端口號則起到了至關(guān)重要的作用,它們?yōu)椴煌膽?yīng)用程序提供了獨特的標識,確保了數(shù)據(jù)能夠準確無誤地被送達到正確的應(yīng)用程序。網(wǎng)絡(luò)通信協(xié)議是一種網(wǎng)絡(luò)通用語言,為連接不同操作系統(tǒng)和不同硬件體系結(jié)構(gòu)的互聯(lián)網(wǎng)絡(luò)提供通信支持。它是一組預(yù)定義的規(guī)則和約定,用于管理數(shù)據(jù)在計算機網(wǎng)絡(luò)中的格式化、傳輸、接收和解釋方式,使得各類設(shè)備能夠互相通信,并確保數(shù)據(jù)在網(wǎng)絡(luò)中的穩(wěn)定和可靠傳輸。常見的網(wǎng)絡(luò)協(xié)議有IP、TCP、UDP、HTTP和FTP等。13.1網(wǎng)路編程入門14.1.3Java的網(wǎng)絡(luò)APIJava有一個獨立的用于提供網(wǎng)絡(luò)通信功能的API——。這個包中包含了許多用于創(chuàng)建網(wǎng)絡(luò)連接、發(fā)送和接受數(shù)據(jù)等功能的類和接口。J包可分為兩類:低級API和高級API。低級API包括地址、套接字(Socket)、接口等;高級API包括URI(通用資源標識符)、URL(統(tǒng)一資源定位器)、Connection等。名稱基本內(nèi)容URL提供訪問網(wǎng)絡(luò)資源所需的所有信息,如協(xié)議、主機名、端口等URLConnection提供了應(yīng)用程序與URL連接并交換數(shù)據(jù)的能力InetAddress用于表示IP地址,可以解析主機名和IP地址ServerSocket和Socket用于在服務(wù)器和客戶端之間建立連接,進行數(shù)據(jù)通信DatagramSocket和DatagramPacket用于發(fā)送和接收基于UDP協(xié)議的數(shù)據(jù)包,實現(xiàn)無連接網(wǎng)絡(luò)通信13.1網(wǎng)路編程入門02TCP/IP協(xié)議函數(shù)的參13.2.1概述TCP/IP協(xié)議是一個網(wǎng)絡(luò)通訊模型,以及一整個網(wǎng)絡(luò)傳輸協(xié)議家族,為互聯(lián)網(wǎng)的基礎(chǔ)通訊架構(gòu)。TCP/IP協(xié)議常被稱為一組成許多別的協(xié)議的協(xié)議,這些協(xié)議組成了TCP/IP協(xié)議簇。TCP/IP協(xié)議通常被分為四層,每一層都負責不同的功能:1.應(yīng)用層:這一層包含了各種應(yīng)用程序使用的協(xié)議,如HTTP(用于Web瀏覽)、FTP(用于文件傳輸)、SMTP(用于電子郵件傳輸)等。應(yīng)用層協(xié)議通常使用下面一層的服務(wù)來完成數(shù)據(jù)的發(fā)送和接收。2.傳輸層:負責建立、維護和釋放連接,提供端到端的可靠或不可靠的數(shù)據(jù)傳輸服務(wù)。傳輸層的主要協(xié)議是TCP和UDP。TCP提供可靠的數(shù)據(jù)傳輸服務(wù),而UDP提供相對不可靠的數(shù)據(jù)傳輸服務(wù)。13.2TCP/IP3.網(wǎng)絡(luò)層:網(wǎng)絡(luò)層負責將數(shù)據(jù)包從源主機發(fā)送到目標主機。它包括IP協(xié)議(用于數(shù)據(jù)包尋址和路由)、ICMP(用于發(fā)送錯誤消息和操作網(wǎng)絡(luò)設(shè)備)、IGMP(用于組播)等。網(wǎng)絡(luò)層還負責數(shù)據(jù)包的轉(zhuǎn)發(fā)和路由選擇。4.數(shù)據(jù)鏈路層:也稱為網(wǎng)路接口層,它負責在物理媒體上發(fā)送和接收數(shù)據(jù)。這層包括操作系統(tǒng)中的設(shè)備驅(qū)動程序和計算機對應(yīng)的網(wǎng)絡(luò)接口卡(NIC)。網(wǎng)絡(luò)接口層將接收到的網(wǎng)絡(luò)層的數(shù)據(jù)包通過物理接口發(fā)送到傳輸介質(zhì)上,或從物理網(wǎng)絡(luò)上接收數(shù)據(jù)包,并將其交給網(wǎng)絡(luò)層。14.2TCP/IP協(xié)議14.2.2傳輸層與Socket傳輸層位于網(wǎng)絡(luò)層和應(yīng)用層之間,負責總體數(shù)據(jù)的傳輸和控制,是整個協(xié)議層的核心。傳輸層為兩臺主機上的應(yīng)用程序提供端到端的通信,確保數(shù)據(jù)能夠可靠地在應(yīng)用程序之間傳輸。這一層有兩個互不相同的傳輸協(xié)議:TCP(傳輸控制協(xié)議)和UDP(用戶數(shù)據(jù)報協(xié)議)。而這些協(xié)議的實現(xiàn),需要Socket這個工具。Socket也被稱為“套接字”,是通信的端點,用于進程間數(shù)據(jù)交換。它為應(yīng)用層進程提供了一種利用網(wǎng)絡(luò)協(xié)議交換數(shù)據(jù)的機制,是應(yīng)用程序與網(wǎng)絡(luò)協(xié)議棧進行交互的接口。在使用Socket進行網(wǎng)絡(luò)編程時,需要先進行網(wǎng)絡(luò)環(huán)境的初始化,創(chuàng)建Socket,然后指定需要連接的主機地址和端口號,最后通過讀寫操作來進行數(shù)據(jù)交換。14.2TCP/IP協(xié)議13.2.3應(yīng)用層與HTTP應(yīng)用層也稱為應(yīng)用實體,位于TCP/IP的頂層,是直接為用戶的應(yīng)用程序提供網(wǎng)絡(luò)服務(wù)的層級。主要功能包括提供接口、實現(xiàn)通信、數(shù)據(jù)生成和處理、服務(wù)請求和響應(yīng)和會話管理。常見的應(yīng)用層服務(wù)協(xié)議包括HTTP、FTP、SMTP等。HTTP(HyperTextTransferProtocol)全稱為超文本傳輸協(xié)議,主要用于瀏覽器與服務(wù)器之間的數(shù)據(jù)傳輸。HTTP基于請求/響應(yīng)模型,客戶端向服務(wù)器發(fā)送請求,服務(wù)器返回響應(yīng)。HTTP的主要特點包括:1.無狀態(tài):服務(wù)器不會為每個請求保持狀態(tài);2.明文傳輸:默認使用明文傳輸數(shù)據(jù),不提供加密;3.靈活:允許使用各種類型的消息(如請求、響應(yīng)、重定向等);4.可緩存:HTTP協(xié)議支持緩存,使得客戶端可以在本地存儲數(shù)據(jù)。14.3TCP/IP協(xié)議03Socket編程13.3.1TCP和UDP協(xié)議TCP和UDP時互聯(lián)網(wǎng)協(xié)議(IP)中兩種主要的傳輸層協(xié)議,提供端到端的通信。TCP(TransmissionControlProtocol,傳輸控制協(xié)議)是一種面向連接的、可靠的、基于字節(jié)流的協(xié)議。它通過三次握手建立連接,在連接建立后,對數(shù)據(jù)進行分段并為每個分段加上序號,確保數(shù)據(jù)按順序到達目標主機,同時還負責丟失的分段的重傳,提供了可靠的數(shù)據(jù)傳輸和流量控制功能。TCP常用于需要確保數(shù)據(jù)準確性的應(yīng)用,如文件傳輸或網(wǎng)頁請求等。UDP(UserDatagramProtocol,用戶數(shù)據(jù)報協(xié)議)則是面向無連接的傳輸層協(xié)議,它無序進行連接和維護,直接將應(yīng)用程序發(fā)送的數(shù)據(jù)報發(fā)送到網(wǎng)絡(luò)上,適用于視頻流、語音通話等對實時性要求較高的應(yīng)用。13.3Socket編程13.3.2實現(xiàn)過程與建立連接網(wǎng)絡(luò)編程的實現(xiàn)主要依賴于SocketAPI。Socket編程基于客戶端-服務(wù)器模型,允許客戶端和服務(wù)器通過網(wǎng)絡(luò)中的Socket連接進行交互。SocketAPI位于包中,使用前需要導(dǎo)入該包。由于網(wǎng)絡(luò)通信往往涉及文本數(shù)據(jù)的傳輸,因此java.io包也是必需導(dǎo)入的,以便利用其中的輸入/輸出流處理數(shù)據(jù)。

創(chuàng)建一個Socket網(wǎng)絡(luò)連接通常包括以下幾個步驟: 1.創(chuàng)建Socket對象 2.獲取輸入輸出流 3.數(shù)據(jù)通信 4.處理異常 5.關(guān)閉連接13.3Socket編程1.創(chuàng)建Socket對象

客戶端使用Socket類來創(chuàng)建一個Socket對象,該對象代表客戶端到服務(wù)器的連接。服務(wù)器使用ServerSocket類來監(jiān)聽特定端口上的新連接。Socket需要傳入一個服務(wù)器的IP地址和相對應(yīng)的端口號,ServerSocket則只需一個用于接收信息的端口號。這里我們用本地IP(localhost)和端口號1234。只有客戶端Socket需要IP地址參數(shù)。//客戶端Socketsocket=newSocket("localhost",1234);//服務(wù)器端ServerSocketserverSocket=newServerSocket(1234);13.3Socket編程2.獲取輸入輸出流

通過Socket對象,可以獲取輸入流和輸出流。輸入流用于從網(wǎng)絡(luò)接收數(shù)據(jù),輸出流用于向網(wǎng)絡(luò)發(fā)送數(shù)據(jù)。這里可以參考如下的代碼,這是一種發(fā)送和接受信息的方法。需要注意的是,服務(wù)器端有一個serverSocket的accept()方法來等待并接收客戶端發(fā)送的信息,通常稱之為“監(jiān)聽”。監(jiān)聽完成后,服務(wù)器中會生成一個Socket對象。//客戶端OutputStreamoutputStream=socket.getOutputStream();//輸出PrintWriterprintWriter=newPrintWriter(outputStream,true);//服務(wù)器端SocketclientSocket=serverSocket.accept();//監(jiān)聽InputStreaminputStream=clientSocket.getInputStream();//接收13.3Socket編程3.數(shù)據(jù)通信

使用輸入/輸出流進行數(shù)據(jù)的讀取和寫入。常用的輸入/輸出流有DataInputStream、DataOutputStream、BufferedReader和PrintWriter等。按時間順序說,在、客戶端先向服務(wù)器端發(fā)送數(shù)據(jù)。服務(wù)器接收并處理數(shù)據(jù),隨后向客戶端輸出回復(fù)。該過程中,PrintWriter的println用來輸出,BufferedReader的readline則用來輸入得到的數(shù)據(jù)。//客戶端發(fā)送數(shù)據(jù)printWriter.println("Hello,Server!");//客戶端接收數(shù)據(jù)StringserverResponse=bufferedReader.readLine();System.out.println("ServerResponse:"+serverResponse);13.3Socket編程//服務(wù)器端接收數(shù)據(jù)StringclientMessage=bufferedReader.readLine();System.out.println("ClientMessage:"+clientMessage);//服務(wù)器端發(fā)送數(shù)據(jù)OutputStreamoutputStream=clientSocket.getOutputStream();PrintWriterprintWriter=newPrintWriter(outputStream,true);printWriter.println("Hello,Client!");13.3Socket編程4.處理異常

在網(wǎng)絡(luò)通信中,可能會遇到各種異常,如IOException。必須妥善處理這些異常,以防止程序崩潰。使用try-catch可以捕獲異常。在捕獲異常后,可以用if-else語句檢查異常類型并嘗試重新建立連接,也可以關(guān)閉已經(jīng)打開的相關(guān)資源。5.關(guān)閉連接

數(shù)據(jù)傳輸完成后,應(yīng)該關(guān)閉Socket連接以釋放資源。使用close()方法可以關(guān)閉Socket連接,同時也需要關(guān)閉使用到的類和對象。13.3Socket編程//客戶端代碼示例importjava.io.*;import.*;publicclassClientExample{publicstaticvoidmain(String[]args){try{//創(chuàng)建一個Socket連接到服務(wù)器Socketsocket=newSocket("localhost",1234);//獲取輸入/輸出流OutputStreamoutputStream=socket.getOutputStream();PrintWriterprintWriter=newPrintWriter(outputStream,true);BufferedReaderbufferedReader=newBufferedReader(newInputStreamReader(socket.getInputStream()));//發(fā)送數(shù)據(jù)printWriter.println("Hello,Server!");//接收數(shù)據(jù)StringserverResponse=bufferedReader.readLine();System.out.println("ServerResponse:"+serverResponse);//關(guān)閉連接socket.close();}catch(IOExceptione){e.printStackTrace();}}}

這段代碼在main中開始時用try包圍了可能會拋出異常的代碼,這是網(wǎng)絡(luò)通信中必要的操作,然后再try塊中創(chuàng)建了一個Socket對象。Socket(“l(fā)ocalhost”,1234)中l(wèi)ocalhost是服務(wù)器的主機名,也可以是服務(wù)器的IP地址,1234則是目標主機的1234端口。連接成功后,客戶端會使用OutputStream獲取Socket的輸出流,隨后用PrintWriter和BufferedReader連接到輸入流,向服務(wù)器端發(fā)送一條信息。13.3Socket編程//服務(wù)器代碼示例importjava.io.*;import.*;publicclassServerExample{publicstaticvoidmain(String[]args){try{//創(chuàng)建一個ServerSocket監(jiān)聽端口ServerSocketserverSocket=newServerSocket(1234);//等待客戶端連接SocketclientSocket=serverSocket.accept();//獲取輸入/輸出流InputStreaminputStream=clientSocket.getInputStream();BufferedReaderbufferedReader=newBufferedReader(newInputStreamReader(inputStream));//接收數(shù)據(jù)StringclientMessage=bufferedReader.readLine();System.out.println("ClientMessage:"+clientMessage);//發(fā)送數(shù)據(jù)OutputStreamoutputStream=clientSocket.getOutputStream();PrintWriterprintWriter=newPrintWriter(outputStream,true);printWriter.println("Hello,Client!");//關(guān)閉連接clientSocket.close();serverSocket.close();}catch(IOExceptione){e.printStackTrace();}}}13.3.3數(shù)據(jù)傳輸和處理

輸入流用于從Socket接收數(shù)據(jù)。常見的輸入流有:InputStream,DataInputStream和BufferedReader。Socket提供了getInputStream()方法用于讀取輸入流。方法作用inputStream.read()讀取一個字符,失敗則返回-1inputStream.read(byte[]b)讀取一定數(shù)量的字節(jié)到字節(jié)串中bufferedReader.readline()讀取一整行的文本到字符串中inputStream.available()返回輸入流中可用的字節(jié)數(shù)13.3Socket編程輸出流用于向Socket發(fā)送數(shù)據(jù)。常見的輸出流有:OutputStream和PrintWriter。其中OutputStream是所有輸出流的基類,提供了寫入字節(jié)流的方法。而PrintWriter提供了更方便的方法,如print、println、printf等。輸出流有一個flush()方法,用于清空輸出緩沖區(qū),確保所有緩沖的數(shù)據(jù)都被寫入到目標流中。方法作用socket.getOutputStream();獲取OutputStreamoutputStream.write(data);將字節(jié)數(shù)據(jù)寫入newPrintwriter(data,true)創(chuàng)建輸出流,true表示自動刷新printwriter.println(data)寫入一行數(shù)據(jù)13.3Socket編程13.3.4多線程和網(wǎng)絡(luò)聊天本節(jié)我們將通過實現(xiàn)一個簡單的網(wǎng)絡(luò)聊天室來進一步鞏固和加深對Socket的理解。在這個聊天室中,用戶可以在不同的終端上輸入信息并發(fā)送給其他用戶?!纠?4.1】請使用Java的Socket和ServerSocket類來實現(xiàn)一個簡單的網(wǎng)絡(luò)聊天室。要求實現(xiàn)以下功能:1.服務(wù)器端能夠接收來自客戶端的消息,并將其廣播給其他客戶端。2.客戶端能夠發(fā)送消息到服務(wù)器端,并接收來自其他客戶端的消息。3.實現(xiàn)用戶之間的簡單聊天功能,例如發(fā)送和接收文本消息。13.3Socket編程在設(shè)計服務(wù)器端程序時,我們引入了ClientHandler線程來處理客戶端的連接,這一設(shè)計充分運用了多線程技術(shù)。每當服務(wù)器成功接受一個客戶端的連接請求,它便即時創(chuàng)建一個專屬的ClientHandler線程來管理該客戶端的所有通信需求。這些ClientHandler線程各自獨立運行,彼此之間不共享狀態(tài),確保了每個客戶端的交互都是獨立且并行的。privateclassClientHandlerextendsThread{privateSocketsocket;privatePrintWriterwriter;publicClientHandler(Socketsocket){this.socket=socket;}publicvoidrun(){……}publicstaticvoidmain(String[]args){newChatServer().start();}}13.3Socket編程04Web服務(wù)13.4.1Web服務(wù)概述Web服務(wù)是一種允許不同機器之間的軟件應(yīng)用程序通過網(wǎng)絡(luò)進行交互的技術(shù)。Web服務(wù)的核心優(yōu)勢體現(xiàn)在其跨平臺和跨語言的特性上。這意味著,無論服務(wù)端還是客戶端采用何種編程語言或操作系統(tǒng),Web服務(wù)都能夠?qū)崿F(xiàn)順暢的通信。它基于瀏覽器服務(wù)器(BS)架構(gòu)。此外,Web服務(wù)之間的耦合度較低,這使得系統(tǒng)的維護和更新變得更加便捷。Web服務(wù)還遵循一系列行業(yè)標準,如HTTP、XML、SOAP、WSDL和UDDI,這些標準保證了不同Web服務(wù)之間的互操作性。Web服務(wù)的工作原理可以概括為發(fā)布、發(fā)現(xiàn)和綁定三個步驟。服務(wù)提供者首先將Web服務(wù)發(fā)布到網(wǎng)絡(luò)中,使得潛在的服務(wù)請求者能夠發(fā)現(xiàn)這些服務(wù)。一旦服務(wù)請求者找到了所需的服務(wù),它們就可以通過SOAP協(xié)議進行綁定,并開始進行數(shù)據(jù)交換。13.4Web服務(wù)SOAP是一種基于XML的消息協(xié)議,用于在應(yīng)用程序之間進行通信。它使用HTTP、SMTP或TCP等協(xié)議作為傳輸機制,并支持多種安全性和身份認證機制。通過將請求和響應(yīng)封裝成XML格式的消息,SOAP實現(xiàn)了跨平臺和跨語言的通信。WSDL是Web服務(wù)架構(gòu)中的一個核心組件。Web服務(wù)描述語言(WebServicesDescriptionLanguage,簡稱WSDL)是一種基于XML的規(guī)范,用于描述網(wǎng)絡(luò)服務(wù)的接口。它提供了一種標準化的方式來聲明網(wǎng)絡(luò)服務(wù)的操作和消息格式,以及這些操作是如何通過網(wǎng)絡(luò)協(xié)議進行調(diào)用的。WSDL是實現(xiàn)Web服務(wù)互操作性的關(guān)鍵技術(shù)之一,它使得不同的系統(tǒng)能夠以一種機器可讀的方式進行通信。13.4Web服務(wù)WSDL文檔主要由以下幾個元素組成:名稱功能definitionsWSDL文檔的根元素,它定義了整個服務(wù)的框架,包括服務(wù)名稱、相關(guān)端口和操作types定義服務(wù)操作中所使用的數(shù)據(jù)類型。這些類型通?;赬MLSchema(XSD)messages(消息元素)定義了在服務(wù)操作中傳輸?shù)臄?shù)據(jù)。每個消息至少包含一個part元素,用于定義消息中的數(shù)據(jù)項portType(端口類型元素)定義了一組操作,這些操作由服務(wù)提供。每個操作都有一個操作名稱和相關(guān)的輸入、輸出消息operation(操作元素)定義了單個服務(wù)操作的詳細信息,包括輸入和輸出消息binding(綁定元素)將端口類型與特定的傳輸協(xié)議和消息格式關(guān)聯(lián)起來service(服務(wù)元素)定義了一組端口,這些端口是可用的網(wǎng)絡(luò)訪問點,客戶端可以通過這些端口與Web服務(wù)進行交互13.4Web服務(wù)13.4.2Java對Web服務(wù)的支持Java對Web服務(wù)的支持主要通過JavaAPIforXMLWebServices(JAX-WS)來實現(xiàn)。JAX-WS是一個基于Java的Web服務(wù)開發(fā)框架,提供了一組API和工具,用于創(chuàng)建和開發(fā)基于SOAP協(xié)議的Web服務(wù)。JAX-WS允許開發(fā)者使用Java語言編寫Web服務(wù),并提供了用于創(chuàng)建和發(fā)布Web服務(wù)、處理SOAP消息、綁定WSDL等功能的API。13.4Web服務(wù)JAX-WS使用注解來標記Web服務(wù)類和方法。這些注解是創(chuàng)建JAX-WS服務(wù)是通常需要使用的核心注解,它們提供了對Web服務(wù)的基本控制和配置。名稱作用@WebService標記一個類為Web服務(wù)類,告訴JAX-WS框架該類是一個Web服務(wù)@WebMethod標記一個方法為Web服務(wù)方法,指定該方法應(yīng)作為Web服務(wù)公開的方法@RequestWrapper和@ResponseWrapper用于自定義請求和響應(yīng)數(shù)據(jù)的包裝類,控制數(shù)據(jù)的序列化和反序列化@WebParam和@WebResult用于指定參數(shù)和返回值的名稱、數(shù)據(jù)類型等,控制參數(shù)和返回值的序列化和反序列化。@SOAPBinding用于指定SOAP綁定樣式,控制SOAP消息的生成和解析方式。13.4Web服務(wù)13.4.3創(chuàng)建和測試Web服務(wù)

打開一個新的Java接口,命名為HelloWorldService。在這個接口中,定義一個方法sayHello(),該方法返回一個字符串。packagecom.example.service;importjavax.jws.WebService;importjavax.jws.WebMethod;

@WebServicepublicinterfaceHelloWorldService{@WebMethodStringsayHello(Stringname);}13.4Web服務(wù)

創(chuàng)建一個新的Java類,實現(xiàn)HelloWorldService接口,并實現(xiàn)sayHello()方法。在這個方法中,返回一個簡單的字符串“Hello,World!”。packagecom.example.service;importjavax.jws.WebService;

@WebService(endpointInterface="com.example.service.HelloWorldService")//@WebService注解的endpointInterface屬性指定了這個類實現(xiàn)的服務(wù)接口路徑。publicclassHelloWorldServiceImplimplementsHelloWorldService{@OverridepublicStringsayHello(Stringname){return"Hello,"+name;}}13.4Web服務(wù)

使用JAX-WS的WSDL描述來發(fā)布你的Web服務(wù)。編寫一個發(fā)布類,使用Endpoint類發(fā)

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論