【问题标题】:Passing Arguments to JNLP from a JSP从 JSP 向 JNLP 传递参数
【发布时间】:2016-10-10 14:46:21
【问题描述】:

我正在用一个用 Java Web Start 启动的应用程序替换一个小程序。到目前为止,在我在 Netbeans 中开发的演示版本中,我能够生成 launch.jnlp 并将参数设置为所需的值:

<application-desc main-class="myPkg.MyClass">
    <argument>action=someAction</argument>
    <argument>objId=1234abc</argument>
    <argument>userName=user1</argument>       
</application-desc>

但是,这个 JWS 启动的应用程序在现实生活中必须做的是根据将启动它的 Web 应用程序的用户选择并与之相关的值来设置 JNLP 中的参数。

我知道以前有人问过这个问题,但在大多数情况下,这些问题已经过去了好几年,鉴于浏览器供应商对 Java 实施了安全锁定,我不确定这些答案是否仍然适用.这些天来实现这一点的方法是通过 HTTP 请求参数发送参数值,即,

[codebase]/launch.jnlp?action=someAction&amp;objId=1234abc&amp;userName=user1 ?

【问题讨论】:

    标签: java arguments parameter-passing java-web-start jnlp


    【解决方案1】:

    虽然我的实现仍在进行中,但我确实想说到目前为止对我有用的是在 servlet 中动态创建 JNLP,将其写入与 HTTPResponse 对象关联的流...

    【讨论】:

      【解决方案2】:

      您可以将参数传递给通过 JWS 启动的小程序,就像在浏览器中启动小程序一样,例如在 JNLP 中。但是,您必须构建包含这些服务器端 AFAIK 的 JNLP;将它们作为 URL-Args 直接传递给 javaws 是不可能的(URL 只会让浏览器下载 jnlp 并将其扔到 javaws 的脚下,并且可能会再次从服务器获取它再次,所以一定要建立

      &lt;jnlp codebase="http://@JAVA_WEB_START_IP@"href="/launch.jnlp?action=someAction&amp;objId=1234abc&amp;userName=user1"

      使其与您调用 jnlp "cgi" 时使用的参数匹配

      所以你需要一个名为launch.jnlp的cgi,将参数放入jnlp模板中

      1) 在 href 作为 url 参数

      2) 在小程序中

       <applet-desc main-class="com.xyz.class" 
        width="850" height="650" name="Applet Name">
         <param name="action" value="someAction"/>
         <param name="objId" value="1234abc"/>
         <param name="userName" value="user1"/>
       </applet-desc>
      

      至少这是我意识到的可能性并且对我有用。

      编辑

      如果您改用application-desc,同样适用,那么除了href之外,您必须相应地填写&lt;arguments,而不是&lt;params...

      【讨论】:

      • 我试图避免使用applet 标签,因为我听说Java 1.9 将不支持它,Java 1.9 将于9 月发布。有没有办法动态构建launch.jnlp,以便可以在运行时指定参数值?
      • 谁在谈论applet-tag?您是否阅读了我的回答,还是只尝试理解尽可能少的单词?
      • 我指的是您使用applet-desc' tag, since I've been using application-desc`。也许这没有什么不同,但是,无论哪种方式,你有什么理由在你的回应中如此讽刺吗?显然我是使用 JNLP 的新手,因为我正在询问有关它的问题,所以我不明白你为什么觉得有必要走那条路......
      • 我明白了。我为冒犯而道歉。这确实有所不同——当您使用 application-desc 时,jaawaws 需要一个应用程序,即一个普通的可执行 jar。所以如果你的 jar 包含一个小程序,即如果你的主类扩展了 java.applet.Applet 或 javax.swing.JApplet,你必须使用applet-desc。但是如果您使用 application-desc,答案也适用,那么您必须相应地填写 &lt;argument&gt;s。即使在浏览器插件消失后,javaws 似乎仍然能够启动小程序。
      • 感谢您的道歉,斯特凡;这些天我有点厌倦来自陌生人的在线讽刺 :) 因为我不会提前知道参数值是什么,这是否意味着我将在 JSP 中使用 EL 变量和 JNLP 之类的东西页面来动态构建它?
      猜你喜欢
      • 1970-01-01
      • 2013-03-16
      • 1970-01-01
      • 2012-11-23
      • 1970-01-01
      • 1970-01-01
      • 2018-05-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多