• WebService的初级学习


    • 复习准备

      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); } }
  • 相关阅读:
    每日站立会议02
    每日站立会议01
    构建之法阅读笔记02
    学习进度条06
    js获取当前时间戳
    带三角凸的框
    js或者jq的tab切换
    处理浏览器兼容 各个浏览器的标识 hack
    规定CSS的属性仅在IE下生效 在非IE浏览器下不生效
    滚动到某个点 返回顶部字样出来 点击返回顶部
  • 原文地址:https://www.cnblogs.com/hfblogs/p/5226871.html
Copyright © 2020-2023  润新知