# 在 Applet 标记中嵌入 JNLP 文件

> 原文： [https://docs.oracle.com/javase/tutorial/deployment/deploymentInDepth/embeddingJNLPFileInWebPage.html](https://docs.oracle.com/javase/tutorial/deployment/deploymentInDepth/embeddingJNLPFileInWebPage.html)

当使用 Java 网络启动协议（JNLP）部署 applet 时，Java Plug-in 软件在从网络下载 JNLP 文件后启动 applet。从 Java SE 7 发行版开始，您可以通过在网页本身中嵌入 JNLP 文件来减少 applet 启动所需的时间，以便在第一次加载 applet 时可以避免额外的网络请求。这将导致 applet 在 Web 浏览器上快速启动。

在网页中部署 applet 时，可以在`jnlp_embedded`参数中嵌入 Base64 编码的 JNLP 文件。 `&lt;jnlp&gt;`元素的属性应满足以下限制：

*   `href`属性应包含相对路径。
*   不应指定`codebase`属性。这意味着代码库将从加载小程序的网页的 URL 派生。

以下步骤描述了如何在网页中嵌入 JNLP 文件以部署 applet。

1.  为您的 applet 创建 [``JNLP``](examples/depl_EmbeddingJNLPInWebPage/src/dynamictree_applet.jnlp)文件。接下来显示一个示例文件。

    ```
    &lt;?xml version="1.0" encoding="UTF-8"?&gt;
    &lt;!-- href attribute contains relative path;
         codebase attribute not specified --&gt;
    &lt;jnlp href="dynamictree_applet.jnlp"&gt;
        &lt;information&gt;
            &lt;title&gt;Dynamic Tree Demo&lt;/title&gt;
            &lt;vendor&gt;Dynamic Team&lt;/vendor&gt;
        &lt;/information&gt;
        &lt;resources&gt;
            &lt;!-- Application Resources --&gt;
            &lt;j2se version="1.7+" /&gt;
            &lt;jar href=
                "dist/applet_ComponentArch_DynamicTreeDemo/DynamicTreeDemo.jar" 
                 main="true" /&gt;
        &lt;/resources&gt;
        &lt;applet-desc 
             name="Dynamic Tree Demo Applet"
             main-class="appletComponentArch.DynamicTreeApplet"
             width="300"
             height="300"&gt;
         &lt;/applet-desc&gt;
         &lt;update check="background"/&gt;
    &lt;/jnlp&gt;

    ```

2.  使用 Base64 方案对 JNLP 文件的内容进行编码。您可以使用任何 Base64 编码工具对 JNLP 文件进行编码。检查该工具的用法以创建具有 Base64 编码的字符串。可以使用的工具和网站的一些示例如下：
    *   UNIX 命令 - `base64`，`uuencode`
    *   网站 - [Base64 编码和解码](http://base64encode.org/)， [Base64 编码器](http://www.opinionatedgeek.com/dotnet/tools/base64encode/)
3.  When deploying the applet in a web page, specify the `jnlp_embedded` parameter with it's value set to the Base64 encoded JNLP string. Make sure to include only the actual Base64 bytes without any encoding tool specific headers or footers.

    ```
    &lt;script src="https://www.java.com/js/deployJava.js"&gt;&lt;/script&gt;
    &lt;script&gt;
        var attributes = {} ;
        &lt;!-- Base64 encoded string truncated below for readability --&gt;
        var parameters = {jnlp_href: 'dynamictree_applet.jnlp',
            jnlp_embedded: 'PCEtLSANCi8qDQogKiBDb ... bmxwPg=='
        } ;
        deployJava.runApplet(attributes, parameters, '1.6');
    &lt;/script&gt;

    ```

    一些编码工具可以将编码的字符串包装成几个 76 列的行。要在 JavaScript 代码中使用此多行属性值，请将属性值指定为一组连接字符串。如果直接使用`&lt;applet&gt;` HTML 标记部署 applet，则可以包含多行属性值。

在浏览器中打开 [``AppletPage.html``](examples/dist/depl_EmbeddingJNLPInWebPage/AppletPage.html)，查看使用网页中嵌入的 JNLP 文件启动的动态树演示小程序。

* * *

**Note:**  If you don't see the applet running, you need to install at least the [Java SE Development Kit (JDK) 7](http://www.oracle.com/technetwork/java/javase/downloads/index.html) release.

* * *

* * *

**Note:**  If you don't see the example running, you might need to enable the JavaScript interpreter in your browser so that the Deployment Toolkit script can function properly.

* * *

[下载 _Embedded JNLP_ 示例的源代码](examplesIndex.html#EmbeddedJNLP)进行进一步实验。