`

企业级应用中的Applet和Servlet的通信(三)

    博客分类:
  • java
阅读更多

HTTP对象流

你也许还没有意识到HTTP连接也能用来传输二进制的数据,就象传输文本数据相同,不过事实上每次你从一个web看到图象时或是下载.zip文件时都在使用这个功能。

我们能利用这个功能并结合被称之为“对象序列”的技术从Servlet向Applet传输完整的Java对象。复杂的数据能非常容易地被传输,你不必做所有解析和解释。

对象序列允许我们将对象封装到二进制数据流,他能到达一个OutputStream能到达的所有地方:磁盘、屏幕或是在我们的例子中,通过一个HTTP连接到达一个Applet。

对象序列是JVM1.1和更高的版本才支持的功能,所以有一些老版本的浏览器不支持这一功能。不过Sun公司的Java插件几乎能对所有的浏览器进行升级以支持最终版本的Java,这样他就能支持对象序列。

使用HTTP对象流和使用HTTP文字流的方法几乎相同。我们建立一个到我们的web主机上的Servlet的URL连接并读取其返回的数据。只不过我们不再是将InputStream封装到DataInputStream中,而是将其封装到ObjectInputStream中。我们能按照适当的类型读取其中的对象。

清单3显示了我们用来交换一个对象的一段代码,这个对象用来从Servlet获得有关书目的信息(包括作者、题目、价格和其他信息)。你会注意到在这里我们用ObjectOutputStream取代了清单1中的PrintWriter,其基本概念是相同的。

清单3


public void doGet(HttpservletRequest req, 
HttpservletResponse res)
throws servletException, IOException 
{
   OutputStream out;
   ObjectOutputStream objStream;
   out = res.getOutputStream();
   objStream = new ObjectOutputStream(out);
   Album album = fetchNextAlbum();
   out.writeObject(album);
}
 



这个Servlet会生成书目对象的序列化版本,他可从他的fetchNextAlbum()方法作为一个数据流被接收。如果你通过一个web浏览器来访问这个Servlet,你会看到一堆垃圾,这是因为目前你只能处理文本而不能处理二进制数据的对象序列。 

请注意这个对象必须执行Serializable接口以使其序列化。此外,所有引用这个对象的其他对象也必须执行Serializable接口。 

在Applet端,每当用户单击Applet的Next按钮时,我们能使用方法getNextAlbum()(程式如清单4所示)来从服务器获得书目对象。Applet将查询这个对象并显示其中的数据。 

清单4 


private Album getNextAlbum() 
throws MalformedURLException, 
IOException
{
   URL url = new URL(getCodeBase(),
   "/servlet/Albumservlet");
   URLConnection con = url.openConnection();
   con.setUseCaches(false);
   InputStream in = con.getInputStream();
   ObjectInputStream objStream;
   objStream = new ObjectInputStream(in);
   album = (Album)objStream.readObject();
   return album;
}
 



正如你看到的,对象流给我们提供了一个非常简便的方法在Applet和Servlet之前交换一组复杂的信息。请注意我们所处理的不是单纯的数据而是对象,所以你能在客户端和服务器之间重用这个对象。这使得我们的程式更为智能化并且能防止重复的逻辑处理。 

Socket连接 

另外,一种不太常用的Applet和Servlet的通信策略是在两者之间建立Socket连接。这意味着研发者利用Socket连接设计并执行适当的协议来处理两者之间的通信。 

使用Socket的一个大的好处是这个连接是持续的而且是双向的。 

一个基于HTTP的连接只能短暂地交换信息。如果你想要不断地用新的信息更新Applet,你必须不断地建立新的HTTP连接。而对于一个Socket连接来说,你能只建立一个和服务器的连接,就能实现不断地更新。 

当然,你可能想要建立一个多线程的系统,这样能有几个Applet同时和服务器联系。请注意使用Socket有的时候并不是个适当的方法,绝大多数的防火墙不允许通过罕见的端口号进行通信。然而,在一个内部的Intranet上,这还是一项非常有用的技术。 

APPLET和SERVLET的协同工作 

在这篇文章中,我们讨论了有关建立一个前端使用Applet、后端使用Servlet的应用程式的一些有用的策略。Applet只有一个唯一的通信路径,不过我们能有几种在Applet和Servlet之间交换信息的方式。 

Sun公司的应用程式模型所推荐的策略和我们在这里讨论的相同。将事务逻辑从界面中分离能使得应用程式更加灵活,易于升级,这样的应用程式也更易于设计和维护。 

不过这个模型不允许你的Applet直接访问你的企业数据,这会大大减少你的系统的复杂性并大大提高你的系统的安全性。Applet和Servlet的协同工作将有助于建立一个较好的应用。 

分享到:
评论

相关推荐

    J2EE企业应用之Applet和Servlet间的通信

    在J2EE企业级应用开发中,Applet和Servlet经常一起用于构建多层架构的Web应用程序。Applet利用Java的动态特性,提供丰富的用户界面,而Servlet则在服务器端处理业务逻辑和数据交互。根据Sun公司推荐的模型,前端使用...

    applet与servlet通讯

    Sun 的应用编程模型推荐在前端使用 Applet、HTML 和 JavaServer Pages(JSP),在后端使用 Java Servlet 配合 Enterprise JavaBeans (EJB) 或其他组件来开发企业级 Java 应用。这种架构的关键在于客户端 Applet 和...

    Java EE企业级应用架构

    Java EE企业级应用架构是用于构建大规模、复杂的企业级软件系统的框架,它提供了一整套标准和规范,旨在简化开发过程,提高可伸缩性和可维护性。Java EE(原名J2EE)自1990年代以来不断演进,从最初的1.2版本到现在...

    深入Java Servlet网络编程

    1. 2 企业级n-层应用 1. 3 典型Web应用程序的处理过程 1. 3. 1 Web浏览器发送请求 1. 3. 2 执行服务器端程序 1. 3. 3 将结果运回给浏览器 1. 4 服务器端技术 1. 4. 1 各种服务器端技术的比较 1. 4. 2 基于...

    jsp和servlet帮助文档

    它们在企业级应用开发中占据重要地位,因为它们能够提供高效、可扩展且易于维护的解决方案。** **JSP(JavaServer Pages)** 是一个Java技术,允许Web开发者创建动态网页。它结合了HTML代码和Java代码,使得开发者...

    Servlet和JSP技术简述(英文和翻译)

    Servlet和JSP技术是Web开发中的核心技术,常用于构建动态、交互式的Web应用程序。这篇文档由Gildas Avoine和Philippe Oechslin在EPFL(瑞士洛桑联邦理工学院)撰写,旨在概述这两种技术的基本概念和作用。 1.1 ...

    10、聊天系统(java+applet).zip

    在JavaEE平台上,开发者可以构建可扩展、分布式的企业级应用程序,而Applet是Java的一个早期特性,它允许在Web浏览器中运行Java代码,为用户提供丰富的客户端交互体验。 【描述】中提到,这个系统是基于"Java+...

    基于移动Agent的企业级数据挖掘应用模型研究.pdf

    研究者陈少波提供了有关移动代理在分布式数据挖掘应用中的详细分析和解决方案,并结合具体的应用模型和算法,为实际企业级数据挖掘应用提供了专业指导。陈少波所在的广东石油化工学院位于茂名,他在此领域有着深入的...

    servlet中文API

    通过掌握这些核心知识点,开发者可以更加高效地利用Java Servlet API构建复杂的企业级Web应用。此外,了解相关的Internet规范也有助于开发者更好地遵循标准,确保所开发的应用能够兼容各种网络环境和技术栈。

    吕老师servlet课件

    学习和掌握Servlet技术,对于理解Web服务器的工作原理以及进行企业级应用开发至关重要。通过深入理解Servlet的生命周期、HTTP协议以及Servlet的编程模型,开发者可以创建出高效、灵活且安全的Web服务。

    J2EE.rar_J2EE_j2ee applet

    J2EE(Java 2 Platform, Enterprise Edition)是Java平台的企业版,由Oracle公司提供,用于构建和部署分布式企业级应用程序。这个技术框架为开发人员提供了构建可扩展、高可用性、多层的服务器端应用的能力。J2EE的...

    J2EE技术在中国农业银行计算机审计系统中的应用.doc

    J2EE的历史可以追溯到Java Applet时代,随着Web技术的发展,Java Servlet和JSP(Java Server Pages)相继推出,进一步推动了企业级应用的开发。Servlet处理服务器端逻辑,而JSP则简化了表现层的开发。EJB...

    聊天系统(java+applet)130227.rar

    “毕设JAVA”表明这个项目专注于Java语言,Java以其跨平台性、安全性以及丰富的类库而广泛应用于企业级应用开发。在这个聊天系统中,Java可能被用来编写服务器端逻辑,处理用户的请求,管理会话状态,并与数据库进行...

    servlet技术

    3. **跨平台**:由于基于Java,Servlet可以在不同操作系统和应用服务器上运行。 4. **功能强大**:Servlet能直接与Web服务器交互,可以实现CGI难以完成的任务,如共享数据、数据库连接池等。 **6.1.4 Servlet的生命...

    J2EE企业级项目开发-3期(KC007) 1.1 j2ee.doc

    中间件,作为一种位于操作系统和应用程序之间的软件,提供了一种隔离机制,使得开发者无需关心底层操作系统细节,专注于应用功能的实现。 随着Java技术的发展,J2EE经历了多次命名变更,从J2EE到Java EE,强调了...

    聊天系统(java+applet)

    它以其“一次编写,到处运行”的特性而闻名,适用于开发跨平台的桌面应用、网页应用、移动应用以及企业级系统。在本项目中,"聊天系统"是用Java语言构建的,它允许用户通过网络进行实时通信。 【Applet与Java聊天...

    J2EE企业级项目开发-3期(KC007) 2.5 J2EE容器文档.doc

    在J2EE企业级项目开发中,了解和掌握J2EE容器是非常关键的。J2EE容器是一种特殊的软件环境,它能够管理和控制J2EE应用程序中的组件,确保它们的正确运行和生命周期管理。容器提供了标准接口,让开发者无需关心底层的...

    j2ee用java applet实现聊天程序

    首先,我们要明白J2EE是一个为企业级应用提供服务的框架,包括Servlet、JSP(JavaServer Pages)、EJB(Enterprise JavaBeans)等组件。在这个聊天程序中,Java Applet将作为客户端的部分运行在用户的浏览器上,而...

    javaee核心技术介绍

    在学习JavaEE时,了解以上技术的原理和应用对开发高效、稳定的企业级应用至关重要。JavaEE的核心技术不仅仅简化了应用的开发和部署过程,而且通过规范和标准促进了企业级应用平台的可扩展性、性能和跨平台互操作性。

Global site tag (gtag.js) - Google Analytics