077java 基于web
service的跨平台上传下载系统的实现样本
(样本只提供该系统的基本情况介绍,若需要完整的设计和论文,建议您购买本系统,凡是购买本站系统的,本站均根据您的要求,把系统上的开发信息,题目等修改成符合您的要求)
本系统开发工具:JAVA
本设计包含内容:源代码+毕业论文+开题报告+答辩稿
论文大概:
分类号
密级
基于webservice的跨平台上传下载系统的实现
基于WebService的跨平台上传下载系统的实现
摘
要
Web Service是目前计算机界一个非常流行的技术,以至于有些人把Web
Service列入目前最热门的十大技术之一。的确,随着互联网的广泛应用和发展,尤其是电子商务的发展,出于互联网上各种复杂的应用系统和对更高安全性的要求,Web
Service的横空出世的确满足了当前这些的要求和需要。Web
service,作为在松散耦合和动态集成基础上提供无缝跨平台互操作的解决方案,具有松散耦合,位置透明,协议独立的特点,使得它不必依赖于某个特定的实现提供尚,协议独立的特点,使得它不必依赖于某个特定的实现提供尚,对运行环境的要求也比较宽松,因此特别适合Internet上分散应用的互联。
上传下载,作为分布式应用中的基本模块,目前主要采用控件的方法来实现,其缺点是需要下载控件,限制了使用的领域。随着Internet技术的发展和跨平台需求的日益增加,Web
Services的应用越来越广,借助Web
service的通用性,在Http协议下,实现上传下载逻辑的跨平台实现,采用J2EE实现之,并实现在J2EE平台下的调用。
本文的主要内容是介绍Web
Service的相关知识,以及使用Jcreator来实现Web Services上传下载的功能。
关键词: Web
service,上传,下载,跨平台,J2EE
论文类型:应用研究
The Advanced Research on Web service
ABSTRACT
Web Service is a technique popular in the computer word
today so that has been considered as one of the 10 top pop
techniques by some one. Along with the application and development
of Internet, especially with the development of E-Business,
complicated systems and better security are required, and the
technique of Web Service just well fulfills the requirement,
indeed.
As a sort of project, which providing seamless
Cross-Platform interoperation based on loose coupling and dynamic
integrating, Web service has the characteristics of loose coupling,
location lucid and Protocol Independence, so it's independent of
some special Implementation-Vendor and well fit for decentralized
application and net working on internet.
Upload and download, as
essential modules in distribution application, are realized by
method of applying controls, whereas it's limited owning to its
disadvantage, downloading controls being indispensable. Along with
development of internet technique and more requirements on
Cross-Platform tech., Web Service has been applied wider and wider.
Recurring to Web Service's generality, under the agreement of HTTP,
Upload and Download between Cross-Platforms and transferring on the
platform of J2EE will be realized by applying J2EE .
Here, we'll
introduce relative knowledge of Web Service and how to apply
Jcreator to realize the function of Web Services' upload and
download
Keywords: Web service,upload, download, Cross-Platform
Type
of Thesis: Application Research
目录
第一章 绪论 1
§1.1引言 1
§1.2
技术原理 1
§1.3发展动态 1
§1.4本论文章节安排 2
第二章 相关技术介绍 2
§2.1
什么是Web Service 2
§2.1.1如何调用Web Service 3
§2.1.2
组成Web service的技术 4
§2.1.3 SOAP 6
§2.1.4
Axis 6
§2.1.4小结 7
第三章 功能的实现 7
§3.1系统设计 7
§3.1
服务端 8
§3.2
客户端 10
第四章 总结与展望 16
致谢 17
参考文献 18
第一章 绪论
1.1 §1.1引言
随着Internet技术的发展和跨平台需求的日益增加,Web
Services的应用越来越广,我们不但需要通过Web Services传递字符串信息,而且需要传递二进制文件信息。而Web
service平台是一套标准,它定义了应用程序如何在Web上实现互操作性。可以用任何你喜欢的语言,不同的平台中编写Web service
,通过Web service的标准来对这些服务进行查询和访问。简单来讲,Web Services是一种新型的 Web 应用程序,Web
Services是基于XML技术的一些标准的集合。这其中包括:
SOAP、WSDL、UDDI,以及最近出现BPEL4WS(Business Process Execution Language for
Web Services:用于Web Services的商务过程执行语言)和WSCI(Web Services Chorography
Interface:Web
Services协作接口)。而上传下载,作为分布式应用中的基本模块,随着Internet技术的发展和跨平台需求的日益增加,Web
Services的应用越来越广,借助Web
service的通用性,在Http协议下,实现上传下载逻辑的跨平台实现,采用J2EE实现之,并实现在J2EE平台下的调用。
1.2 §1.2
技术原理
Web Service是独立的、模块化的应用,能够通过因特网来描述、发布、定位以及调用。在Web
Service的体系架构中包括三个角色:服务提供者(Service Provider)、服务请求者(Service
Requestor)、服务注册器(Service
Registry)。角色间主要有三个操作:发布(Publish)、查找(Find)、绑定(Bind)。
Web
Service中涉及两个部分:服务本身和对服务的描述。典型的应用过程是:服务提供者开发一个通过网络可以被访问的服务,然后将服务的描述注册到服务注册器或者发送给服务请求者;服务请求者通过查找动作在本地或服务注册器中检索服务描述,找到后,通过绑定就可以使用该项服务。
在本文中,客户端通过使用服务器端提供的服务接口,来实现上传和下载的功能。
1.2.1 §1.3发展动态
基于XML的Web
Service是参照B2B通信协作模式制定的新的规范。它提供了概念上和结构上的,适用于各种不同平台和产品的基础。开发者可以利用J2EE技术来开发基于XML的Web
Service。他们可以利用现存的J2EE技术来开发完整的,遵从XML标准的,能完全共通的Web
Service。无需重新设计或者构造现有的J2EE系统,开发人员就可以构建复杂的强大的Web服务应用。
Web
Service是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。这种技术允许网络上的所有系统进行交互。随着技术的发展,一个Web
Service可以包含额外的指定功能并且可以在多个B2B应用中协作通讯。
Web Service正在不断完善,并且以一种非常智能的动态的方法来进行。这些灵活的Web
Service可以理解请求中上下文的关系,并且在每一个特定的情况下产生动态的结果。这些服务会根据用户的身份,地点以及产生请求的原因来改变不同的处理,用以产生一个唯一的,定制的方案。这种协作机制对那些只对最终结果有兴趣的用户来说,是完全透明的。
Web
Service所遵循的XML标准可以增进事物通信的性能。开发人员将可以利用不同的平台,产品和标准来实现很多种可能。通过这种标准,开发人员可以建立一个系统使他们的Web
Service提供最大的协同工作的能力。
一般来说,在不同的事务之间进行电子通信协作会有很多阻碍。全异的系统,安全限制和不相同的数据格式,导致很多B2B系统在他们自己的领域或者客户群中形成唯一。Web
Service将改变这一切,使不同的事务互相通信变为可能,值得注意的是,这会降低建立商业站点的开发和维护成本。
1.3 服务端
1. 使用Jcreator建立一个项目,新建立一个jws文件,命名为:FileService.jws,这个文件将是实现上传下载服务的主文件。
编写上传文件的接口内容如下:
public String putFile(DataHandler dh,String
name)
{
//TODO:上传文件。
if (dh
==null )
System.err.println("dh is
null");
if(name==null)
name="test.tmp";
try
{
File
dir=new
File(Repository);
if(!dir.exists())
{
dir.mkdir();
}
InputStream
input=dh.getInputStream();
FileOutputStream
fos=new FileOutputStream(new
File(dir,name));
byte[] buffer=new
byte[1024*4];
int
n=0;
while((n=input.read(buffer))!=-1)
{
fos.write(buffer,0,n);
System.out.print(buffer);
}
input.close();
fos.close();
}catch(IOException
e)
{
e.printStackTrace();
}
return
"\n "+ name+" 已经上传成功!";
}
//-----------------------------------------------------------------------------------------------
该方法的功能是根椐客户端传入的参数dh和name来把dh的内容保存到指定目录下以name命名的文件中;保存完成后,将返回成功上传的信息给客户端。
编写下载文件的接口内容如下:
public DataHandler getFile(String
name)
{
//TODO:下载指定的文件
File
dir=new
File(Repository);
if(!dir.exists())
dir.mkdir();
File
data=new
File(dir,name);
if(data.exists())
return
new DataHandler(new
FileDataSource(data));
else
return
null;
}
//-------------------------------------------------------------------------------------------------
该方法是根椐客户端传入的参数name,在指定的目录下查找相同的文件,如果找到,则把DataHandler类型的数据句柄回传给客户端,如果没找到,则返回一个空的句柄。
2. 将该文件拷贝到AXIS应用目录C:\Tomcat\webapps\WebServic下。
3. 访问连接
http://localhost:8080/WebServic/FileService.jws?wsdl,页面应显示Axis自动生成的wsdl。如下图:
图3.1.1
WSDL信息
如果显示如上图内容,则说明现在服务器已经开始提供两个接口方法:getFile和putFile了;客户端可以绑定调用这两个接口来实现上传下载的功能了。
1.4 §3.2
客户端
1. 接下来使用Jcreator建立一个项目,新建立一个java文件,命名为:Client.java,这个文件将是实现调用上传下载服务的客户端程序。
编写调用上传接口的函数:
public
static void upload(String strUploadFileName) throws
ServiceException,
MalformedURLException
{
//TODO:该函数的功能是把本地的文件上传到服务器上。
//参数:
//strUploadFileName:指定要上传的文件名,要包括完整的路径。
//这个地址是实际服务器的地址
String
WebServerUrl =GetWebUrl();
//保存到服务器上的文件名。
String
strSaveToSvrFileName;
//取得要保存到服务器上的文件名
int iPos =
strUploadFileName.lastIndexOf("\\");
strSaveToSvrFileName
=
strUploadFileName.substring(iPos+1,strUploadFileName.length());
DataHandler
dh =
new DataHandler(new
FileDataSource(strUploadFileName));
Service
service=new Service();
Call call=(Call)
service.createCall();
call.setTargetEndpointAddress(new
java.net.URL(WebServerUrl));
//指定方法的命名空间
call.setOperationName(new
QName(WebServerUrl, "putFile"));
QName
qnameattachment=new
QName("FileService","DataHandler");
call.registerTypeMapping(dh.getClass(),qnameattachment,
JAFDataHandlerSerializerFactory.class,
JAFDataHandlerDeserializerFactory.class);
call.addParameter("s1",qnameattachment,ParameterMode.IN);
call.addParameter("s2",XMLType.XSD_STRING,ParameterMode.IN);
//用Class.forName("java.lang.String")来获取java类型
call.setReturnType(XMLType.XSD_STRING);
try
{
String
ret=
(String)call.invoke(new
Object[]{dh,strSaveToSvrFileName});
System.out.println(ret);
}
catch(Exception
e)
{
e.printStackTrace();
}
}
//---------------------------------------------------------------------------------------------------
编写调用下载文件接口的函数:
public static void download(String
strFileNameOnSvr,String strSave2FileName) throws ServiceException,
MalformedURLException
{
//TODO:该函数的功能是把到服务器上的文件下载到本地。
//参数:
//strUploadFileName:指定服务器上的文件名,无路径,
//只需要要有文件名就行。
//strSave2FileName:指定要保存的路径,要包括完整的路径。
DataHandler dh=null;
String
WebServerUrl=GetWebUrl();
Service
service=new Service();
Call call=(Call)
service.createCall();
call.setTargetEndpointAddress(new
java.net.URL(WebServerUrl));
//指定方法的命名空间
call.setOperationName(new
QName(WebServerUrl, "getFile"));
call.addParameter("s1",XMLType.XSD_STRING,ParameterMode.IN);
call.setReturnType(XMLType.MIME_DATA_HANDLER);
try
{
//调用服务器接口取文件数据。
dh=(DataHandler)call.invoke(new
Object[]{strFileNameOnSvr});
if(dh==null)
{
System.out.println(“找不到指定的文件。”);
return
;
}
}
catch(Exception
e)
{
e.printStackTrace();
}
try
{
//取得要保存到本地的文件名
String
dir ="";
String filename ="";
int iPos =
strSave2FileName.lastIndexOf("\\");
dir =
strSave2FileName.substring(0,iPos+1);
iPos
=strSave2FileName.lastIndexOf("\\");
filename
=
strSave2FileName.substring(iPos+1,strSave2FileName.length());
InputStream
input=dh.getInputStream();
FileOutputStream
fos=new FileOutputStream(new
File(dir,filename));
byte[] buffer=new
byte[1024*4];
int
n=0;
while((n=input.read(buffer))!=-1)
{
fos.write(buffer,0,n);
}
input.close();
fos.close();
System.out.println("\n下载文件成功!");
}catch(IOException
ex)
{
ex.printStackTrace();
}
}
//---------------------------------------------------------------------------------------------------
然后在类中的main函数中加入更方便的操作过程,如判断用户输入的文件是否存在等:
public
static void main(String[] args) throws Exception
{
BufferedReader in =new BufferedReader(new
InputStreamReader(System.in));
String
s;
try
{
System.out.print("\n\n\n请输入您的选择(直接按回车退出):
\n\n\t\t1.上传文件\n\n\t\t2.下载文件\n-->>");
if((s =in.readLine()).length() !=0)
{
//只有输入1位数才行。
if(s.length()!=1)
{
System.out.println("请输入正确的选择!");
return;
}
else
{
try
{
int iSelect =
Integer.parseInt(s,10);
switch(iSelect)
{
case 1:
//上传
System.out.print("\t\n请输入需要上传的文件的
完整路径名:");
if((s =in.readLine()).length()
!=0)
{
try
{
//用这个来判断是否文件存在
FileInputStream
check =
new FileInputStream(s);
check.close();
}catch(Exception
E)
{
System.out.println("所给定的文件不存
在!退出。");
return;
}
upload(s);
}else
System.out.println("没有输入,退出。");
return;
case 2:
//下载
String
DownloadFileName;
String
Save2FileName;
System.out.print("\t\n请输入需要下载的文件名:");
if((DownloadFileName =
in.readLine()).length() !=0)
{
System.out.print("\t\n请输入要保存到
的完整路径名:");
if((Save2FileName =
in.readLine()).length()!=
0)
{
//如果都输入了。就下载。
download(DownloadFileName,
Save2FileName);
}else
System.out.println("没有输入,退出。");
}else
System.out.println("没有输入,退出。");
return;
default:
System.out.println("请输入正确的选择!");
return;
}//end of switch
}catch(Exception E)
{
System.out.println("请输入正确的选择!");
return ;
}
}//end of
else
}//end of
while
// An empty line terminates
the program
} catch(IOException e)
{
e.printStackTrace();
}
}
//---------------------------------------------------------------------------------------------------
2. 保存文件,并且用javac编译Client.java;用java
Client 运行程序。
运行界面如图:
图3.2.1 程序运行界面1
输入1(上传文件)之后的界面:
图3.2.2 程序上传文件的界面
输入2(下载文件)之后的界面:
图3.2.2
程序下载文件的界面
至此,已经完全的实现了通过Web Service发布的接口来实现了上传下载的功能。