WebStart JNLP参数传递
来源:互联网 发布:贵州大数据培训 编辑:程序博客网 时间:2024/06/07 14:07
通过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")); } …… return jnlpTemplate; }
2.使用Sevlet或jsp文件方式动态生成JNLP文件,然后直接输出到浏览器。
import java.io.File;import java.io.IOException;import java.io.PrintWriter;import java.nio.charset.Charset;import java.util.ArrayList;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * 生成JNLP文件内容 * @author xcbeyond * 2017-7-20上午09:19:06 */public class PrintJnlpFileServlet extends HttpServlet{private static final long serialVersionUID = 2476758371307727115L;@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse resp)throws ServletException, IOException {//设置文件编码格式为utf-8resp.setCharacterEncoding("utf-8");//禁止浏览器和webstart缓存jnlp内容resp.setHeader("Pragma", "no-cache");resp.setHeader("Expires", "0");//给定动态文件名resp.setHeader("Content-Disposition", "filename=\"dynamic.jnlp\";");//设置文件类型为jnlp文件类型resp.setContentType("application/x-java-jnlp-file"); PrintWriter pw = resp.getWriter(); pw.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); pw.println("<jnlp spec=\"1.6+\" codebase=\"http://localhost:8080/\" href=\"\">"); pw.println("<information>"); …… pw.println(" <application-desc main-class=\"org.apache.pivot.wtk.DesktopApplicationContext\">"); …… pw.println("<argument>--ticket=" + request.getParameter("ticket") + "</argument>"); pw.println(" </application-desc>"); pw.println("</jnlp>"); pw.flush(); pw.close(); }@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {super.doPost(req, resp);}}
阅读全文
1 0
- WebStart JNLP参数传递
- JNLP、webStart 和applet的区别
- 2BizBoxERP通过WebStart方式(JNLP)启动客户端
- jnlp
- JNLP
- JNLP
- JNLP
- JNLP
- jnlp
- EclipseRCP WebStart
- 有关JNLP中传SESSIONID为参数的问题
- 有关JNLP中传SESSIONID为参数的问题
- 【JNLP】什么是JNLP
- 参数传递
- 参数传递
- 参数传递
- 传递参数
- 参数传递
- C#使用Xamarin开发可移植移动应用(3.Xamarin.Views控件)附源码
- 常用数字电路逻辑符号
- A hard puzzle
- Oracle和MySQL在SQL语句方面的区别
- [翻译]多种DLL注入技术原理介绍
- WebStart JNLP参数传递
- 安装kvm创建虚拟机的问题:VNC server running on '::1:5900'
- 处理编译错误"0" is an invalid value for the "DebugInformation" parameter of the "DCC"
- 【腾讯TMQ】这样的测试过程管理让你事半功倍
- 面试题:最常见最有可能考到的C语言面试题汇总
- 22
- Collection常见问题
- HDU 5616 Jam's balance(简单DP)
- Delphi 访问并打开局域网共享文件夹