• 复习准备

  1. Schema约束:

    1.1   namespace相当于Schema文件的id;

    1.2   targetNamespace属性用来指定schema文件的namespace的值;

    1.3  xmlns属性引入一个约束, 它的值是一个schema文件的namespace值;

    1.4 schemaLocation属性用来指定引入的schema文件的位置;

    schema规范中:

        1. 所有标签和属性都需要有schema文件来定义;

       2. 所有的schema文件都需要有一个id, 但在这里它叫namespace;

        3. namespace的值由什么来指定?    由targetNamespace属性来指定, 它的值是一个url(很有可能不存在)

        4. 如何引入一个Schema约束? (例如:xmlns:mvc="http://www.springframework.org/schema/mvc)

         属性? : 用xmlns属性

          属性值: 对应的schema文件的id(namespace值)

        5. 如果引入的schema不是w3c组织定义, 必须指定schema文件的位置

         6. schema文件的位置由什么属性来指定?

         属性? : schemaLocation

         属性值: namespace path

      7. 如果引入了N个约束, 需要给n-1个取别名

  2. HTTP协议相关知识

    2.1 请求的组成:

        请求行(请求方式  path 
http1.1)

        请求头

        请求体:
只有post请求有

    2.2  响应的组成
        响应状态行:

        响应头

        响应体
: 浏览器解析显示的数据

    2.3 请求的过程

        浏览器客户端 _http1.1建立连接_>  服务器  ----->  页面文档(文字图片等)

  • 关于WebService的几个问题及常用术语

    1. Webservice是什么?

      基于Web的服务:服务器端整出一些资源让客户端应用访问(获取数据)

      一个跨语言、跨平台的规范(抽象)

      多个跨平台、跨语言的应用间通信整合的方案(实际)

    2. 为什么用使用webService

       web service能解决:

跨平台调用

   跨语言调用

  远程调用

    3. webservice相当于HTTP+?+?

      Http+xml+schema

    4. wsdl是什么?(webService definition language)

      webservice定义语言, 对应.wsdl文档, 一个webservice会对应一个唯一的wsdl文档, 定义了客户端与服务端发送请求和响应的数据格式和过程

    5. 如何发布一个webservice? (SEI: service endPoint interface  服务终端接口)

      定义SEI   @webservice @webMethod

      定义SEI的实现

      发布:  Endpoint.publish(url, SEIImplObject)

    6.如何请求一个webservice?

      根据wsdl文档生成客户端代码  jdk/cxf

      根据生成的代码调用webService

  • WebService发布请求实例

    1. service代码(使用JDK开发):  

/*定义SEI
*/
package com.webservice.service;

import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.xml.ws.WebEndpoint; @WebService//使用webservice接口
public interface HelloWS {
@WebMethod//接口中暴露的方法
public String sayHello(String name);
}
/*SEI的实现
*/
package com.webservice.service;

import javax.jws.WebService;

@WebService
public class HelloWSImp implements HelloWS { @Override
public String sayHello(String name) {
System.out.println("server: "+"hello "+ name);
return "Client : "+"hello " +name;
} }
/*终端的发布
*/
package com.webservice.test;

import javax.xml.ws.Endpoint;

import com.webservice.service.HelloWSImp;

public class ServerTest {
public static void main(String[] args) {
     //终端发布的url,可以自定义但不要和已知的重复
String address = "http://localhost:5766/webservice-test_service/HelloWS";
     //发布终端
Endpoint.publish(address, new HelloWSImp());
System.out.println("webservice发布成功!");
}
}

  2.Client代码:

    在cmd命令行进入client文件包的src文件下,使用jdk自带的wsimport.exe工具生成client代码,输入

      wsimport -keep url?wsdl  (...?wsdl 可查看其wsdl文件) 完成后会制动生成相应的client代码

    (若使用cxf框架开发,加入cxf的jar包即可,service不需要其他改动; Client边在自动生成代码时使用的是cxf的工具

     wsdl2java url?wsdl )

    自动生成Client代码后直接开始测试

package com.webservice.test;

import com.webservice.service.HelloWSImp;
import com.webservice.service.HelloWSImpService; public class ClientTest {
public static void main(String[] args) {
     //起点,在其wsdl文件的<wsdl:service>中可以看出这个类似 工厂 的类
HelloWSImpService factory = new HelloWSImpService();
     //client对应的SEI实现类
HelloWSImp helloWSImpPort = factory.getHelloWSImpPort();
String sayHello = helloWSImpPort.sayHello("xffgem");
System.out.println(sayHello);
}
}

WebService的初级学习的更多相关文章

  1. webpack 4.x 初级学习记录

    首先声明下,本人不擅长文字表达,文采不行,所以文章中文字较少,请看代码,初级学习,不足之处请多多指教 GitHub链接 看云kancloud [TOC] webpack 4.x 安装 首先需要在全局中 ...

  2. 学习 WebService 第四步:利用WSDL(URL)生成WebService客户端<初级>

    我用的是最简单的方法,利用jdk的命令wsimport -keep -p 包路径 -d 代码存放位置 WSDL网址 蓝色是命令,粉色是存放位置,橘色是URL C:\Program Files\IBM\ ...

  3. Android 基于ksoap2的webservice请求的学习

    [学习阶段] WebService网络请求? 其实我也是第一次遇到,之所以有这个需要是因为一些与 ERP 相关的业务,需要用到这样的一个请求方式. 开始学习WebService ①当然是百度搜索,这里 ...

  4. Maven初级学习(二)Maven使用入门

    序,学习配置pom.xml,利用maven生成eclipes项目. 一.编写POM POM Project Obejct Model,项目对象模型. 编写pom.xml,新建文件夹hello-worl ...

  5. Maven初级学习(一)手把手教你Maven安装

    序:学习安装Maven,在Windows和Unix系统上. 一.Windows系统安装MVN 前提正确安装JDK1.5以上的版本 1 下载最先版Mvn http://maven.opache.org/ ...

  6. 2015年11月26日 Java基础系列(三)ThreadLocal类初级学习

    序,ThreadLocal类是为了解决多线程的安全问题.线程安全的意思也就是说每个线程操作自己的变量,不要对其他线程的值造成影响. 在很多情况下,ThreadLocal比直接使用synchronize ...

  7. Oracle数据库初级学习

    第一天 SQL查询语句 CMD——SQLPLUS----账号 soctt 密码 tiger,输入完成后进入SQL数据库,如图显示即连接成功. 连接成功后 ,我们首先设置一下基本界面, --设置 每列显 ...

  8. Oracle的登陆问题和初级学习增删改查(省略安装和卸载)

    1:学习Oracle首先需要安装Oracle,网上已经有很多很多教程了,这里不做叙述,自己百度即可,这里安装的标准版,个人根据需求安装学习或者企业开发即可.如果安装出错,自己百度Oracle的卸载即可 ...

  9. TensorFlow MNIST初级学习

    MNIST MNIST 是一个入门级计算机视觉数据集,包含了很多手写数字图片,如图所示: 数据集中包含了图片和对应的标注,在 TensorFlow 中提供了这个数据集,我们可以用如下方法进行导入: f ...

随机推荐

  1. 解决tomcat启动慢

    1.在Tomcat环境中解决 可以通过配置JRE使用非阻塞的Entropy Source. 在catalina.sh中加入这么一行:-Djava.security.egd=file:/dev/./ur ...

  2. 超级干货,python常用函数大总结

    我们在学习python的时候,接触最多的往往则是那些函数,对于python函数,在这里为大家总结归纳了这些,如果有缺漏,还请及时留言指正哦! 话不多说,干货来袭! 1.常用内置函数:(不用import ...

  3. IntelliJ IDEA导航特性Top20

    在前面的文章里,我介绍了IntelliJ IDEA(以下称IntelliJ)中与代码补全及重构相关的特性.今天我将介绍另外一个利器——IntelliJ的导航(Navigation),只要运用得当,它将 ...

  4. log4cplus基础知识

    一.简介: log4cplus是C++编写的开源的日志系统. 具有线程安全.灵活.以及多粒度控制的特点,通过将信息划分优先级使其可以面向程序调试.运行.测试.和维护等全生命周期: 你可以选择将信息输出 ...

  5. REST测试工具之curl(URL多参数)

    在微服务理念满天飞的今天,面对REST接口的机会越来越多. 除了打开浏览器的方法,我们还有一个很方便的方法测试REST接口,尤其是接口返回JSON数据格式时. 这就是curl. 一.安装篇 给一个可以 ...

  6. 利用国内的源安装 Python第三方库

    我们需要安装一些Python的第三方库,但是使用  pip install + 第三方库  的时候,会出现下载速度慢的问题,当然我们也可以使用国内的源安装. 例如: sudo pip install ...

  7. unity, ugui button 禁止重复点击

    如上图,button名称为btn_sim,当点击button后,开始播放zoomToTarget动画.为了防止在动画播放过程中再次点击button导致动画被打断,希望当首次点击button后butto ...

  8. blender, 同时选择多个顶点

    法1:按MRB(鼠标右键)选中第一个顶点,再按shift+MRB依次选择其余顶点. 法2:按B,光标变为横纵两条虚线,此时可按MLB(鼠标左键)框选顶点.按MRB结束框选. 法3:按C,光标变为虚线圆 ...

  9. zoj 3299(区间改动+离散化)

    题意:有n个由小木块组成的长条木块要掉下来.给出木块的左右区间,然后有给了m个木板的左右区间和高度用来接住木块,由于木块是由小木块接触组成的,也就是木板能够接住一部分的木块.剩下的会继续掉落,问最后每 ...

  10. vue的路由使用

    1). 安装 vue-router npm install vue-router --save 2). 新建路由配置 安装成功后,在 src 新建 router 文件夹,然后新建 index.js 文 ...