inttostr java_Delphi和Java实现webservice架构

Webservice现在已经不是什么新技术了,用java建立webservice是快捷的,但是用java在制作客户端的感觉上总是不如 Delphi的(个人感觉,java高手们不要笑话我),那我们就用java实现webservice的服务端程序,delphi制作客户端。

一.环境搭建

jdk和tomcat的安装和配置我在这里不进行行介绍了。说明一点我的tomcat是安装在D:\tomcat,设定端口是8099。

安装Axis

1.可以从http://ws.apache.org/axis/下载axis的最新版本,我使用的是axis1.2。

2.解压缩axis-bin-1_2beta.zip,将axis-1_2beta目录中webapps下的axis目录全部拷贝到tomcat的安装目录中webapps下。

3.将axis\lib中的所有jar文件都添加到classpath系统变量中。

注(用户需根据自己的安装路径进行更改):

.;

d:\tomcat\webapps\axis\WEBINF\lib\axis.jar;

d:\tomcat\webapps\axis\WEB-INF\lib\saaj.jar;

d:\tomcat\webapps\axis\WEB-INF\lib\commons-logging.jar;

d:\tomcat\webapps\axis\WEB-INF\lib\commons-discovery.jar;

d:\tomcat\webapps\axis\WEB-INF\lib\wsdl4j.jar;

d:\tomcat\webapps\axis\WEBINF\lib\jaxrpc.jar;

4.启动tomcat访问http://cbf107:8099/axis/index.html(这里使用的主机名和端口号和使用的tomcat所配置一致)。

可以见到如下页面:

508473_3.jpg

二.Web Service服务端开发

写一个java小程序:

public class Test{

public int add(int p1, int p2) {

return p1 + p2;

}

public int subtract(int p1, int p2) {

return p1 - p2;

}

}

在D:\Tomcat\webapps\axis 目录下新建一个test文件夹,将它保存在里面,注意:后缀名改为jws,也就是Test.jws 。

在浏览器里访问:http://cbf107:8099/axis/test/Test.jws可以看到

508473_4.gif

点击“Click to see the WSDL”出现

508473_5.gif

将这页另存为xml文档(我们在使用delphi制作客户端的时候会使用)

508473_6.gif

三.delphi实现Web Service客户端开发

打开delphi新建工程,在form上放置两个edit和两个button,button的name命名为

btnadd和btnsubtract,caption命名为add和subtract。

再file->new->other,选择webservice里的WSDL importer

508473_7.gif

在search UDDI..里选择前面我们保存的那个xml文件,点击next最后finish

508473_8.gif

508473_9.gif 

全部保存,我们发现delphi的工程中多了test1.pas

508473_10.gif

打开发现有这样一段接口申明:

Test = interface(IInvokable)

[‘{52882FF0-46E2-6644-A77B-CE714D4CBFD5}‘]

function  add(const p1: Integer; const p2: Integer): Integer; stdcall;

function  subtract(const p1: Integer; const p2: Integer): Integer; stdcall;

end;

那我们可以直接调用这个接口了,这时候我们回到界面,从delphi的webservices面版中托放一个soap到form上。

508473_11.gif

设置属性如图:

508473_12.gif

最后我们可以完成我们的代码了:

1.在uses里添加test1因为我们要引用这个单元。

2.添加全局变量t1:test;(t1是一个test接口)

3.为两个button添加click事件

procedure TForm1.btnaddClick(Sender: TObject);

var

i,j,z:integer;

begin

i:=strtoint(edit1.Text);

j:=strtoint(edit2.Text);

t1:=(HttPRIO1 as test);

z:=t1.add(i,j);

t1._Release;

showmessage(inttostr(z));

end;

procedure TForm1.btnsubstractClick(Sender: TObject);

var

i,j,z:integer;

begin

i:=strtoint(edit1.Text);

j:=strtoint(edit2.Text);

t1:=(HttPRIO1 as test);

z:=t1.subtract(i,j);

t1._Release;

showmessage(inttostr(z));

end;

4.F9运行程序进行测试

508473_13.gif

508473_14.gif

看我们有用delphi实现了java写的那段程序,不是吗。

5.也许到这里你认为应该已经完成了,没错!不过对webservice还不够了解的

朋友你再修改一下那个java程序,也就是将Test.jws里的这个方法

public int add(int p1, int p2) {

return p1 + p2;

}

改为

public int add(int p1, int p2) {

return p1 + p2+10;

}

再运行一下你的客户端程序看看。

四.注:unit1的所有代码

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Rio, SOAPHTTPClient,Test1;

type

TForm1 = class(TForm)

HTTPRIO1: THTTPRIO;

Edit1: TEdit;

Edit2: TEdit;

btnadd: TButton;

btnsubstract: TButton;

procedure Edit2KeyPress(Sender: TObject; var Key: Char);

procedure btnaddClick(Sender: TObject);

procedure btnsubstractClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

t1:test;

implementation

{$R *.dfm}

//这里是为了让 两个edit只能输入数字,edit1的onkeypress直接调用这个就可以了。

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);

begin

if key in [‘0‘..‘9‘]=false then

key:=#0;

end;

procedure TForm1.btnaddClick(Sender: TObject);

var

i,j,z:integer;

begin

i:=strtoint(edit1.Text);

j:=strtoint(edit2.Text);

t1:=(HttPRIO1 as test);

z:=t1.add(i,j);

t1._Release;

showmessage(inttostr(z));

end;

procedure TForm1.btnsubstractClick(Sender: TObject);

var

i,j,z:integer;

begin

i:=strtoint(edit1.Text);

j:=strtoint(edit2.Text);

t1:=(HttPRIO1 as test);

z:=t1.subtract(i,j);

t1._Release;

showmessage(inttostr(z));

end;

end.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/261251.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CentOS系列启动流程和内核原理(5系列,6系列,7系列)

前言,本来让我写博客我是拒绝的然而看见大家都在写,还能不能一起友好的玩耍了? 我要是不写怎能和同大神们一起ZB呢?遂开博客! 一、Linux启动内核文件 1.Linux系统组成 动态视角:内核根文件系统 静态视…

LSTM和GRU vs 循环神经网络RNN

1、考虑下列三种情况下,对比一下普通RNN的表现和LSTM和GRU表现: (1)早期观测值对预测未来观测者具有非常重要的意义。 考虑一个极端情况,其中第一个观测值包含一个校验和, 目标是在序列的末尾辨别校验和是…

java ora-12505_Oracle SQL Developer连接报错(ORA-12505)的解决方案(两种)

用oracle数据库新建连接时遇到ora-12505,此问题解决后又出现ora-12519错误,郁闷的半天,经过一番折腾问题解决,下面小编把我的两种解决方案分享给大家,仅供参考。解决方案一:今天工作时在新建连接的时候遇到…

【Silverlight】解决DataTemplate绑定附加属性

本文 Silverlight 版本:4.0。 首先定义数据类型,此文始终使用此定义类型。public class SimpleData : ViewModelBase{private string _text;private int _column, _row;public string Text { get { return _text; } set { _text value; OnPropertyChang…

N个三角形分割平面个数(数学)

一个三角形的时候,再加一个三角形,每一条变会与第一个三角形的两条边相交,这样增加2个小三角形,即两个面。f(2)3*2f(1),再加一个三角形,每一条边会与前两个三角形的四条边相交,形成四个小三角形…

2011年9月19日 面试重点:asp.net运行原理和生命周期

面试重点&#xff1a;asp.net运行原理和生命周期1、ispostback回调机制isPostBackfalse !IsPostBackture 当前页面是第一次加载IsPostBack 由于用户交互(page.submit())提交页面而产生的加载,二次加载html客户端代码将ispostback值存放在viewstate隐藏字段中<input type&quo…

redis——集群

2019独角兽企业重金招聘Python工程师标准>>> 现实中redis需要若干台redis服务器的支持&#xff1a; &#xff08;1&#xff09;从结构上&#xff0c;单个Redis服务器会产生单点故障&#xff0c;同时一台服务器需要承受所有的请求负载。这就需要为数据生成多个副本并…

POJ 2409 Let it Bead (Polya定理)

题意 用k种颜色对n个珠子构成的环上色&#xff0c;旋转翻转后相同的只算一种&#xff0c;求不等价的着色方案数。 思路 Polya定理 X是对象集合{1, 2, ……, n}&#xff0c; 设G是X上的置换群&#xff0c;用M种颜色染N种对象&#xff0c;则不同的染色方案数为&#xff1a; λ(g)…

java10支持mybatis_写了10年的代码,我最怕写Mybatis这些配置,现在有详解了

作者 | 阿进的写字台链接 | www.cnblogs.com/homejim/p/9782403.html在使用 mybatis 过程中&#xff0c; 当手写 JavaBean和XML 写的越来越多的时候&#xff0c; 就越来越同意出错。这种重复性的工作&#xff0c; 我们当然不希望做那么多。还好&#xff0c; mybatis 为我们提供…

webservice-WebService试题

ylbtech-doc:webservice-WebService试题WebService试题 1.A,返回顶部001&#xff0e;{WebService题目}下列是Web服务体系结构中的角色的是&#xff08;&#xff09;&#xff08;选择3项&#xff09; A&#xff09;服务提供者 B&#xff09;服务请求者 C&#…

Session的模拟

Session相关的mock Session相关的mock主要有以下两个步骤&#xff1a; 1&#xff09; HttpContext对象的实例化 session属于HttpContext对象&#xff0c;所以简单来说&#xff0c;就是我们需要构造一个HttpContext&#xff0c;对象然后在给其中的Session附值。然后再把它指定到…

C++ STL的基本基本原理

STL都是在内存的堆区分配的&#xff0c;但是其析构也是STL帮我们做好的&#xff0c;不用手动去delete。 1.vector 逻辑地址连续的一片内存空间&#xff0c;当空间不足&#xff0c;重新申请新的地址空间&#xff0c;将原有的数据复制过去&#xff0c;而新的地址空间的大小C没有规…

iOS 修改项目名称

2019独角兽企业重金招聘Python工程师标准>>> 1. [代码]iOS 修改项目名称 1 2. [图片] 1.png 3. [图片] 2.png 4. [图片] 3.png 5. [图片] 4.png 6. [图片] 5.png 转载于:https://my.oschina.net/5951008876/blog/681857

java wait源码_Java精通并发-透过openjdk源码分析wait与notify方法的本地实现

上一次https://www.cnblogs.com/webor2006/p/11442551.html中通过openjdk从c的底层来审视了ObjectMonitor的底层实现&#xff0c;这次继续来探究底层&#xff0c;对于wait()和notify()的底层细节到底是啥样的呢&#xff1f;下面还是先来到openjdk中来打开ObjectMonitor.hpp&…

listActivity和ExpandableListActivity的简单用法

今天自己简单的总结了listActivity和ExpandableListActivity二者的简单用法。 首先&#xff0c;先说一下listActivity的用法&#xff1a; ListActivity是一个绑定到一个数据源&#xff0c;并且用来显示这一串数据的Activity。ListActivity拥有一个listview对象来实现数据源的绑…

搭建git for windows服务器(100%可以成功)【转】

转自&#xff1a;http://blog.csdn.net/code_style/article/details/38764203 既然Git在linux下面非常好用&#xff0c;为什么还要搭建git windows的服务器&#xff0c;因为不是所有的用户都需要在linux下面做开发&#xff0c;对吧&#xff0c;还有很多用户选择使用windows做开…

【转】高性能WEB开发系列之重绘与回流

原文转载&#xff1a;http://www.cnblogs.com/wangzhichao/archive/2011/05/16/2047633.html页面呈现流程 在讨论页面重绘、回流之前。需要对页面的呈现流程有些了解&#xff0c;页面是怎么把html结合css等显示到浏览器上的&#xff0c;下面的流程图显示了浏览器对页面的呈现的…

[数据结构与算法] 单链表的简单demo

Vc6之下编译通过。。 1 /*******************************************************2 * : Project: 单链表数据结构演示3 * : File: link_list.h4 * : Function&#xff1a; 提供单链表操作的数据结构定义及方法声明5 * : History: 2013-10-01 22:37:056 * : Auth…

c++ 17介绍

作者&#xff1a;hearts zh链接&#xff1a;https://www.zhihu.com/question/32222337/answer/55238928来源&#xff1a;知乎著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。其实现在的proposal很多很多&#xff0c;不出意外也会有相当一部分…

“高考”机器人横空出世 2017年居然要考“大学”

文/辛东方&#xff0c;80后作家、专栏作者、专注互联网科技领域人工智能的发展&#xff0c;科学技术的全力配合&#xff0c;已经把人类的智慧实实在在的体现到了智能化设备上。按照目前的发展速度&#xff0c;人工智能要想真正突破技术难关&#xff0c;达到进一步的智能化&…