SOA與Web Service技術實驗報告【全集】

所用教材:《Java Web服務 構建與運行》若本文對你有用的話請點贊、關注我哦!

6學時 實驗題目:①Web Service環境搭建;②REST式服務作爲一個HttpServlet類;③JAX-RS Web Service;④JAX-RS Client;⑤JAX-RS客戶端;⑥WSDL服務合同

本實驗所需的所有代碼(已整理得明明白白的):https://download.csdn.net/download/qq_41587612/12517176

上面的需要積分,沒積分的話可以到Github上下載:https://github.com/PigeonIsSmart/SOA-WebService

● 常見報錯:Several ports (8005, 8080, 8009) required by Tomcat v7.0 Server at localhost are already in use?

   解決:https://blog.csdn.net/xiaopingga/article/details/84988526

常見問題:Windows控制檯cmd中文亂碼?

   永久解決:https://blog.csdn.net/qq_35038153/article/details/78430359

● 常見的Http響應狀態碼?

實驗一 Web Service環境搭建(非小白的可以跳過,簡略放圖) 

一、實驗目的

  1. 掌握Java環境的安裝。
  2. 掌握eclipse的基本使用方法。
  3. 學會創建一個Java web 項目。

二、實驗內容

      1.  Java環境的安裝與配置。

           1)Java下載地址

                http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

                 根據網站上的版本下載適合自己系統的版本。

          2)Java安裝

          3)JAVA_HOME配置。

                i.  打開高級系統設置

               ii.  點擊環境變量

              iii.  在系統變量中創建一個名爲JAVA_HOME的環境變量,變量值爲JAVA的安裝目錄。

          4)在系統變量中找到path,在變量值最後加一個分號“;”,再把你安裝java的路徑+bin複製進來,點擊確定。

          5)查看是否安裝成功。

                i.  在CMD中輸入java -version,出現Java版本號則證明安裝成功。

      2.  使用eclipse創建一個新的Java Web項目。

          1)配置tomcat

                i.  打開 window選項卡下的preferences

               ii.  配置tomcat

          2)新建一個java_web一個用程序

                i.  選擇Dynamic Web Project

               ii.  取項目名並選中tomcat,點擊next

              iii.  選中Generate點擊finish。

      3.  運行程序並輸出輸出結果。

          1)在WebContext新建index.jsp

          2)更改jsp,右鍵項目選擇run as server(要求顯示學生自己的姓名學號)

三、實驗要求

  1. 要求學生熟練掌握Java環境的安裝過程。
  2. 學會在eclisp上搭建tomcat。
  3. 學會使用eclipse創建一個Web項目。
  4. 學會使用tomcat服務器運行Java Web程序。

四、實驗結果

實驗二 REST式服務作爲一個HttpServlet類

一、實驗目的

  1. 熟悉REST式服務作爲一個HttpServlet類。

二、實驗內容

      1. 新建predictions2項目。

      2. 新建predictions2包,創建JerseyClient、Prediction、Predictions、PredictionsServlet類。(下方會給資源包!)

      3. 導入所需要的Jar包,導入data文件。

      4. 更改web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app>
  <servlet>
    <servlet-name>predictor</servlet-name>
    <servlet-class>predictions2.PredictionsServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>predictor</servlet-name>
    <url-pattern>/*</url-pattern>
  </servlet-mapping>
</web-app>

      5. 運行項目

三、實驗要求

  1. 掌握predictions2 式servlet 服務的搭建。

四、實驗過程及截圖

區別:在Eclipse上的運行結果第一行無文字說明,但在瀏覽器上有。

實驗三 JAX-RS Web Service

可參考http://www.jquerycn.cn/a_17530雖然排版不忍直視,但部分代碼有詳細中文註釋,我給的資料包裏的代碼是英文註釋。

一、實驗目的

  1. 學習如何使用JAX-RS實現RESTful服務框架。
  2. 學習使用curl發送HTTP請求。

二、實驗內容

      1. JAX-RS即Java API for RESTful Web Services,是一種 Java API,可使 Java Restful 服務的開發變得迅速而輕鬆。這個 API 提供了一種基於註釋的模型來描述分佈式資源。註釋被用來提供資源的位置、資源的表示和可移植的(pluggable)數據綁定架構。

      2. curl下載及配置

          1)下載地址:https://curl.haxx.se/download.html選擇適合自己系統版本的curl

          2)curl的安裝和配置(win64)

                i.  解壓安裝包

               ii.  配置curl環境變量(路徑爲解壓後curl的文件路徑)

 

爲小白補充說明:右鍵桌面上的“此電腦”,選擇“屬性”,在彈出窗口左側選擇“高級系統設置”,在彈出窗口下方選擇“環境變量”,再在彈出窗口的“系統變量”處,①新建“CURL_HOME”,變量值爲“curl的解壓路徑”;②編輯“Path”,按鍵盤右側“end”按鈕(若無效,則先按“num lock / scr lock”【簡寫爲“num lk”別不認識啊喂】再按“end”)回到“變量值”末尾,分號後面添加“curl的bin路徑”。

      3. 使用JAX-RS搭建RESTful服務框架。

          1)新建Prediction、PredictionsList、PredictonsRS、RestfulPrediction類。

          2)新建一個web項目

          3)導入jar包和data文件 

          4)修改web.xml 

<?xml version="1.0" encoding="UTF-8"?>  
<web-app>  
  <servlet>  
    <servlet-name>jersey</servlet-name>  
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>  
    <load-on-startup>1</load-on-startup>
  </servlet>      
</web-app>

          5)運行項目(注意:資料包裏readme文件中寫的路徑訪問會404,但在該路徑後面加/xml或/json就能訪問了)

      4. Curl的使用

          1)依次在cmd中輸入以下命令,查看輸出結果。

                i.  curl http://localhost:8080/JAX-RS/resourcesP/xml

               ii.  curl http://localhost:8080/JAX-RS/resourcesP/json

          2)查看PredictionsRS.java,使用curl輸出id爲1的內容,格式爲xml。

三、實驗要求

  1. 要求學生掌握用JAX-RS實現簡單的RESTful服務框架。
  2. 學會安裝配置curl,並使用。

四、實驗過程及截圖

實驗四 JAX-RS Client

一、 實驗目的

  1. 掌握JAX-RS Client 的搭建。
  2. 針對基於predictions2 REST 式服務創建客戶端。
  3. 瞭解客戶端與服務器之間的交互。

二、實驗內容

     1. 新建predictions2 Service。

    2. 右鍵項目Run on Server

     3. 在predictions2包下新建 JerseyClient 類,導入所需要的jar包。

     4. 右鍵JerseyClient類,選擇 run as JavaApplication。查看控制檯運行結果。

     5. 更改JerseyClient.java,要求輸出並刪除id = 10的數據,輸出格式爲JSON。更改後的代碼▼

package predictions2;

import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;
import javax.ws.rs.core.MediaType;
import com.sun.jersey.api.representation.Form;

public class JerseyClient {
	private static final String baseUrl = "http://localhost:8080/predictions2";

	public static void main(String[] args) {
		new JerseyClient().demo();
	}

	private void demo() {
		Client client = Client.create();
		client.setFollowRedirects(true); // in case the service redirects

		WebResource resource = client.resource(baseUrl);
		getAllDemo(resource);
		postDemo(resource); // same resource but different verb

		String url = baseUrl + "?id=10";
		resource = client.resource(url);
		getOneDemo(resource);
		deleteDemo(resource); // delete id = 10
	}

	private void getAllDemo(WebResource resource) {
		String response = resource.accept(MediaType.APPLICATION_JSON_TYPE).get(String.class);
		report("GET all in JSON:\n", response);
	}

	private void getOneDemo(WebResource resource) {
		String response = resource.accept(MediaType.APPLICATION_JSON_TYPE).get(String.class);
		report("GET one in JSON:\n", response);
	}

	private void postDemo(WebResource resource) {
		Form form = new Form(); // HTTP body, a simple hash
		form.add("who", "William Butler Yeats");
		form.add("what", "I know that I shall meet my fate");

		String response = resource.type(MediaType.APPLICATION_FORM_URLENCODED_TYPE).accept
				(MediaType.TEXT_PLAIN_TYPE).post(String.class, form);
		report("POST:\n", response);
	}

	private void deleteDemo(WebResource resource) {
		String response = resource.accept(MediaType.TEXT_PLAIN_TYPE).delete(String.class);
		report("DELETE:\n", response);
	}

	private void report(String msg, String response) {
		System.out.println("\n" + msg + response);
	}
}

三、實驗要求

  1. 要求學生掌握JAX-RS客戶端的配置。
  2. 成功調通程序並對其進行更改。

四、實驗過程及截圖

以下圖片都是執行JerseyClient.java的運行結果,內容很長,截了部分幫助理解!

 

上方三幅圖是連續的,從第0條開始計數,可以看出程序原是刪除了第31條(最後一條)prediction(預言)又添加一條prediction("I know that I shall meet my fate"成爲新31條預言)【HTTP body, a simple Hash】,現要我們改成“輸出並刪除id = 10的數據,輸出格式爲JSON”。

你只需看JerseyClient.java(一共59行代碼),改/讀起來非常簡單,不用怕!

改完後的運行(連續)結果如下所示:

 

如果你有以下情況 ,請重新 Run on Server,再 Run as JavaApplication!!!

JerseyClient.java已經運行過一次,再重複Run as JavaApplication運行的話就會這樣▼

 實驗五 JAX-RS客戶端

一、實驗目的

  1. 掌握REST Client 的搭建。
  2. 針對基於predictions3 service創建客戶端。
  3. 熟悉客戶端與服務器之間的交互。

二、實驗內容

     1. 新建predictions3 項目。

 

     2. 右鍵項目run on server。

     3. 創建client包,在其中創建Java類,並導入jar包。

     4. 右鍵JerseyClient類,選擇 run as JavaApplication。查看控制檯運行結果。

三、實驗要求

  1. 要求學生掌握REST式客戶端的配置。
  2. 成功調通程序並對其進行更改。

四、實驗結果

日常無視警告。。。創建client包(Package),導入類和jar包,右鍵Predictions3Client類,Run as JavaApplication

 實驗六 WSDL服務合同

一、實驗目的

  1. 學會使用java代碼發佈endpoint。
  2. 瞭解WSDL的作用。

二、實驗內容:

  1. 新建一個項目
  2. 新建RandPublisher、RandService類。

  3. 導入jar包和xml

  4. 更改web.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:web="http://xmlns.jcp.org/xml/ns/javaee">
      <listener>
        <listener-class>
          com.sun.xml.ws.transport.http.servlet.WSServletContextListener
        </listener-class>
      </listener>
      <servlet>
        <servlet-name>jaxws</servlet-name>
        <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
      </servlet>
      <servlet-mapping>
        <servlet-name>jaxws</servlet-name>
        <url-pattern>/*</url-pattern>
      </servlet-mapping>
    </web-app>
  5. 運行項目
  6. 運行RandPublisher類,在瀏覽器輸入http://localhost:8888/ws

三、實驗要求

  1. 學會使用java代碼發佈endpoint。
  2. 掌握WSDL的作用。
  3. 成功調試出代碼。

四、運行結果

先 Run on JavaApplication,再 Run as Server!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章