我一直在寻找这个答案很长一段时间,但从未得到具体的解决方案。所以我在这里最终解决了它。我将在下面提出解决方案。
当前情况:有一个简单的 java 应用程序可以从带有参数的浏览器启动。现有的路线是浏览器-->index.html-->调用我的 jnlp 文件-->调用我的 java 类的主要方法。
需要的情况:现在用户将发送参数说,用户名从浏览器一直发送到java类的主要方法。
解决方案:
- 不要浪费时间尝试仅更改 jnlp 文件。
更改 index.html 如下:
将函数 getUrlParameters() (google it) 添加到 index.html 的 javascript 部分
通过调用 usernameParam = getUrlParameters("username", "", true) 获取用户名的值
- 形成这样的 URL = 'nameOfYourJSPFile.jsp?username='+usernameParam
创建一个新的 jsp 文件(这是必须的),例如:
<%@ page contentType="application/x-java-jnlp-file" %>
<%@ page session="true" %>
<%
response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
// Getting the URL parameters from the request
final String USERNAME_PARAM = "username";
String paramUsername = request.getParameter(USERNAME_PARAM);
%>
<?xml version="1.0" encoding="iso-8859-1"?>
<jnlp spec="1.0+" codebase="http://localhost:8080/" href="<nameOfYourJSPFile>.jsp? <%=USERNAME_PARAM + "=" + paramUsername%>">
<information>
</information>
<security>
<all-permissions/>
</security>
<resources>
Your resources...
</resources>
<application-desc main-class="Complete.package.yourClassNameContainingMain">
<argument><%=paramUsername%></argument>
</application-desc>
</jnlp>
一旦这个 URL 形成,你将把它发送到:IFrameDoc.location.replace(URL); 在同一个 index.html
您将在 main 方法的 String[] 参数中获得传递的用户名值。因此,现在您可以检查参数值是否存在,如果存在,则使用 jsp 文件形成 URL 或直接使用旧的 jnlp 文件。