`

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

    博客分类:
  • java
阅读更多

在今天的多层结构的web应用程式的设计中,我们能同时使用Java applet和Servlet。Applet为建立功能强大的动态界面提供了便利的机制,Servlet为web服务器或其他应用服务器处理请求提供了高效率的手段。

Sun公司的应用程式模型描述了在Java2平台下研发企业级的Java应用的最佳的规范。一种被推荐的规范是:在前端使用Applet、HTML和JSP,在后端使用Enterprise JavaBeans支持的Servlet及其他成分。

这种体系结构的关键是在客户端的Applet和在服务器说?ervlet之间的通信。不过由于Applet受浏览器安全模式的限制,在一个Applet中存取数据和信息并不想看上去的那么简单。在这篇文章中,我们将解释在Applet-Servlet结构中研发者所面对的限制,并探讨几个不同的能在Applet和Servlet之间转输数据的通信策略。

如果你已熟悉Applet和Servlet,这肯定会对你阅读本文有帮助,如果你还不是那么熟悉,那也没关系,我们会简要地介绍他们。

APPLET和SERVLET的简介

Applet Java applets实际上是运行在web页面上的Java程式。他是个继承于java.applet.applet的Java类,他通过引用被嵌入到HTML页面中去,就象一个图像相同。Applet和HTML的组合,能建立功能更为强大的动态界面。

对于一些只用来滚动正文和播放动画的Applet,我们能在一个企业级的应用程式中利用他来显示和处理来自服务器上的资源的数据。例如,一个Applet能用来浏览和修改数据库中的记录或控制运行在服务器上的其他应用程式。

Java applet除了能使用他自己定义的类文件外,还能使用其他的类,不管这些类是独立存在的还是被打包成了一个JAR文件。Applet和他的类文件通过标准的HTTP请求进行分布,所以Applet能越过web页面数据所在的平台的防火墙进行发送。

除非是涉及到保持应用程式完整性的问题,Applet总会在每次用户重新访问web主机时自动刷新并会在客户端保留一段时间。

我们得感谢Java操作系统的平台无关性,这才使得Applet能运行在所有拥有Java虚拟机(JVM)的浏览器上。Sun公司的Java插件甚至能使用能利用最新版本的JVM编制页面,而不用担心受你的用户的浏览器上的JVM的版本的限制。

因为Applet是Java平台的扩展,所以在你建立用Applet建立你的web应用程式的界面时,你能重用已存在的Java组件。

正如我们在下面的例子中能看到的那样,你能在你的Applet的组件中使用复杂的Java对象来研发本来由服务器端应用程式完成的工作。事实上,你能编写这样的Java代码,他既能在Applet上执行,也能在应用程式内执行。

Applet具有所有传统的Java应用程式的功能,包括使用Sun公司的JFC/Swing组件。Applets也能用来制作图像及应用程式中的用户界面(尽管有些辅助的窗口会被标志为“Warning, Java Applet Window”)。

不过不管他们有多么相似,在应用程式和Applet之间还是一些关键性的差别的。例如,我们不得不考虑到我们的Applet是受到安全模式的限制的。

Applet的安全约束

Applet代码来自于web主机并在最终用户的机器的浏览器中运行。有害的含有病毒的Applet可能会造成破坏性的效果,为了防止这样的Applet,Applet受到安全方面的约束,那就是Applet只能和提供这个Applet的主机进行通信,而且Applet不能操作最终用户的机器。

他们不能读写该用户的文件系统,不能执行上面的程式,也不能检查一些敏感的环境参数。(事实上,我们有一种方法能回避这种限制,那就是研发者能利用数字签名的技术对Applet进行标志,这将会询问用户是否能给予Applet某种特别的待遇。

不过这已超出我们这篇文章中所讨论的范围了。)此外,Applet不能建立或接受外来的socket连接。所谓外来的是指这个连接超出了提供这个Applet类文件的主机(不是提供引用这个Applet的HTML所在的主机)。

因为这个安全性的限制,我们和Applet的通信必须采用一种特别的策略。通信的唯一的途径就是在提供Applet的主机和提供相应的HTML的主机之前的网络连接。

Servlets Java servlet是服务器端的组件,他和CGI有非常多相似。他能处理web请求,并返回数据或HTML。Servlet能访问数据库,进行计算,并和Enterprise JavaBean这样的组件进行通信。

和CGI程式不同的是,Servlet是持久有效的,也就是说,他只要被示例一次就能不断地处理请求(这些请求非常可能是同时发生的)。因此,Servlet比CGI来得更高效。

Servlet运行在一个Servlet引擎中,通常是在一个web服务器或应用程式服务器上。Netscape Enterprise Server 4.0和Netscape Application Server都支持最新版本的Java servlet规范。

和Applet不同,Servlet不受安全约束的限制。因为Servlet是完全在服务器上运行的,他具有所有操作系统所允许的性能。

Servlet能用来非常方便地建立在Applet和Web浏览器这样的客户端和企业应用程式的核心之间的连接。对于客户端来说,向Servlet发出的请求和其他web请求并没有所有不同。客户端通过一个URL来接受返回的信息,正如我们看到的那样,返回的信息并不一定只能是HTML,实际上我们能通过HTML协议发送和接受所有类型的数据。

分享到:
评论

相关推荐

    深入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 基于...

    JAVA上百实例源码以及开源项目

    在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...

    JAVA面试题最全集

    application或者applet中与servlet/jsp通信可以采用的方式。 31.简述逻辑操作(如&,|)与条件操作(如&&,||)的区别。 32.简述 Java Server Page 和 Servlet 的联系和区别。 33.简述synchronized和java.util....

    java开源包1

    jFastCGI 是一个可以让Tomcat 之类的Servlet容器支持运行PHP和其它fastcgi应用程序,将Servlet容器充当成一个FastCGI 的网关。 Java 绘图框架 JGraphEd JGraphEd 是一个 Java 的图形编辑应用和绘图框架。 Java ...

    java开源包11

    jFastCGI 是一个可以让Tomcat 之类的Servlet容器支持运行PHP和其它fastcgi应用程序,将Servlet容器充当成一个FastCGI 的网关。 Java 绘图框架 JGraphEd JGraphEd 是一个 Java 的图形编辑应用和绘图框架。 Java ...

    java开源包2

    jFastCGI 是一个可以让Tomcat 之类的Servlet容器支持运行PHP和其它fastcgi应用程序,将Servlet容器充当成一个FastCGI 的网关。 Java 绘图框架 JGraphEd JGraphEd 是一个 Java 的图形编辑应用和绘图框架。 Java ...

    java开源包3

    jFastCGI 是一个可以让Tomcat 之类的Servlet容器支持运行PHP和其它fastcgi应用程序,将Servlet容器充当成一个FastCGI 的网关。 Java 绘图框架 JGraphEd JGraphEd 是一个 Java 的图形编辑应用和绘图框架。 Java ...

    java开源包6

    jFastCGI 是一个可以让Tomcat 之类的Servlet容器支持运行PHP和其它fastcgi应用程序,将Servlet容器充当成一个FastCGI 的网关。 Java 绘图框架 JGraphEd JGraphEd 是一个 Java 的图形编辑应用和绘图框架。 Java ...

    java开源包5

    jFastCGI 是一个可以让Tomcat 之类的Servlet容器支持运行PHP和其它fastcgi应用程序,将Servlet容器充当成一个FastCGI 的网关。 Java 绘图框架 JGraphEd JGraphEd 是一个 Java 的图形编辑应用和绘图框架。 Java ...

    java开源包10

    jFastCGI 是一个可以让Tomcat 之类的Servlet容器支持运行PHP和其它fastcgi应用程序,将Servlet容器充当成一个FastCGI 的网关。 Java 绘图框架 JGraphEd JGraphEd 是一个 Java 的图形编辑应用和绘图框架。 Java ...

    java开源包4

    jFastCGI 是一个可以让Tomcat 之类的Servlet容器支持运行PHP和其它fastcgi应用程序,将Servlet容器充当成一个FastCGI 的网关。 Java 绘图框架 JGraphEd JGraphEd 是一个 Java 的图形编辑应用和绘图框架。 Java ...

    java开源包8

    jFastCGI 是一个可以让Tomcat 之类的Servlet容器支持运行PHP和其它fastcgi应用程序,将Servlet容器充当成一个FastCGI 的网关。 Java 绘图框架 JGraphEd JGraphEd 是一个 Java 的图形编辑应用和绘图框架。 Java ...

    java开源包7

    jFastCGI 是一个可以让Tomcat 之类的Servlet容器支持运行PHP和其它fastcgi应用程序,将Servlet容器充当成一个FastCGI 的网关。 Java 绘图框架 JGraphEd JGraphEd 是一个 Java 的图形编辑应用和绘图框架。 Java ...

    java开源包9

    jFastCGI 是一个可以让Tomcat 之类的Servlet容器支持运行PHP和其它fastcgi应用程序,将Servlet容器充当成一个FastCGI 的网关。 Java 绘图框架 JGraphEd JGraphEd 是一个 Java 的图形编辑应用和绘图框架。 Java ...

    java开源包101

    jFastCGI 是一个可以让Tomcat 之类的Servlet容器支持运行PHP和其它fastcgi应用程序,将Servlet容器充当成一个FastCGI 的网关。 Java 绘图框架 JGraphEd JGraphEd 是一个 Java 的图形编辑应用和绘图框架。 Java ...

    Java资源包01

    jFastCGI 是一个可以让Tomcat 之类的Servlet容器支持运行PHP和其它fastcgi应用程序,将Servlet容器充当成一个FastCGI 的网关。 Java 绘图框架 JGraphEd JGraphEd 是一个 Java 的图形编辑应用和绘图框架。 Java ...

    JAVA上百实例源码以及开源项目源代码

    用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天通信演示代码 2个目标文件...

    java源码包2

    在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...

    java源码包---java 源码 大量 实例

    在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...

Global site tag (gtag.js) - Google Analytics