从 JSP 向 JNLP 传递参数
Passing Arguments to JNLP from a JSP
我正在努力用 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&objId=1234abc&userName=user1
?
您可以将参数传递给通过 JWS 启动的小程序,就像在浏览器中启动小程序时一样,例如在 JNLP 中。但是,您必须构建包含这些服务器端 AFAIK 的 JNLP;将它们作为 URL-Args 直接传递给 javaws 是不可能的(URL 只会使浏览器下载 jnlp 并将其扔到 javaws 的脚下,并且可能再次从服务器获取它 再次,所以一定要构建
<jnlp codebase="http://@JAVA_WEB_START_IP@"
href="/launch.jnlp?action=someAction&objId=1234abc&userName=user1
"
以便它与您调用 jnlp 所用的参数相匹配 "cgi"
所以你需要一个名为launch.jnlp的cgi,将参数放入jnlp模板
1) 在 href 作为 url 参数
2) 在 applet-desc
<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 之外,您必须相应地填充 <argument
而不是 <param
s...
虽然我的实现仍在进行中,但我确实想说,到目前为止对我有用的是在 servlet 中动态创建 JNLP,将其写出到与 HTTPResponse 对象关联的流中。 .
我正在努力用 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&objId=1234abc&userName=user1
?
您可以将参数传递给通过 JWS 启动的小程序,就像在浏览器中启动小程序时一样,例如在 JNLP 中。但是,您必须构建包含这些服务器端 AFAIK 的 JNLP;将它们作为 URL-Args 直接传递给 javaws 是不可能的(URL 只会使浏览器下载 jnlp 并将其扔到 javaws 的脚下,并且可能再次从服务器获取它 再次,所以一定要构建
<jnlp codebase="http://@JAVA_WEB_START_IP@"
href="/launch.jnlp?action=someAction&objId=1234abc&userName=user1
"
以便它与您调用 jnlp 所用的参数相匹配 "cgi"
所以你需要一个名为launch.jnlp的cgi,将参数放入jnlp模板
1) 在 href 作为 url 参数
2) 在 applet-desc
<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 之外,您必须相应地填充 <argument
而不是 <param
s...
虽然我的实现仍在进行中,但我确实想说,到目前为止对我有用的是在 servlet 中动态创建 JNLP,将其写出到与 HTTPResponse 对象关联的流中。 .