服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

java web start开发指南(二)


  四、设置web站点
java web start 充分利用了已经存在的internet技术,例如http协议和web服务器,这使得已存在的

用于部署基于html内容的基础系统能够重用来使用java web start部署基于java技术的应用程序。

为了在客户机上部署你的应用,你必须确保包含应用程序的所有文件能够通过web服务器进行访问。

这意味着你必须拷贝一个或者多个与jnlp文件相一致的jar文件到你的web服务器目录中。使web站点

支持java web start的设置类似于部署基于html的内容文件。唯一需要注意的是为web服务器呗指一

种新的mime类型。

1、配置web服务器使之使用java web start mime类型
配置web服务器,使所有的以.jnlp为扩展名的文件设置为application/x-java-jnlp-file mime 类型



多数web浏览器根据从web服务器返回内容的mime类型来决定怎样去处理特定的内容。为了让web浏览

器调用java web start,必须让服务器对jnlp文件返回application/x-java-jnlp-file mime 类型。

每个web服务器都有增加mime类型的方法。对于apache web 服务器,必须增加以下行到.mime.types

配置文件中:
application/x-java-jnlp-file jnlp
对于器她服务器,请核对相关文档。

2、给应用程序建立一个jnlp文件
建立jnlp文件的简便方法是根据你的要求修改已经存在的jnlp文件。
在后面相关部分将会谈到jnlp文件的语法与格式。

3、确保应用程序能够通过web服务器进行访问
确保你的应用程序的jar文件和jnlp文件能够用jnlp文件中列出的url进行访问。

4、在网页上建立一个指向jnlp文件的超级连接。
指向jnlp文件的超级连接是一个标准的html连接。例如:
launch my application
按照第一步中的设置所述,web服务器将对所有以.jnlp为扩展名的任何文件自动返回

application/x-java-jnlp-file mime 类型。这是确保web浏览器在下载此文件的时候启动java web

start的前提条件。
还应该在网页上提供一个java web start安装程序的链接,这样将使那些还没有安装java web start

的用户能够下载和安装java web start。

对java web start是否安装的检测:
在html页面中使用javascript/vbscript可以检测java web start是否安装。示例如下:

注意这里的javascript脚本不能对gecko-based的浏览器(例如:netscape 6.x)是否安装java web

start进行检测。
insertlink方法检测java web start是否安装。如果已经安装的话,此方法输出的html将类似于:
my application
如果没有安装的话将输出:
need to install java web start
在实际使用中,这应该是指向一个下载页面的链接。

示例javascript/vbscript如下:







以上的示例脚本调用浏览器检测脚本xbdetectbrowser.js。xbdetectbrowser.js的内容如下:
/* ***** begin license block *****
* licensed under version: mpl 1.1/gpl 2.0/lgpl 2.1
* full terms at http://devedge.netscape.com/lib/js/license/mpl-tri-license.txt
*
* software distributed under the license is distributed on an "as is" basis,
* without warranty of any kind, either express or implied. see the license
* for the specific language governing rights and limitations under the
* license.
*
* the original code is netscape code.
*
* the initial developer of the original code is
* netscape corporation.
* portions created by the initial developer are copyright (c) 2001
* the initial developer. all rights reserved.
*
* contributor(s): bob clary
*
* ***** end license block ***** */

function xbdetectbrowser()
{
var oldonerror = window.onerror;
var element = null;

window.onerror = null;

// work around bug in xpcdom mozilla 0.9.1
window.savenavigator = window.navigator;

navigator.os = '';
navigator.version = parsefloat(navigator.appversion);
navigator.org = '';
navigator.family = '';

var platform;
if (typeof(window.navigator.platform) != 'undefined')
{
platform = window.navigator.platform.tolowercase();
if (platform.indexof('win') != -1)
navigator.os = 'win';
else if (platform.indexof('mac') != -1)
navigator.os = 'mac';
else if (platform.indexof('unix') != -1    platform.indexof('linux') != -1   

platform.indexof('sun') != -1)
navigator.os = 'nix';
}

var i = 0;
var ua = window.navigator.useragent.tolowercase();

if (ua.indexof('opera') != -1)
{
i = ua.indexof('opera');
navigator.family = 'opera';
navigator.org = 'opera';
navigator.version = parsefloat('0' + ua.substr(i+6), 10);
}
else if ((i = ua.indexof('msie')) != -1)
{
navigator.org = 'microsoft';
navigator.version = parsefloat('0' + ua.substr(i+5), 10);

if (navigator.version < 4)
navigator.family = 'ie3';
else
navigator.family = 'ie4'
}
else if (ua.indexof('gecko') != -1)
{
navigator.family = 'gecko';
var rvstart = ua.indexof('rv:');
var rvend = ua.indexof(')', rvstart);
var rv = ua.substring(rvstart+3, rvend);
var rvparts = rv.split('.');
var rvvalue = 0;
var exp = 1;

for (var i = 0; i < rvparts.length; i++)
{
var val = parseint(rvparts[i]);
rvvalue += val / exp;
exp *= 100;
}
navigator.version = rvvalue;

if (ua.indexof('netscape') != -1)
navigator.org = 'netscape';
else if (ua.indexof('compuserve') != -1)
navigator.org = 'compuserve';
else
navigator.org = 'mozilla';
}
else if ((ua.indexof('mozilla') !=-1) && (ua.indexof('spoofer')==-1) &&

(ua.indexof('compatible') == -1) && (ua.indexof('opera')==-1)&&

(ua.indexof('webtv')==-1) && (ua.indexof('hotjava')==-1))
{
var is_major = parsefloat(navigator.appversion);

if (is_major < 4)
navigator.version = is_major;
else
{
i = ua.lastindexof('/')
navigator.version = parsefloat('0' + ua.substr(i+1), 10);
}
navigator.org = 'netscape';
navigator.family = 'nn' + parseint(navigator.appversion);
}
else if ((i = ua.indexof('aol')) != -1 )
{
// aol
navigator.family = 'aol';
navigator.org = 'aol';
navigator.version = parsefloat('0' + ua.substr(i+4), 10);
}
else if ((i = ua.indexof('hotjava')) != -1 )
{
// hotjava
navigator.family = 'hotjava';
navigator.org = 'sun';
navigator.version = parsefloat(navigator.appversion);
}

window.onerror = oldonerror;
}

xbdetectbrowser();

ps:我只是提供以上的文章供大家参考,希望对大家有帮助,有共同爱好的朋友到www.redsec.org的论坛与我联系

扫描关注微信公众号