通过WebStart 启动打开JNLP文件,虽说可以通过url在浏览器中直接打开,但其中参数的传递该如何弄呢?
有两种方法:
1.修改WebStart源码
需修改jnlp.sample.servlet.JnlpFileHandler.java中的specializeJnlpTemplate 方法
原方法为:
private String specializeJnlpTemplate( HttpServletRequest request, String respath, String jnlpTemplate, Stack<Long> timeStack ) throws ErrorResponseException
{
System.out.println("JnlpFileHandler.specializeJnlpTemplate() jnlpTemplate:" + jnlpTemplate);
System.out.println("request.getParameter(\"ticket\"):" + request.getParameter("ticket"));
String urlprefix = getUrlPrefix( request );
int idx = respath.lastIndexOf( '/' ); //
String name = respath.substring( idx + 1 ); // Exclude /
String codebase = respath.substring( 0, idx + 1 ); // Include /
jnlpTemplate = substitute( jnlpTemplate, "$$name", name );
jnlpTemplate = substitute( jnlpTemplate, "$$codebase", urlprefix + request.getContextPath() + codebase );
jnlpTemplate = substitute( jnlpTemplate, "$$hostname", request.getServerName() );
jnlpTemplate = substitute( jnlpTemplate, "$$context", urlprefix + request.getContextPath() );
jnlpTemplate = substitute( jnlpTemplate, "$$site", urlprefix );
……
return jnlpTemplate;
}
如传递ticket参数,修改后:
private String specializeJnlpTemplate( HttpServletRequest request, String respath, String jnlpTemplate, Stack<Long> timeStack ) throws ErrorResponseException
{
System.out.println("JnlpFileHandler.specializeJnlpTemplate() jnlpTemplate:" + jnlpTemplate);
System.out.println("request.getParameter(\"ticket\"):" + request.getParameter("ticket"));
String urlprefix = getUrlPrefix( request );
int idx = respath.lastIndexOf( '/' ); //
String name = respath.substring( idx + 1 ); // Exclude /
String codebase = respath.substring( 0, idx + 1 ); // Include /
jnlpTemplate = substitute( jnlpTemplate, "$$name", name );
jnlpTemplate = substitute( jnlpTemplate, "$$codebase", urlprefix + request.getContextPath() + codebase );
jnlpTemplate = substitute( jnlpTemplate, "$$hostname", request.getServerName() );
jnlpTemplate = substitute( jnlpTemplate, "$$context", urlprefix + request.getContextPath() );
jnlpTemplate = substitute( jnlpTemplate, "$$site", urlprefix );
if(null != request.getParameter("ticket") && !"".equals(request.getParameter("ticket"))) {
jnlpTemplate = substitute( jnlpTemplate, "$$ticket", request.getParameter("ticket") );
System.out.println("request ticket:" + request.getParameter("ticket"));
}
WebStart JNLP参数传递
最新推荐文章于 2023-10-30 20:11:12 发布