浏览器客户端js中调用java代码 通过applet_浏览器客户端js中调用java代码 通过applet...

上一篇是直接在客户端调用服务器端的方法,不过其实可以直接在客户端调用java代码。以前写过一篇用javascript编写swing程序,不过这种方式是需要java的脚本引擎。在浏览器中也可以使用js来调用java,不过需要借助applet,applet可以直接调用js代码,js也可以直接调用applet代码,只要在applet中实现一个例实例化的接口或直接把实例化后的类返回给js,这样在js中就可以调用java代码。下面开始测试代码。

ScriptEngine.java

import javax.swing.JApplet;

import javax.swing.JOptionPane;

public class ScriptEngine extends JApplet{

public void init() {

}

public Object classInstance(String name){

try{

Class cls = Class.forName(name);

Object obj = cls.newInstance();

return obj;

}

catch(Exception e){

e.printStackTrace();

return null;

}

}

public void showMessage(String ale){

JOptionPane.showMessageDialog(null, ale);

}

public void destroy(){

}

}

测试被调用的代码

MD5.java

import java.security.MessageDigest;

public class MD5 {

public final static String Md5(String s) {

char hexDigits[] = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",

"a", "b", "c", "d", "e", "f" };

try {

byte[] strTemp = s.getBytes();

MessageDigest mdTemp = MessageDigest.getInstance("MD5");

mdTemp.update(strTemp);

byte[] md = mdTemp.digest();

int j = md.length;

char str[] = new char[j * 2];

int k = 0;

for (int i = 0; i 

byte byte0 = md[i];

str[k++] = hexDigits[byte0 >>> 4 & 0xf];

str[k++] = hexDigits[byte0 & 0xf];

}

return new String(str);

} catch (Exception e) {

return null;

}

}

}

测试页面

test.jsp

html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

Insert title here

//直接调用MD5加密类

function md5(){

var md5 = engine.classInstance("com.agent.util.MD5");

alert(md5.Md5("这是MD5测试!"));

}

//直接调用Applet方法

function AppletMessage(){

engine.showMessage("这是测试数据,AppletMessage!");

}

//直接调用swing组件

function initJOptionPane(){

var file = engine.classInstance("javax.swing.JOptionPane");

file.showMessageDialog(null, "这是直接在js中调用java代码方法!", "测试确认窗口",2);

}

运行效果:

使用这方法,可以非常方便的调用java类,我们可以把一些js不方便操作的东西,直接放在applet里面给客户端调用.但如果调用一些涉及系统安全的功能,jar需要签名才有足够权限。

不过这方法最大的不足是需要客户端jre的支持,使用范围有限制,只适合一些企业内部使用的系统。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值