`

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

    博客分类:
  • java
阅读更多
构造方法

一个企业级的应用程式能有几种方法来构造Applet和Servlet的使用。我将向大家介绍三种不同的构造方法,并对他们的优缺点进行比较。

第一种方法实际上只使用了Applet而没有使用Servlet,尽管Applet受到他们的安全模式的限制,不过Applet还是能使用象JDBC、RMI这样的协议来访问象数据库、LDAP目录和Enterprise JavaBeans组件这样的后端信息。

这种方法虽然看上去非常简单,不过这并不是个好的方法,他会带来非常多的问题。首先, 这种安排需求你将所有的访问信息直接嵌入到你的Applet代码中。数据库用户名、口令、服务器标识,所有的这一切都必须包含在你的Applet代码中,这样最终用户就有可能从类文件中搜集到这些信息。

此外,数据库或所有其他你访问的系统都必须在提供Applet的同一台服务器上。这意味着你的服务器将不得不承担双重的负担,他既是个web服务器,也是个数据库服务器。

典型的情况是,你的后端资源可能受到防火墙的保护,不过在这种情况下,这是不可能的,因为运行在客户端上的Applet必须直接访问你的机器。最后,使用这种方法,你想使用web服务器群集,如果不是不可能的,至少也是非常困难的。

好一点的方法是将和后端资源通信的事务封装到Servlet中,而Applet仅仅用来处理前端的工作。在这种构造方法中,正如我们在图2中所示的那样,Servlet克服了Applet固有的安全约束,并用来控制Applet访问企业信息系统和事务逻辑。

当Servlet接受到一个请求时,他会在后端数据库中查询信息、执行计算、处理对代表Applet的信息的获取并作用于来自Applet的信息。这种方法的一大进步是Applet/Servlet对能分布在一个后端web服务器的群集上,所有和某一共享的数据库的通信都存在于后端。

此外,使用Servlet的设计有助于设计的模块化、抽象应用程式的后端处理商业逻辑并提高设计的灵活性。

如果你是围绕Enterprise JavaBeans构建你的应用程式,Servlet就成了中间件。EJB组件能更加有助于将商业逻辑从Servlet中分离出来,并将其更加抽象。

在这种情况下,一个Applet和他的Servlet通信,Servlet再和EJB组件通信。在应用程式构建中引入由EJB组件、Servlet和前端的applet/HTML这样的层次结构,能给我们提供最大限度的弹性和性能。尽管这样做你必须附出复杂化和费用的代价。

通信策略

如果你使用了这样的构造:在前端使用Applet,在后端使用Servlet,那么你将需要执行Applet和Servlet的通信。因为Applet受浏览器的安全模式的限制,我们在对一个Applet存取数据和信息时并没有太多的选择。

正如我们在前面提到的,我们不能读取客户端的文件系统、不能运行客户端的程式,由于Applet不是在服务器上运行的,我们也不能访问服务器上的文件系统。我们只能建立到运行在我们的主机上的服务的网络连接。

另外,不要忘记应用程式是在一个公开的Internet上发布的,防火墙可能会限制通过HTTP到Servlet或其他web-server模块的会话。事实上,因为Applet本身就是在网络上通过HTTP发布的,所以我们必须准确把握通信的策略。

假定在客户端的Applet和服务器端的Servlet之间的网络连接是我们能使用的唯一的通信路径,我们能有几种方法交换信息。正如你知道的,文字流能由服务器通过HTTP发放。

不过你可能不知道Java对象出能用这种方式发放。我们将周详地介绍HTTP文字流和HTTP对象流的使用。另外,我们将简单地介绍通过Socket进行通信的方法。

Applet和Servlet交换信息的最简单地方法就是通过HTTP文字流。Java的URL和URLConnection类型使得从一个URL读取数据变得非常容易,你能不用担心Socket和其他有关网络工作的通常的复杂问题。我们所需要的只是个服务器端的组件,这个组件应该能通过URL发放信息。这就是我们在这儿使用Servlet的原因。

作为一个例子,我们想要监视服务器的JVM所能使用的内存的总数,并在一个Applet中用一个简单的仪表显示他。首先我们需要研发一个Servlet,当通过他的URL访问这个Servlet时能返回我们所需要绘制仪表的信息。这个Servlet的原始码如清单1所示。

清单1


import javax.servlet.*;
import javax.servlet.http.*;
public class ShowMemservlet
extends Httpservlet 
{
   public void doGet(HttpservletRequest
   req, HttpservletResponse res)
   throws servletException, IOException
   {
      res.setContentType("text/plain");
      PrintWriter out = res.getWriter();
      Runtime rt = Runtime.getRuntime();
      out.println(rt.freeMemory());
      out.println(rt.totalMemory());
   }
}
 



这个非常简单的Servlet会响应一个GET请求(直接通过浏览器或是象我们在下面将看到的那样通过我们的Applet),并返回两行文字。第一行显示了服务器的JVM的剩余的自由空间,第二行显示了JVM可用的全部空间(译者注:包括已使用的空间)。 

要建立我们的Applet中的仪表,我们只需要建立一个到这个Servlet的连接,将他的InputStream封装到一个DataInputStream中,读出这两个参数,将其转换成数字,并更新我们的仪表。 

我们能让我们的Applet执行Runnable接口并在其自己的线程中运行。每隔一秒钟,我们能运行一个方法来更新我们的仪表。refresh()方法的代码如清单2所示。 

清单2 


private void refresh() 
throws MalformedURLException,
IOException
{
   URL url = new URL(getCodeBase(),
   "/servlet/ShowMemServlet");
   URLConnection con = url.openConnection();
   con.setUseCaches(false);
   InputStream in = con.getInputStream();
   DataInputStream textStream;
   textStream = new DataInputStream(in);
   String line1 = textStream.readLine();
   String line2 = textStream.readLine();
   double freeMem = Double.parseDouble(line1);
   double totalMem = Double.parseDouble(line2);
   int usedMem = totalMem - freeMem;
   int percentUsed = 
   (int) 100 *(usedMem / totalMem);
   meter.setLength(percentUsed);
}
 



正如你看到的,HTTP文字流的使用相当简单而且直接。Applet建立到Servlet的连接,读取他返回的两行信息并对其进行适当的处理。 

使用简单的文字流来交换数据有一个主要的弱点,那就是Applet并不直接理解数据的信息,而是要将其转换成一个有用的格式。在我们的例子中,将字符串转换成数字还不算太复杂,不过当我们试图处理一个更复杂的数据和对象时,转换的工作会非常快变得无法控制。事实上,在下面我们能看到我们一种简单的方法来处理这些复杂的数据。


分享到:
评论

相关推荐

    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将作为客户端的部分运行在用户的浏览器上,而...

    黑龙江大学的J2EE教程

    首先,J2EE基础部分介绍了J2EE平台的起源、目标及其在企业级应用开发中的作用。J2EE旨在简化企业级应用的开发,提供一套丰富的API和服务,以便开发人员能够构建出可扩展性、可维护性更高的分布式应用系统。分布式...

Global site tag (gtag.js) - Google Analytics