webservice07#契约优先#webservice实现简单的动态web项目
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项目的更多相关文章
- 简单的文件上传的下载(动态web项目)
1.在页面中定义一个form表单,如下: <!-- 文件上传 --> <form action="${pageContext.request.contextPath}/Fi ...
- 用简单的反射优化代码(动态web项目)
在动态web项目中,没有使用框架时,只是简单的jsp访问servlet实现增删改查, 无论是哪个方法都需要经过Servlet中的doGet()方法或doPost()方法,我们可以在链接中附带参数进行区 ...
- springmvc 项目完整示例02 项目创建-eclipse创建动态web项目 配置文件 junit单元测试
包结构 所需要的jar包直接拷贝到lib目录下 然后选定 build path 之后开始写项目代码 配置文件 ApplicationContext.xml <?xml version=" ...
- 创建一个动态Web项目:
开始你的Eclipse,然后进入“文件”>“新建”>“动态Web项目,然后输入项目名称为HelloWorldStruts2和设置其他的选项,在下面的屏幕: 选择在屏幕上的所有默认选项,最后 ...
- 搭建Dynamic Web Project(动态web项目)的springmvc工程2
本文转载自:http://blog.csdn.net/typa01_kk/article/details/45905129 此篇为“创建Dynamic Web Projec工程,”搭建Dynamic ...
- 搭建Dynamic Web Project(动态web项目)的springmvc工程1
本文转载自:http://blog.csdn.net/typa01_kk/article/details/45902955 此篇创建Dynamic Web Projec工程(动态web项目),下一篇, ...
- IDEA创建动态Web项目
1.IDEA创建动态Web项目 1.1.使用IDEA创建动态Web项目,选择Java Enterprise,记得选择服务器,我这里使用的时tomcat 1.2记得勾选Web Application,其 ...
- Velocity笔记--使用Velocity获取动态Web项目名的问题
以前使用jsp开发的时候,可以通过request很轻松的获取到根项目名,现在换到使用velocity渲染视图,因为已经不依赖servlet,request等一些类的环境,而Web项目的根项目名又不是写 ...
- 只需2分钟,简单构建velocity web项目
Velocity是一个基于java的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象 velocity ...
随机推荐
- VS2017 Cordova 出现错误 @ionic/app-scripts 未安装
在安装vs2017 Cordova中遇到出现错误 @ionic/app-scripts 未安装 在系统添加环境变量SASS_BINARY_PATH,将我们下载的win32-ia64-47_bindin ...
- windows 资源监视器
windows的资源监视器有很强大的资源监视能力 win+r输入resmon.exe即可打开
- 双T型陷波滤波器
有时,我们需要设计个滤波器滤除特定一个频率的噪音.这时就需要陷波滤波器了. 陷波器是带阻滤波器的一种,带阻滤波器的滤除频率有一定宽度,而陷波就是对某一个频率噪音的滤除. 双T型陷波滤波器应该是最常见的 ...
- JavaScript笔记之第四天
HTML DOM (文档对象模型) 当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model). 查找 HTML 元素 通常,通过 JavaScript,您需要操作 ...
- python基础教程(一)
之所以选择py交易有以下几点:1.python是胶水语言(跨平台),2.python无所不能(除了底层),3.python编写方便(notepad++等文本编辑器就能搞事情),4.渗透方面很多脚本都是 ...
- [2014-08-28]Mac系统上的几个命令解释器(控制台)
irb 语言:Ruby 帮助:help 清屏:CTRL+L 自动完成:Tab+Tab (若未开启,则在/etc/irbrc中require 'irb/completion') 退出:quit/exit ...
- js实现非模态窗口增加数据后刷新父窗口数据
父窗口是由两个部分组成,一个html的table,一部分是extjs的gird. 点击grid面板[增加]按钮将会弹出非模态窗口进行新数据的编辑页面 下面是按钮的触发函数代码: var a = win ...
- ascii codec can't decode byte 0xe8 in position 0:ordinal not in range(128) python代码报错
import sys reload(sys) sys.setdefaultencoding('utf-8')
- mysql存储过程 基本语法
话不多说 一.MySQL 创建存储过程 "pr_add" 是个简单的 MySQL 存储过程,这个存储过程有两个 int 类型的输入参数 "a"."b& ...
- C# 单例模式(Singleton Pattern)(转SuagrMatl)
单例模式的定义: 确保一个类只有一个实例,并提供一个全局访问点. 首先实例大家应该都明白就是类生成对象的过程简单的就是String s=new String(),则s就是个实例. Q:如何只生成一个实 ...