1, 用户管理 User{username,password,nickname} 属性.

2,契约优先[ 先用schema做标准来写wsdl、再生成服务器端的接口,再编写接口的类]

  在src下创建目录 META-INF/wsdl/, 创建一个文件 user.xsd的shema文件

<?xml version="1.0" encoding="UTF-8"?>
<!-- 1,写schema时,我们一般都会加上一个 xsd 的命名空间
     2,我们都会使用我们自己的命名空间,而不用自动生成的http://www.example.org/user
 -->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        targetNamespace="http://webservice.yangw.com/user/"
        xmlns:tns="http://webservice.yangw.com/user/"
        elementFormDefault="qualified">

    <!-- 定义若干个要使用的方法 -->
    <xsd:element name="add" type="tns:add" />
    <xsd:element name="addResponse" type="tns:addResponse" />
    <xsd:element name="delete" type="tns:delete" />
    <xsd:element name="deleteResponse" type="tns:deleteResponse" />
    <xsd:element name="login" type="tns:login" />
    <xsd:element name="loginResponse" type="tns:loginResponse" />
    <xsd:element name="list" type="tns:list" />
    <xsd:element name="listResponse" type="tns:listResponse" />

    <!-- 定义类型 -->
    <xsd:complexType name="add">
        <xsd:sequence>
            <xsd:element name="user" type="tns:user"></xsd:element>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="addResponse"></xsd:complexType>
    <xsd:complexType name="delete">
        <xsd:sequence>
            <xsd:element name="username" type="xsd:string" />
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="deleteResponse"></xsd:complexType>
    <xsd:complexType name="login">
        <xsd:sequence>
            <xsd:element name="username" type="xsd:string" />
            <xsd:element name="password" type="xsd:string" />
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="loginResponse">
        <xsd:sequence>
            <xsd:element name="user" type="tns:user"></xsd:element>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="list">
    </xsd:complexType>
    <xsd:complexType name="listResponse">
        <xsd:sequence minOccurs="1" maxOccurs="unbounded">
            <xsd:element name="user" type="tns:user"></xsd:element>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="user">
        <xsd:sequence>
            <!--  这里没有作字段的限定 -->
            <xsd:element name="username" type="xsd:string" />
            <xsd:element name="password" type="xsd:string" />
            <xsd:element name="nickname" type="xsd:string" />
        </xsd:sequence>
    </xsd:complexType>
</xsd:schema>

在 META-INF/wsdl/下创建一个文件 user.wsdl的wsdl文件

File-->New-->Other...-->Web Webservices-->WSDL File (新建过程中,只需要将targetNamespace 设置为与schema保持一致)

<?xml version="1.0" encoding="UTF-8"?>
<!-- 1,写schema时,我们一般都会加上一个 xsd 的命名空间
     2,我们都会使用我们自己的命名空间,而不用自动生成的http://www.example.org/user
 -->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        targetNamespace="http://webservice.yangw.com/user/"
        xmlns:tns="http://webservice.yangw.com/user/"
        elementFormDefault="qualified">

    <!-- 定义若干个要使用的方法 -->
    <xsd:element name="add" type="tns:add" />
    <xsd:element name="addResponse" type="tns:addResponse" />
    <xsd:element name="delete" type="tns:delete" />
    <xsd:element name="deleteResponse" type="tns:deleteResponse" />
    <xsd:element name="login" type="tns:login" />
    <xsd:element name="loginResponse" type="tns:loginResponse" />
    <xsd:element name="list" type="tns:list" />
    <xsd:element name="listResponse" type="tns:listResponse" />

    <!-- 定义类型 -->
    <xsd:complexType name="add">
        <xsd:sequence>
            <xsd:element name="user" type="tns:user"></xsd:element>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="addResponse">
        <xsd:sequence></xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="delete">
        <xsd:sequence>
            <xsd:element name="username" type="xsd:string" />
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="deleteResponse">
        <xsd:sequence></xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="login">
        <xsd:sequence>
            <xsd:element name="username" type="xsd:string" />
            <xsd:element name="password" type="xsd:string" />
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="loginResponse">
        <xsd:sequence>
            <xsd:element name="user" type="tns:user"></xsd:element>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="list">
        <xsd:sequence></xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="listResponse">
        <xsd:sequence minOccurs="1" maxOccurs="unbounded">
            <xsd:element name="user" type="tns:user"></xsd:element>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="user">
        <xsd:sequence>
            <!--  这里没有作字段的限定 -->
            <xsd:element name="username" type="xsd:string" />
            <xsd:element name="password" type="xsd:string" />
            <xsd:element name="nickname" type="xsd:string" />
        </xsd:sequence>
    </xsd:complexType>
</xsd:schema>

  打开cmd 使用 wsimport命令 生成java类并复制到项目中.

webservice07#契约优先#webservice实现简单的动态web项目的更多相关文章

  1. 简单的文件上传的下载(动态web项目)

    1.在页面中定义一个form表单,如下: <!-- 文件上传 --> <form action="${pageContext.request.contextPath}/Fi ...

  2. 用简单的反射优化代码(动态web项目)

    在动态web项目中,没有使用框架时,只是简单的jsp访问servlet实现增删改查, 无论是哪个方法都需要经过Servlet中的doGet()方法或doPost()方法,我们可以在链接中附带参数进行区 ...

  3. springmvc 项目完整示例02 项目创建-eclipse创建动态web项目 配置文件 junit单元测试

    包结构 所需要的jar包直接拷贝到lib目录下 然后选定 build path 之后开始写项目代码 配置文件 ApplicationContext.xml <?xml version=" ...

  4. 创建一个动态Web项目:

    开始你的Eclipse,然后进入“文件”>“新建”>“动态Web项目,然后输入项目名称为HelloWorldStruts2和设置其他的选项,在下面的屏幕: 选择在屏幕上的所有默认选项,最后 ...

  5. 搭建Dynamic Web Project(动态web项目)的springmvc工程2

    本文转载自:http://blog.csdn.net/typa01_kk/article/details/45905129 此篇为“创建Dynamic Web Projec工程,”搭建Dynamic ...

  6. 搭建Dynamic Web Project(动态web项目)的springmvc工程1

    本文转载自:http://blog.csdn.net/typa01_kk/article/details/45902955 此篇创建Dynamic Web Projec工程(动态web项目),下一篇, ...

  7. IDEA创建动态Web项目

    1.IDEA创建动态Web项目 1.1.使用IDEA创建动态Web项目,选择Java Enterprise,记得选择服务器,我这里使用的时tomcat 1.2记得勾选Web Application,其 ...

  8. Velocity笔记--使用Velocity获取动态Web项目名的问题

    以前使用jsp开发的时候,可以通过request很轻松的获取到根项目名,现在换到使用velocity渲染视图,因为已经不依赖servlet,request等一些类的环境,而Web项目的根项目名又不是写 ...

  9. 只需2分钟,简单构建velocity web项目

    Velocity是一个基于java的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象 velocity ...

随机推荐

  1. 如何正确地修改.data和.item文件的‘utf-8’格式

    问题:有时候,我们在做分类信息提取的时候文件的格式可能不是我们想要的.txt文件的格式,如何进行修改? 解决:(1)将文件复制一份,并保存为.txt的格式(2)将复制之后的文件通过另存为的方式更改为u ...

  2. WebApp开发总结

    WebApp开发总结 框架的使用网络上都有教程,就不写了,主要记录下个人的开发总结以方便以后开发注意. css公用样式统一定义 css样式抽出复用 appearance: none; 取消系统默认样式 ...

  3. - Templates should only be responsible for mapping the state to the UI. Avoid placing tags with side-effects in your templates, such as <script>, as they will not be parsed.

    vue.js报错如下: - Templates should only be responsible for mapping the state to the UI. Avoid placing ta ...

  4. .NET入行之工作后

    成长这条路上,有一些事已经渐渐的消失模糊的脑海里,而有一些事,则历历在目,终生铭记. 一切都是从大二下学期快结束的那段培训课程开始的,从此也算是入门了,这也是一条不归路. 在.NET入行之工作前一文中 ...

  5. OpenCV中phase函数计算方向场

    一.函数原型 ​该函数参数angleInDegrees默认为false,即弧度,当置为true时,则输出为角度. phase函数根据函数来计算角度,计算精度大约为0.3弧度,当x,y相等时,angle ...

  6. TIKV副本一致性检查机制分析

    背景 TIKV使用raft协议来实现副本同步,任何时刻写入一个KEY-VAL键值对,都会基于RAFT协议复制到不同机器的三个副本上,raft协议本身能保证副本同步的强一致性,但是任何系统都可能存在BU ...

  7. 使用xorm工具,根据数据库自动生成 go 代码

    使用xorm工具,根据数据库自动生成 go 代码 引入 使用 golang 操作数据库的同学都会遇到一个问题 -- 根据数据表结构创建对应的 struct 模型.因为 golang 的使用首字母控制可 ...

  8. texlive、

    0.1 卸载 texlive2007 如果系统没有安装过texlive,则跳过第0步. 可以在终端中使用如下命令查询本机已经安装的tex和latex版本: [She@She LaTex_test]$ ...

  9. python的引用计数分析(二)

    python所有对象引用计数被减少1的情况: 一.对象的别名被赋予新的对象; a = 23345455 # 增加了一个引用 b = a # 增加了一个引用 print(sys.getrefcount( ...

  10. 一文教你迅速解决分布式事务 XA 一致性问题

    欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:腾讯云数据库团队 近日,腾讯云发布了分布式数据库解决方案(DCDB),其最明显的特性之一就是提供了高于开源分布式事务XA的性能.大型 ...