Applet和Servlet的使用

开发 后端
本文介绍Applet和Servlet的使用,Applet和Servlet交换信息的最简单地方法就是通过HTTP文字流。

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协议发送和接受任何类型的数据。

构造方法

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

***种方法实际上只使用了Applet而没有使用Servlet,尽管Applet受到它们的安全模式的限制,但是Applet还是可以使用象JDBC、RMI这样的协议来访问象数据库、LDAP目录和Enterprise JavaBeans组件这样的后端信息。这种构造方法如图1所示。这种方法虽然看上去很简单,但是这并不是一个好的方法,它会带来很多的问题。首先,这种安排要求你将所有的访问信息直接嵌入到你的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组件通信。就象我们在图3中所示的那样。在应用程序构建中引入由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进行通信的方法,当一个应用程序枰??虻摹⒊中?牧?邮保?飧龇椒ɑ崽乇鹩杏谩?br>HTTP文字流

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

【编辑推荐】

  1. Servlet 2.5版本终止响应
  2. 创建Servlet过滤器的向导
  3. 浅谈user cache Servlet
  4. 过滤器解压缩Servlet和JSP页面内容
  5. Servlet的Context与Config
责任编辑:佚名 来源: IT专家网
相关推荐

2009-07-08 18:16:02

Applet和Serv

2009-07-09 16:57:03

Servlet与App

2009-07-07 17:23:08

Java Servle

2009-07-03 12:48:24

Java Servle

2009-07-07 16:05:15

Servlet和Jav

2009-06-23 13:47:02

JavaFxApplet示例

2009-07-08 09:35:53

Java ServleServlet 3.0

2012-01-17 13:53:16

JavaSwing

2009-07-06 15:34:56

JSP和Servlet

2012-03-28 13:11:35

JavaEclipse

2009-07-09 09:54:07

Servlet和CGI

2009-07-08 09:22:03

Servlet和JSP

2009-07-10 18:10:18

Jython编写SerJython

2009-07-06 18:16:00

Servlet程序Cookie

2009-07-07 13:29:33

Servlet和JSP

2010-09-17 10:16:26

Java Applet

2011-07-04 16:04:20

Applet

2009-06-11 08:59:35

2009-07-09 10:49:56

Servlet和JSP

2009-07-03 14:02:51

点赞
收藏

51CTO技术栈公众号