- 浏览: 262752 次
- 性别:
- 来自: 福州
文章分类
最新评论
-
sflscar:
太好了,我搞了一下午,批量插入,第一个参数个数没对sql批量导 ...
redis pipe大数据量导入 -
赵青青:
那 entity.hbm.xml 文件中的主健策略怎么配置 ...
Hibernate 和 Access -
GapStar:
换成flash IconCellRenderer.as应该怎么 ...
DataGrid 中加入图标 -
binbinyouli:
不好意思。我把楼主注释掉得部分打开了。但是我看楼主有传递对象的 ...
Flex Flash 和JAVA 在Socket交互 -
binbinyouli:
不知道前两位评论人时怎么做得。我再做这个例子的时候出现了安全沙 ...
Flex Flash 和JAVA 在Socket交互
由于数据库服务器A和服务库服务器B之间存在着数据的交换,而WEB服务器A并不能直接访问数据库服务器B,同理WEB服务器B也不能直接访问数据库服务器A。这样的交换只能是通过两台Web主机来进行。而在绝大多数时候,我们涉及的是较大规模的数据交换,使用带参数的格式显然不能满足我们的要求,这就涉及了不同Web主机上的Servlet之间数据对象的相互传输的问题。
使用通常的Application域或是Session域的javabean看上去不能满足我们的要求,虽然我们相信会有很多更为完美的方案可以解决这个问题,但是我们今天想看看如何直接通过HTTP连接来完成这样的传输。
首先对于我们的每一个独立的应用来说,两台WEB服务器都会存在一个主次的关系,情况也许是这样的:访问者访问WEB服务器A上的一个servlet A,而这个servlet A产生一个数据对象传输到WEB服务器B上的另一个servlet B,servlet B接收到这个数据对象后对其进行相应的处理,然后它可能还会生成另一个数据对象传输到servlet A中。这样的过程看上去有点象一个远程函数调用的概念。限于篇幅的限制,我们这里讨论一种较为简单的情况,test将passobject传输到test2,test2对passobject进行处理后将其传回到test。
简单示例的源码
passobject.java
首先,我们需要在两台WEB主机上分别建立对passobject的定义,在两台主机上的定义应该是完全一样,这样的类定义和我们通常使用并没有什么不同。只是这样的类必须实现序列化,也就是要实现Serializable:
|
test.java
在其中的一台web主机上建立。除去加注释的那几行,这完全是一个通常意义上的用于显示的servlet,不过那几行的内容看上去也许会有点让你眼花缭乱。这几行将数据对象传输到了另一台主机的test2中,并接收经过test2处理的数据对象。对于这里所涉及的一些不太常用的API,我们将会在最后一并说明。
|
test2.java
在其中的另一台web主机上建立,用来接收test发送的数据对象,并对其进行处理后返回到test。
|
程序中涉及的部分API的说明
java.net.URL
URL类表示了一个统一资源路径。这样的资源可能是一个文件或目录,也可能是更为复杂的诸如数据库的查询或是搜索引擎。
在我们的程序中使用了URL的一种构造函数:
URL(String spec)
直接使用字符串作为构造函数的参数,这实际上是URL的众多构造函数中最为简单的一种。
此外,我们还用到了URL的openConnection()方法:
public URLConnection openConnection()
throws IOException
该方法返回了一个URLConnection对象。每次调用该方法时会开启一个到指定URL的新的连接。
这里需要注意的是,调用该方法的结果是建立了一个连接,这与通常的页面跳转完全是两回事。在更多的情况下,这里仅仅是建立了一个连接的通路,而并没有实现任何其它的操作。
java.net.URLConnection
这是一个抽象类,是所有反映application和一个URL之前的通信的类的超类。这个类的实例可以用来对一个URL表示的资源进行读写。
在我们的程序中我们使用了这个类的如下方法:
getInputStream
public InputStream getInputStream()
throws IOException
返回从这个连接读取的一个输入流
getOutputStream
public OutputStream getOutputStream()
throws IOException
返回一个用于写入这个连接的输出流
setDoOutput
public void setDoOutput(boolean dooutput)
设置该连接是否可以写入
setUseCaches
public void setUseCaches(boolean usecaches)
设置该连接是否使用cache
java.io.OutputStream
这是一个抽象类,是所有反映一个二进制输出流的类的超类。一个这样的输出流可以对二进制数据进行输出或发送。
java.io.ObjectOutputStream
该类用来向一个OutputStream写入java的对象。这个对象可以使用ObjectInputStream进行读取或再造。
只有实现java.io.Serializable接口的对象可以写入该数据流中。
在我们的程序中还使用了该类的writeObject()方法:
public final void writeObject(Object obj)
throws IOException
将指定的对象写入ObjectOutputStream。
java.io.InputStream
这是一个抽象类,是所有反映一个二进制输入流的类的超类。
java.io.ObjectInputStream
一个ObjectInputStream对一个使用ObjectOutputStream写入的对象进行解析。
在我们的程序中使用了该类的readObject()方法:
public final Object readObject()
throws OptionalDataException,
ClassNotFoundException,
IOException
从一个ObjectInputStream中读取一个对象。
程序执行的结果
如果一切正常,访问test.Test你应该可以看到这样的结果:
yzysynew
new
yzysyold
new
其中yzysynew,new是对象原来的内容,而yzysyold,new所反映的那个对象已经是传送到test2后经test2处理过的了。
转自:http://www.jspcn.net/htmlnews/11453840698901658.html
发表评论
-
redis pipe大数据量导入
2015-07-06 18:48 14215由于做性能测试,需要往redis中导出千万 ... -
Tongweb、Tomcat远程调试
2014-04-15 21:01 3689在开发过程中经常需要对布署在远程的程序进行跟踪测 ... -
JAVA中Integer 和 int 的比较
2012-06-17 15:04 838http://topic.csdn.net/u/2012060 ... -
java给图片加水印,文字水印
2010-10-09 10:03 1163package com.newland.bi.tt; i ... -
Struts+jsonplugin
2010-04-19 20:42 1094JSON官方文档 http://www.json.org/j ... -
jsp session 丢失
2010-04-19 20:37 23621.先访问a站点:http://192.168.18.2/te ... -
读取Properties的N种方法
2009-12-14 10:55 937如何读取资源文件:( ... -
Java正则表达式详解(上)
2009-03-28 10:24 958如果你曾经用过Perl或任 ... -
JAVA数据库基本操作指南
2009-03-28 10:04 965转自:http://www.qqread.com/java/2 ... -
与常用支付平台接口
2009-03-03 10:10 1370step-by-step集成阿里巴巴支付宝接口 http:// ... -
Java 6 RowSet 使用完全剖析(3)
2009-03-02 19:31 1196清单 24. 清单 23 中的代码执行结果 1 Tom Tom ... -
Java 6 RowSet 使用完全剖析(2)
2009-03-02 19:19 2005分页 由于 CachedRowSet 是 ... -
Java 6 RowSet 使用完全剖析(1)
2009-03-02 18:52 1893javax.sql.rowset 自 JDK 1.4 引入,从 ... -
关于log4j配置文档详解
2009-02-25 14:39 793一.参数意义说明输出级别的种类ERROR、WARN、INFO、 ... -
Log4j最简入门(很不错的Log4j入门)
2009-02-25 14:34 833<!--[if !supportLists]--> ... -
Java对象的序列化和反序列化实践
2008-12-29 14:38 920引:当两个进程在进行远 ... -
Java语言中的参数传递详解
2008-12-24 08:41 837和其它程序设计语言类 ... -
set map table list总结
2008-10-13 11:39 1418<转自>http://bluefishyong. ... -
多态的运用 实现java 数据类型判断
2008-09-03 12:54 2420package javaBasic;/** *//** * 用 ... -
java关于23种java关于23种设计模式的有趣见解 设计模式的有趣见解
2008-09-03 12:48 1360创建型模式 1、FACTORY— ...
相关推荐
Servlet与applets不同的地方是,它不运行在Web浏览器或其他图形化的用户界面上。Servlet通过servlet引擎运行在Web服务器中,以执行请求和响应,请求、响应的典型范例是HTTP协议。 一个客户端程序,可以是一个Web...
4. **URL剖析**:URL(统一资源定位符)包含协议、主机、路径等信息,用于唯一标识网络上的资源。 5. **Servlet与CGI**:Servlet是Java环境下运行的服务器端程序,比CGI更高效,因为Servlet在服务器中保持活动状态...
项目完成后,需要在Web服务器上部署。这可能涉及配置服务器环境(如Tomcat)、设置虚拟主机、映射URL等步骤。测试方面,应确保不同浏览器、网络环境下的兼容性,以及在高并发情况下的稳定性和性能。 通过这个...
HTTP是互联网上应用最为广泛的一种网络协议,用于从Web服务器向客户端(如浏览器)传输数据。它基于请求/响应模型,即客户端发送一个HTTP请求到服务器,服务器处理请求后返回一个HTTP响应。HTTP请求主要包括方法...
- **XML**:一种标记语言,用于存储和传输数据。 - **Servlet+JSP**:Java Web开发的核心技术之一,用于构建动态Web应用程序。 - **Java EE体系**:概述了Java Enterprise Edition平台的架构和组成部分,强调了它...
MIME(Multipurpose Internet Mail Extensions)是一种标准,用于标识网络传输数据的类型,最初用于电子邮件系统,现在广泛应用于Web服务器,帮助服务器正确处理各种类型的数据,例如文本、图像、音频和视频等。...
它定义了客户端(如浏览器)和服务器之间交换数据的格式和规则。HTTP协议基于请求/响应模型,用户通过发送请求获取服务器上的资源。请求可以是GET、POST、PUT、DELETE等,而响应则包含状态码(如200表示成功,404...
HTTP(超文本传输协议)是互联网上应用最广泛的数据通信协议,用于从Web服务器传输超文本到本地浏览器。HTTP状态码是服务器对客户端请求的响应,常见的状态码如200表示成功,404表示未找到,500表示服务器内部错误。...
Servlet被广泛应用于Web应用程序中,特别是那些需要处理客户端请求并生成响应的应用程序。Servlet技术由Sun Microsystems开发,并随着Java平台的发展而不断进步。 #### Servlet的核心概念 - **Servlet**:一种运行...
HTTP是一种基于TCP/IP的协议,用于客户端和服务器之间的数据传输。它遵循请求-响应模型,使用80端口进行通信,并且是无状态的,这意味着每个请求都是独立的,服务器不会保存任何关于之前请求的信息。HTTP有多个版本...
虚拟主机允许在一台服务器上托管多个网站,通过不同的域名或IP地址区分。SSL证书则是实现HTTPS安全连接的关键,确保数据传输的加密性。 在使用Oracle WebServer部署应用程序时,通常会涉及到CGI(通用网关接口)和...
5. JavaBean:在JSP和Servlet中,JavaBean是一种遵循特定规则的Java类,通常用来封装业务对象或数据。它们可以被JSP页面通过EL(Expression Language)表达式直接引用,或者在Servlet中创建和传递,提高代码复用性。...
SMTP(Simple Mail Transfer Protocol)是电子邮件系统的核心,用于在邮件服务器之间传输邮件。在Java中,我们可以使用JavaMail API来实现SMTP协议,发送邮件。首先需要配置SMTP服务器的相关信息,如主机名、端口号...
- 灵活:支持多种类型的数据对象,包括文本、图像和视频等。 - 无连接:服务端完成客户端请求后,即关闭连接。 - **HTTP通讯基本过程**: - 客户端向服务器发送请求消息。 - 服务器接收到请求消息后,对其进行...
在Java Web开发中,JSP(JavaServer Pages)和Servlet是两种常见的技术,它们常用于构建动态网页和处理HTTP请求。在这个场景下,我们讨论的是一个使用JSP和Servlet实现的邮件发送系统,该系统具备发送带有多个附件的...
Servlet过滤器是Java Web开发中的一个重要组件,它主要用于对用户请求或响应进行预处理或后处理,可以在不修改Servlet本身的情况下增强或改变其功能。通过使用过滤器,开发者可以实现如认证、日志记录、压缩、编码...
【简易在线Web聊天室】是一个...通过以上知识点的介绍,我们可以看出,"简易在线Web聊天室"项目涵盖了Web开发的多个方面,包括前端交互、后端处理、数据传输、安全性和用户体验设计,是学习和实践Web开发技术的好例子。
HTTP(超文本传输协议)是互联网上应用最广泛的数据通信协议,定义了客户端(浏览器)和服务器之间的交互方式。HTTP基于请求-响应模型,特点是无状态、默认端口80,主要包含请求和响应两个部分,常用请求方法有GET、...
在Tomcat上发布Web应用,可以通过将应用文件夹放置于`tomcat/webapps`目录下自动部署,或者在`server.xml`中配置虚拟主机,或者在`tomcat/conf/Catalina/localhost`下创建XML配置文件来手动配置。直接访问未经配置的...