将参数从JSP传递给JNLP

问题描述:

我正在使用用Java Web Start启动的应用程序替换小程序。所以在Netbeans中开发了我的演示版本为止,我能够生成launch.jnlp设置为所需的值的参数:将参数从JSP传递给JNLP

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

但是这JWS推出应用在现实生活中做的是设置JNLP中的参数基于由将启动它的Web应用程序的用户选择的值并与其相关。

我意识到这个问题之前已经被问过了,但是在大多数情况下,自从这些问题得到解答之后的几年已经过去了,并且我不确定答案是否仍然适用,因为浏览器已经通过了Java的安全锁定供应商。最近的做法是通过HTTP请求参数发送参数值,即

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

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

<jnlp codebase="http://@[email protected]"HREF = “/launch.jnlp?action=someAction&objId=1234abc&userName=user1

,使其与您调用JNLP “CGI”

所以你需要一个名为launch.jnlp把参数为CGI的参数相匹配jnlp模板

1)在href网址参数的小程序,说明

<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> 

2)至少这是我所知道的可能性,并且为我工作。

编辑

同样适用,如果你使用的是application-desc代替,然后代替<param是你必须填写相应的<argument S,除了在href ...

+0

我试图避免使用'applet'标签,因为我听到了我的声音t将不会在九月份推出的Java 1.9中得到支持。有没有办法动态构建'launch.jnlp',以便可以在运行时指定参数值? –

+0

谁在谈论applet-tag?你读过我的答案,还是只想尽量理解尽可能少的话? –

+0

我指的是你使用'applet-desc'标签,因为我一直在使用'application-desc'。也许这没有什么不同,但无论如何,你有什么理由在你的回应中如此讽刺吗?很明显,我对使用JNLP很陌生,因为我正在询问它,所以我不明白为什么你觉得有必要走这条路。 –

虽然我实现仍然是一个正在进行的工作,我确实想说到目前为止我的工作是在servlet中动态创建JNLP,将它写出到与HTTPResponse对象关联的流中...