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 ...
随机推荐
- Eclipse快速补全行末分号
Eclipse快速补全行末分号 Eclipse快捷键跳到行末补全分号 Eclipse快速结束当前语句(在行末加上分号,就是当前语句结束) Intellij IDEA 里是有快速补全分号的功能(快捷键: ...
- 将execl里的数据批量导入数据库
本文将采用NPOI插件来读取execl文件里的数据,将数据加载到内存中的DataTable中 /// <summary> /// 将Excel转换为DataTable /// </s ...
- go web 第一天 学习笔记
package main import ( "fmt" "log" "net/http" "strings" ) fun ...
- Android 音视频开发(二):使用 AudioRecord 采集音频数据并保存到文件
版权声明:转载请说明出处:http://www.cnblogs.com/renhui/p/7457321.html 一.AudioRecord API详解 AudioRecord是Android系统提 ...
- Ext:ComboBox实战
var gsCombo = new Ext.form.ComboBox({ id:'combo', hiddenName:'value', fieldLabel:'下拉框', triggerActio ...
- C++栈和堆的生长方向
C++内存区域分为5个区域.分别是堆,栈,自由存储区,全局/静态存储区和常量存储区. 栈:由编译器在需要的时候分配,在不需要的时候自动清除的变量存储区.里面通常是局部变量,函数参数等. 堆:由new分 ...
- C语言运算符运算顺序判断实例1
程序1 #include <stdio.h> int main(void) { , j = , k = ; printf("%d\n", --j > i & ...
- 使用XmlWriter创建XML文件
using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Xml ...
- DotNetCore跨平台~Quartz定时单次任务
之前写过一篇文件<DotNetCore跨平台~Quartz热部署的福音-监控文件夹的变化>,今天主要把框架优化了一下,支持外部触发,并支持外部将参数以JobDataMap形式进行输入,然后 ...
- AJAX 处理xml 数据
//这个方式返回的得是 xml标准的对象,可以返回 xml字符串,前端js 使用转为xml function createXml(str){ if(document.all){//IE浏览器 va ...