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响应状态码?

扫描二维码关注公众号,回复: 12799315 查看本文章

实验一 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!

猜你喜欢

转载自blog.csdn.net/qq_41587612/article/details/106428769
今日推荐