Java EE(五)

1、Applet

Applet 是一种 Java 程序。它通常运行在支持 Java 的 Web 浏览器内。由于它有完整的 Java API支持,因此Applet 是一个全功能的 Java 应用程序。html

以下所示是独立的 Java 应用程序和 applet 程序之间重要的不一样:前端

  • Java 中 Applet 类继承了 java.applet.Applet 类。
  • Applet 类没有定义 main(),因此一个 Applet 程序不会调用 main() 方法。
  • Applet 被设计为嵌入在一个 HTML 页面。
  • 当用户浏览包含 Applet 的 HTML 页面,Applet 的代码就被下载到用户的机器上。
  • 要查看一个 Applet 须要 JVM。 JVM 能够是 Web 浏览器的一个插件,或一个独立的运行时环境。
  • 用户机器上的 JVM 建立一个 Applet 类的实例,并调用 Applet 生命周期过程当中的各类方法。
  • Applet 有 Web 浏览器强制执行的严格的安全规则,Applet 的安全机制被称为沙箱安全。
  • Applet 须要的其余类能够用 Java 归档(JAR)文件的形式下载下来。

    Applet的生命周期

    Applet 类中的四个方法给你提供了一个框架,你能够再该框架上开发小程序:java

    • init: 该方法的目的是为你的 Applet 提供所需的任何初始化。在 Applet 标记内的 param 标签被处理后调用该方法。
    • start: 浏览器调用 init 方法后,该方法被自动调用。每当用户从其余页面返回到包含 Applet 的页面时,则调用该方法。
    • stop: 当用户从包含 Applet 的页面移除的时候,该方法自动被调用。所以,能够在相同的 Applet 中反复调用该方法。
    • destroy: 此方法仅当浏览器正常关闭时调用。由于 Applet 只有在 HTML 网页上有效,因此你不该该在用户离开包含 Applet 的页面后遗漏任何资源。
      • paint: 该方法在 start() 方法以后当即被调用,或者在 Applet 须要重绘在浏览器的时候调用。paint() 方法实际上继承于 java.awt。

          Applet 类

        每个 Applet 都是 java.applet.Applet 类的子类,基础的 Applet 类提供了供衍生类调用的方法,以此来获得浏览器上下文的信息和服务。web

        这些方法作了以下事情:小程序

        • 获得 Applet 的参数
        • 获得包含 Applet 的 HTML 文件的网络位置
        • 获得 Applet 类目录的网络位置
        • 打印浏览器的状态信息
        • 获取一张图片
        • 获取一个音频片断
        • 播放一个音频片断
        • 调整此 Applet 的大小

        除此以外,Applet 类还提供了一个接口,该接口供 Viewer 或浏览器来获取 Applet 的信息,而且来控制 Applet 的执行。后端

        Viewer 多是:浏览器

        • 请求 Applet 做者、版本和版权的信息
        • 请求 Applet 识别的参数的描述
        • 初始化 Applet
        • 销毁 Applet
        • 开始执行 Applet
        • 结束执行 Applet

        Applet 类提供了对这些方法的默认实现,这些方法能够在须要的时候重写。安全

        "Hello,World"applet 都是按标准编写的。惟一被重写的方法是 paint 方法。

        服务器

        Applet 的调用

        Applet 是一种 Java 程序。它通常运行在支持 Java 的 Web 浏览器内。由于它有完整的 Java API 支持,因此 Applet 是一个全功能的 Java 应用程序。网络

        <applet> 标签是在HTML文件中嵌入 Applet 的基础。如下是一个调用"Hello World"applet的例子;

        示例HTML 代码:

        <html>
        <title>The Hello, World Applet</title>
        <hr> <applet code="HelloWorldApplet.class" width="320" height="120">
        If your browser was Java-enabled, a "Hello, World"
        message would appear here.
        </applet>
        <hr>
        </html>

    2、Ajax

    Ajax 即“A synchronous J avascript And X ML”(异步 JavaScript 和 XML),是指一种建立交互式 网页应用的网页开发技术。
    Ajax = 异步  JavaScript 和  XML标准通用标记语言的子集)。
    Ajax 是一种用于建立快速动态网页的技术。
    Ajax 是一种在无需从新加载整个网页的状况下,可以更新部分网页的技术。  [1] 
    经过在后台与服务器进行少许数据交换,Ajax 可使网页实现异步更新。这意味着能够在不从新加载整个网页的状况下,对网页的某部分进行更新。
    传统的网页(不使用 Ajax)若是须要更新内容,必须重载整个网页页面。

    1.工做原理

    Ajax的工做原理至关于在用户和服务器之间加了—个中间层(AJAX引擎),使用户操做与服务器响应异步化。并非全部的用户请求都提交给服务器,像—些数据验证和数据处理等都交给Ajax引擎本身来作, 只有肯定须要从服务器读取新数据时再由Ajax引擎代为向服务器提交请求。

    2.与传统web应用比较

    传统的Web应用交互由用户触发一个HTTP请求到服务器,服务器对其进行处理后再返回一个新的HTHL页到客户端, 每当服务器处理客户端提交的请求时,客户都只能空闲等待,而且哪怕只是一次很小的交互、只需从服务器端获得很简单的一个数据,都要返回一个完整的HTML页,而用户每次都要浪费时间和带宽去从新读取整个页面。这个作法浪费了许多带宽,因为每次应用的交互都须要向服务器发送请求,应用的响应时间就依赖于服务器的响应时间。这致使了用户界面的响应比本地应用慢得多。与此不一样,AJAX应用能够仅向服务器发送并取回必需的数据,它使用SOAP或其它一些基于XML的Web Service接口,并在客户端采用JavaScript处理来自服务器的响应。由于在服务器和浏览器之间交换的数据大量减小,结果咱们就能看到响应更快的应用。同时不少的处理工做能够在发出请求的客户端机器上完成,因此Web服务器的处理时间也减小了。

    3.优缺点

    (1).AJAX的优势
    <1>.无刷新更新数据。
    AJAX最大优势就是能在不刷新整个页面的前提下与服务器通讯维护数据。这使得Web应用程序更为迅捷地响应用户交互,并避免了在网络上发送那些没有改变的信息,减小用户等待时间,带来很是好的用户体验。
    <2>.异步与服务器通讯。
    AJAX使用异步方式与服务器通讯,不须要打断用户的操做,具备更加迅速的响应能力。优化了Browser和Server之间的沟通,减小没必要要的数据传输、时间及下降网络上数据流量。
    <3>.前端和后端负载平衡。
    AJAX能够把之前一些服务器负担的工做转嫁到客户端,利用客户端闲置的能力来处理,减轻服务器和带宽的负担,节约空间和宽带租用成本。而且减轻服务器的负担,AJAX的原则是“按需取数据”,能够最大程度的减小冗余请求和响应对服务器形成的负担,提高站点性能。
    <4>.基于标准被普遍支持。
    AJAX基于标准化的并被普遍支持的技术,不须要下载浏览器插件或者小程序,但须要客户容许JavaScript在浏览器上执行。随着Ajax的成熟,一些简化Ajax使用方法的程序库也相继问世。一样,也出现了另外一种辅助程序设计的技术,为那些不支持JavaScript的用户提供替代功能。
    <5>.界面与应用分离。
    Ajax使WEB中的界面与应用分离(也能够说是数据与呈现分离),有利于分工合做、减小非技术人员对页面的修改形成的WEB应用程序错误、提升效率、也更加适用于如今的发布系统。

    (2).AJAX的缺点<1>.AJAX干掉了Back和History功能,即对浏览器机制的破坏。在动态更新页面的状况下,用户没法回到前一个页面状态,由于浏览器仅能记忆历史记录中的静态页面。一个被完整读入的页面与一个已经被动态修改过的页面之间的差异很是微妙;用户一般会但愿单击后退按钮可以取消他们的前一次操做,可是在Ajax应用程序中,这将没法实现。后退按钮是一个标准的web站点的重要功能,可是它无法和js进行很好的合做。这是Ajax所带来的一个比较严重的问题,由于用户每每是但愿可以经过后退来取消前一次操做的。那么对于这个问题有没有办法?答案是确定的,用过Gmail的知道,Gmail下面采用的Ajax技术解决了这个问题,在Gmail下面是能够后退的,可是,它也并不能改变Ajax的机制,它只是采用的一个比较笨可是有效的办法,即用户单击后退按钮访问历史记录时,经过建立或使用一个隐藏的IFRAME来重现页面上的变动。(例如,当用户在Google Maps中单击后退时,它在一个隐藏的IFRAME中进行搜索,而后将搜索结果反映到Ajax元素上,以便将应用程序状态恢复到当时的状态。)可是,虽说这个问题是能够解决的,可是它所带来的开发成本是很是高的,并与Ajax框架所要求的快速开发是相背离的。这是Ajax所带来的一个很是严重的问题。一个相关的观点认为,使用动态页面更新使得用户难于将某个特定的状态保存到收藏夹中。该问题的解决方案也已出现,大部分都使用URL片段标识符(一般被称为锚点,即URL中#后面的部分)来保持跟踪,容许用户回到指定的某个应用程序状态。(许多浏览器容许JavaScript动态更新锚点,这使得Ajax应用程序可以在更新显示内容的同时更新锚点。)这些解决方案也同时解决了许多关于不支持后退按钮的争论。<2>.AJAX的安全问题。AJAX技术给用户带来很好的用户体验的同时也对IT企业带来了新的安全威胁,Ajax技术就如同对企业数据创建了一个直接通道。这使得开发者在不经意间会暴露比之前更多的数据和服务器逻辑。Ajax的逻辑能够对客户端的安全扫描技术隐藏起来,容许黑客从远端服务器上创建新的攻击。还有Ajax也难以免一些已知的安全弱点,诸如跨站点脚步攻击、SQL注入攻击和基于Credentials的安全漏洞等等。<3>.对搜索引擎支持较弱。对搜索引擎的支持比较弱。若是使用不当,AJAX会增大网络数据的流量,从而下降整个系统的性能。<4>.破坏程序的异常处理机制。至少从目前看来,像Ajax.dll,Ajaxpro.dll这些Ajax框架是会破坏程序的异常机制的。关于这个问题,曾在开发过程当中遇到过,可是查了一下网上几乎没有相关的介绍。后来作了一次试验,分别采用Ajax和传统的form提交的模式来删除一条数据……给咱们的调试带来了很大的困难。<5>.违背URL和资源定位的初衷。例如,我给你一个URL地址,若是采用了Ajax技术,也许你在该URL地址下面看到的和我在这个URL地址下看到的内容是不一样的。这个和资源定位的初衷是相背离的。<6>.AJAX不能很好支持移动设备。一些手持设备(如手机、PDA等)如今还不能很好的支持Ajax,好比说咱们在手机的浏览器上打开采用Ajax技术的网站时,它目前是不支持的。<7>.客户端过肥,太多客户端代码形成开发上的成本。编写复杂、容易出错 ;冗余代码比较多(层层包含js文件是AJAX的通病,再加上以往的不少服务端代码如今放到了客户端);破坏了Web的原有标准。

相关文章
相关标签/搜索