可以不用担心 Socket和其它有关网络工作的通常的复杂问题。所需要的只是一个服务器端的组件,A pplet和Servlet交换信息的最简单地方法就是通过HTTP文字流。JavaURL和URLConnect类型使得从一个URL读取数据变得很容易。这个组件应该可以通过URL发放信息。这就是这儿使用Servlet原因。
为了防止这样的AppletApplet受到平安方面的约束,A pplet代码来自于web主机并在最终用户的机器的浏览器中运行。有害的含有病毒的Applet可能会造成破坏性的效果。那就是Applet只可以与提供这个Applet主机进行通信,而且Applet不能操作最终用户的机器。不能读写该用户的文件系统,不能执行上面的顺序,也不能检查一些敏感的环境参数。事实上,有一种方法可以回避这种限制,那就是开发者可以利用数字签名的技术对Applet进行标志,这将会询问用户是否可以给予Applet某种特殊的待遇。但是这已经超出我这篇文章中所讨论的范围了此外,Applet不能建立或接受外来的socket连接。所谓外来的指这个连接超出了提供这个 Applet类文件的主机(不是提供引用这个AppletHTML所在主机)与Applet通信必需采用一种特殊的战略。通信的唯一的途径就是提供Applet主机和提供相应的HTML主机之前的网络连接。因为这个平安性的限制。
和CGI有很多相似。可以处置web请求,JavaServlet服务器端的组件。并返回数据或HTMLServlet可以访问数据库,进行计算,并和EnterprisJavaBean这样的组件进行通信。与CGI顺序不同的Servlet耐久有效的也就是说,只要被示例一次就可以不时地处理请求(这些请求很可能是同时发生的因此,Servlet比CGI来得更高效。
通常是一个web服务器或应用顺序服务器上。NetscapEnterprisServer4.0和NetscapApplicatServer都支持最新版本的JavaServlet规范。和Applet不同,Servlet运行在一个Servlet引擎中。Servlet不受安全约束的限制。因为Servlet完全在服务器上运行的具有所有操作系统所允许的性能。
向Servlet发出的请求与其他web请求并没有任何不同。客户端通过一个URL来接受返回的信息,Servlet可以用来很方便地建立在Applet和Web浏览器这样的客户端和企业应用顺序的核心之间的连接。对于客户端来说。正如我看到那样,返回的信息并不一定只能是HTML实际上我可以通过HTML协议发送和接受任何类型的数据。
并对它优缺点进行比拟。一个企业级的应用顺序可以有几种方法来构造Applet和Servlet使用。将向大家介绍三种不同的构造方法。但是Applet还是可以使用象JDBCRMI这样的协议来访问象数据库、LDA P目录和EnterprisJavaBean组件这样的后端信息。这种构造方法如图1所示。这种方法虽然看上去很简单,第一种方法实际上只使用了Applet而没有使用Servlet尽管Applet受到平安模式的限制。但是这并不是一个好的方法,会带来很多的问题。首先,这种安排要求你将所有的访问信息直接嵌入到Applet代码中。数据库用户名、口令、服务器标识,所有的这一切都必须包含在Applet代码中,这样最终用户就有可能从类文件中搜集到这些信息。此外,数据库或任何其他访问的系统都必须在提供Applet同一台服务器上。这意味着你服务器将不得不承担双重的负担,既是一个web服务器,也是一个数据库服务器。典型的情况是后端资源可能受到防火墙的维护,但是这种情况下,这是不可能的因为运行在客户端上的Applet必需直接访问你机器。最后,使用这种方法,想使用web服务器群集,如果不是不可能的至少也是很困难
而Applet仅仅用来处理前端的工作。这种构造方法中,好一点的方法是将与后端资源通信的事务封装到Servlet中。正如我图2中所示的那样,Servlet克服了Applet固有的平安约束,并用来控制Applet访问企业信息系统和事务逻辑。当Servlet接受到一个请求时,会在后端数据库中查询信息、执行计算、处置对代表Applet信息的获取并作用于来自Applet信息。这种方法的一大进步是Applet和Servlet对可以分布在一个后端web服务器的群集上,所有与某一共享的数据库的通信都存在于后端。此外,使用Servlet设计有助于设计的模块化、笼统应用顺序的后端处置商业逻辑并提高设计的灵活性。
对一个Applet存取数据和信息时并没有太多的选择。正如我前面提到不能读取客户端的文件系统、不能运行客户端的顺序,如果你使用了这样的构造:前端使用Applet后端使用Servlet那么你将需要执行Applet和Servlet通信。因为Applet受浏览器的平安模式的限制。由于Applet不是服务器上运行的也不能访问服务器上的文件系统。只能建立到运行在主机上的服务的网络连接。另外,不要忘记应用顺序是一个公开的Internet上发布的防火墙可能会限制通过HTTPServlet或其它web-serv模块的会话。事实上,因为Applet自身就是网络上通过HTTP发布的所以我必需准确掌握通信的战略。
Servlet就成了中间件。EJB组件可以更加有助于将商业逻辑从Servlet中分离出来,如果你围绕EnterprisJavaBean构建你应用顺序。并将其更加抽象。这种情况下,一个Applet和Servlet通信,Servlet再与EJB组件通信。就象我图3中所示的那样。应用顺序构建中引入由EJB组件、Servlet和前端的applet/HTML这样的层次结构,可以给我提供最大限度的弹性和性能。尽管这样做你必需附出复杂化和费用的代价。
可以有几种方法交换信息。正如你知道的文字流可以由服务器通过HTTP发放。但是可能不知道Java对象出可以用这种方式发放。将详细地介绍HTTP文字流和HTTP对象流的使用。另外,假定在客户端的Applet和服务器端的Servlet之间的网络连接是可以使用的唯一的通信路径。